summaryrefslogtreecommitdiffstats
path: root/src/com/android/deskclock/worldclock/CitiesActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/deskclock/worldclock/CitiesActivity.java')
-rw-r--r--src/com/android/deskclock/worldclock/CitiesActivity.java54
1 files changed, 17 insertions, 37 deletions
diff --git a/src/com/android/deskclock/worldclock/CitiesActivity.java b/src/com/android/deskclock/worldclock/CitiesActivity.java
index ffabc76fb..02423b5a1 100644
--- a/src/com/android/deskclock/worldclock/CitiesActivity.java
+++ b/src/com/android/deskclock/worldclock/CitiesActivity.java
@@ -21,7 +21,6 @@ import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
-import android.content.res.Resources;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.format.DateFormat;
@@ -40,16 +39,13 @@ import android.widget.TextView;
import com.android.deskclock.Alarms;
import com.android.deskclock.DeskClock;
-import com.android.deskclock.Log;
import com.android.deskclock.R;
import com.android.deskclock.SettingsActivity;
import com.android.deskclock.Utils;
import java.text.Collator;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Calendar;
-import java.util.Comparator;
import java.util.HashMap;
import java.util.TimeZone;
@@ -68,8 +64,6 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener,
private CityAdapter mAdapter;
private HashMap<String, CityObj> mUserSelectedCities;
private Calendar mCalendar;
- private final Collator mCollator = Collator.getInstance();
-
/***
* Adapter for a list of cities with the respected time zone.
@@ -98,12 +92,12 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener,
@Override
public int getCount() {
- return mAllTheCitiesList.length;
+ return (mAllTheCitiesList != null) ? mAllTheCitiesList.length : 0;
}
@Override
public Object getItem(int p) {
- if (p >=0 && p < mAllTheCitiesList.length) {
+ if (mAllTheCitiesList != null && p >=0 && p < mAllTheCitiesList.length) {
return mAllTheCitiesList [p];
}
return null;
@@ -116,12 +110,12 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener,
@Override
public boolean isEnabled(int p) {
- return ((CityObj)mAllTheCitiesList[p]).mCityId != null;
+ return mAllTheCitiesList != null && ((CityObj)mAllTheCitiesList[p]).mCityId != null;
}
@Override
public View getView(int position, View view, ViewGroup parent) {
- if (position < 0 || position >= mAllTheCitiesList.length) {
+ if (mAllTheCitiesList == null || position < 0 || position >= mAllTheCitiesList.length) {
return null;
}
CityObj c = (CityObj)mAllTheCitiesList [position];
@@ -157,27 +151,10 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener,
}
private void loadCitiesDataBase(Context c) {
- Resources r = c.getResources();
- // Read strings array of name,timezone, id
- // make sure the list are the same length
- String [] cities = r.getStringArray(R.array.cities_names);
- String [] timezones = r.getStringArray(R.array.cities_tz);
- String [] ids = r.getStringArray(R.array.cities_id);
- if (cities.length != timezones.length || ids.length != cities.length) {
- Log.wtf("City lists sizes are not the same, cannot use the data");
+ CityObj[] tempList = Utils.loadCitiesDataBase(c);
+ if (tempList == null) {
return;
- }
- CityObj[] tempList = new CityObj [cities.length];
- for (int i = 0; i < cities.length; i++) {
- tempList[i] = new CityObj(cities[i], timezones[i], ids[i]);
- }
- // Sort alphabetically
- Arrays.sort(tempList, new Comparator<CityObj> () {
- @Override
- public int compare(CityObj c1, CityObj c2) {
- return mCollator.compare(c1.mCityName, c2.mCityName);
- }
- });
+ }
//Create section indexer and add headers to the cities list
String val = null;
ArrayList<String> sections = new ArrayList<String> ();
@@ -207,18 +184,21 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener,
@Override
public int getPositionForSection(int section) {
- return (Integer) mSectionPositions[section];
+ return (mSectionPositions != null) ? (Integer) mSectionPositions[section] : 0;
}
@Override
public int getSectionForPosition(int p) {
- for (int i = 0; i < mSectionPositions.length - 1; i++) {
- if (p >= (Integer)mSectionPositions[i] && p < (Integer)mSectionPositions[i + 1]) {
- return i;
+ if (mSectionPositions != null) {
+ for (int i = 0; i < mSectionPositions.length - 1; i++) {
+ if (p >= (Integer) mSectionPositions[i]
+ && p < (Integer) mSectionPositions[i + 1]) {
+ return i;
+ }
+ }
+ if (p >= (Integer)mSectionPositions[mSectionPositions.length - 1]) {
+ return mSectionPositions.length - 1;
}
- }
- if (p >= (Integer)mSectionPositions[mSectionPositions.length - 1]) {
- return mSectionPositions.length - 1;
}
return 0;
}