Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c06f9da6 authored by Isaac Katzenelson's avatar Isaac Katzenelson Committed by Android (Google) Code Review
Browse files

Merge "Revert "Read cities names for DB and not from list"" into ics-ub-clock-amazon

parents 13968d7e 92ccd14f
Loading
Loading
Loading
Loading
+2 −22
Original line number Diff line number Diff line
@@ -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;

@@ -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) {
@@ -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(
+0 −31
Original line number Diff line number Diff line
@@ -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;
@@ -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;


@@ -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;
    }
}
+26 −24
Original line number Diff line number Diff line
@@ -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();
+27 −1
Original line number Diff line number Diff line
@@ -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;
@@ -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;

@@ -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.
@@ -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> ();