Loading src/com/android/deskclock/ClockFragment.java +2 −22 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import java.util.Arrays; import java.util.Calendar; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.TimeZone; Loading Loading @@ -243,22 +242,12 @@ public class ClockFragment extends DeskClockFragment implements OnSharedPreferen LayoutInflater mInflater; @SuppressWarnings("hiding") Context mContext; HashMap<String, CityObj> mCitiesDb = new HashMap<String, CityObj>(); public WorldClockAdapter(Context context) { super(); mContext = context; loadData(context); mInflater = LayoutInflater.from(context); // Read the cities DB so that the names and timezones will be taken from the DB // and not from the selected list so that change of locale or changes in the DB will // be reflected. CityObj [] cities = Utils.loadCitiesDataBase(context); if (cities != null) { for (int i = 0; i < cities.length; i ++) { mCitiesDb.put(cities[i].mCityId, cities [i]); } } } public void reloadData(Context context) { Loading Loading @@ -426,20 +415,11 @@ public class ClockFragment extends DeskClockFragment implements OnSharedPreferen aclock.setVisibility(View.GONE); dclock.setTimeZone(cityObj.mTimeZone); } CityObj cityInDb = mCitiesDb.get(cityObj.mCityId); // Home city or city not in DB , use data from the save selected cities list if (cityObj.mCityId == null || cityInDb == null) { name.setText(cityObj.mCityName); } else { name.setText(cityInDb.mCityName); } final Calendar now = Calendar.getInstance(); now.setTimeZone(TimeZone.getDefault()); int myDayOfWeek = now.get(Calendar.DAY_OF_WEEK); // Get timezone from cities DB if available String cityTZ = (cityInDb != null) ? cityInDb.mTimeZone:cityObj.mTimeZone; now.setTimeZone(TimeZone.getTimeZone(cityTZ)); now.setTimeZone(TimeZone.getTimeZone(cityObj.mTimeZone)); int cityDayOfWeek = now.get(Calendar.DAY_OF_WEEK); if (myDayOfWeek != cityDayOfWeek) { dayOfWeek.setText(getString(R.string.world_day_of_week_label, now.getDisplayName( Loading src/com/android/deskclock/Utils.java +0 −31 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PorterDuff; Loading @@ -45,12 +44,8 @@ import android.widget.TextView; import com.android.deskclock.stopwatch.Stopwatches; import com.android.deskclock.timer.Timers; import com.android.deskclock.worldclock.CityObj; import java.text.Collator; import java.util.Arrays; import java.util.Calendar; import java.util.Comparator; import java.util.Locale; Loading Loading @@ -387,30 +382,4 @@ public class Utils { } } public static CityObj[] loadCitiesDataBase(Context c) { final Collator collator = Collator.getInstance(); 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"); return null; } 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) { Comparator<CityObj> mCollator; return collator.compare(c1.mCityName, c2.mCityName); } }); return tempList; } } src/com/android/deskclock/worldclock/Cities.java +26 −24 Original line number Diff line number Diff line Loading @@ -25,8 +25,10 @@ import java.util.Iterator; public class Cities { private static final String NUMBER_OF_CITIES = "number_of_cities"; public static void saveCitiesToSharedPrefs( SharedPreferences prefs, HashMap<String, CityObj> cities) { SharedPreferences.Editor editor = prefs.edit(); Loading src/com/android/deskclock/worldclock/CitiesActivity.java +27 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ 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; Loading @@ -39,13 +40,16 @@ 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; Loading @@ -64,6 +68,8 @@ 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. Loading Loading @@ -151,7 +157,27 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, } private void loadCitiesDataBase(Context c) { CityObj[] tempList = Utils.loadCitiesDataBase(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"); 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> (); Loading Loading
src/com/android/deskclock/ClockFragment.java +2 −22 Original line number Diff line number Diff line Loading @@ -50,7 +50,6 @@ import java.util.Arrays; import java.util.Calendar; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.TimeZone; Loading Loading @@ -243,22 +242,12 @@ public class ClockFragment extends DeskClockFragment implements OnSharedPreferen LayoutInflater mInflater; @SuppressWarnings("hiding") Context mContext; HashMap<String, CityObj> mCitiesDb = new HashMap<String, CityObj>(); public WorldClockAdapter(Context context) { super(); mContext = context; loadData(context); mInflater = LayoutInflater.from(context); // Read the cities DB so that the names and timezones will be taken from the DB // and not from the selected list so that change of locale or changes in the DB will // be reflected. CityObj [] cities = Utils.loadCitiesDataBase(context); if (cities != null) { for (int i = 0; i < cities.length; i ++) { mCitiesDb.put(cities[i].mCityId, cities [i]); } } } public void reloadData(Context context) { Loading Loading @@ -426,20 +415,11 @@ public class ClockFragment extends DeskClockFragment implements OnSharedPreferen aclock.setVisibility(View.GONE); dclock.setTimeZone(cityObj.mTimeZone); } CityObj cityInDb = mCitiesDb.get(cityObj.mCityId); // Home city or city not in DB , use data from the save selected cities list if (cityObj.mCityId == null || cityInDb == null) { name.setText(cityObj.mCityName); } else { name.setText(cityInDb.mCityName); } final Calendar now = Calendar.getInstance(); now.setTimeZone(TimeZone.getDefault()); int myDayOfWeek = now.get(Calendar.DAY_OF_WEEK); // Get timezone from cities DB if available String cityTZ = (cityInDb != null) ? cityInDb.mTimeZone:cityObj.mTimeZone; now.setTimeZone(TimeZone.getTimeZone(cityTZ)); now.setTimeZone(TimeZone.getTimeZone(cityObj.mTimeZone)); int cityDayOfWeek = now.get(Calendar.DAY_OF_WEEK); if (myDayOfWeek != cityDayOfWeek) { dayOfWeek.setText(getString(R.string.world_day_of_week_label, now.getDisplayName( Loading
src/com/android/deskclock/Utils.java +0 −31 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; import android.graphics.Color; import android.graphics.Paint; import android.graphics.PorterDuff; Loading @@ -45,12 +44,8 @@ import android.widget.TextView; import com.android.deskclock.stopwatch.Stopwatches; import com.android.deskclock.timer.Timers; import com.android.deskclock.worldclock.CityObj; import java.text.Collator; import java.util.Arrays; import java.util.Calendar; import java.util.Comparator; import java.util.Locale; Loading Loading @@ -387,30 +382,4 @@ public class Utils { } } public static CityObj[] loadCitiesDataBase(Context c) { final Collator collator = Collator.getInstance(); 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"); return null; } 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) { Comparator<CityObj> mCollator; return collator.compare(c1.mCityName, c2.mCityName); } }); return tempList; } }
src/com/android/deskclock/worldclock/Cities.java +26 −24 Original line number Diff line number Diff line Loading @@ -25,8 +25,10 @@ import java.util.Iterator; public class Cities { private static final String NUMBER_OF_CITIES = "number_of_cities"; public static void saveCitiesToSharedPrefs( SharedPreferences prefs, HashMap<String, CityObj> cities) { SharedPreferences.Editor editor = prefs.edit(); Loading
src/com/android/deskclock/worldclock/CitiesActivity.java +27 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ 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; Loading @@ -39,13 +40,16 @@ 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; Loading @@ -64,6 +68,8 @@ 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. Loading Loading @@ -151,7 +157,27 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener, } private void loadCitiesDataBase(Context c) { CityObj[] tempList = Utils.loadCitiesDataBase(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"); 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> (); Loading