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

Commit 09ab84ba authored by James Kung's avatar James Kung Committed by Android (Google) Code Review
Browse files

Merge "Integrating time zone picker into settings" into ics-ub-calendar-cream

parents fb04e35d 974343a4
Loading
Loading
Loading
Loading
+0 −181
Original line number Diff line number Diff line
@@ -136,188 +136,7 @@
        <item>"2"</item>
    </string-array>

    <!-- Choices for timezones, must be kept in sync with timezone_values. This
         list was taken from packages/apps/Settings/res/xml/timezones.xml
         sed -e 's/^.*">/        <item>"/;s,</.*$,"</item>,' packages/apps/Settings/res/xml/timezones.xml
         [CHAR LIMIT=25] -->
    <string-array name="timezone_labels">
        <item>"Marshall Islands"</item>
        <item>"Midway Island"</item>
        <item>"Hawaii"</item>
        <item>"Alaska"</item>
        <item>"Pacific Time"</item>
        <item>"Tijuana"</item>
        <item>"Arizona"</item>
        <item>"Chihuahua"</item>
        <item>"Mountain Time"</item>
        <item>"Central America"</item>
        <item>"Central Time"</item>
        <item>"Mexico City"</item>
        <item>"Saskatchewan"</item>
        <item>"Bogota"</item>
        <item>"Eastern Time"</item>
        <item>"Venezuela"</item>
        <item>"Atlantic Time (Barbados)"</item>
        <item>"Atlantic Time (Canada)"</item>
        <item>"Manaus"</item>
        <item>"Santiago"</item>
        <item>"Newfoundland"</item>
        <item>"Brasilia Time (Recife)"</item>
        <item>"Brasilia Time (Sao Paulo)"</item>
        <item>"Buenos Aires"</item>
        <item>"Greenland"</item>
        <item>"Montevideo"</item>
        <item>"Mid-Atlantic"</item>
        <item>"Azores"</item>
        <item>"Cape Verde Islands"</item>
        <item>"Casablanca"</item>
        <item>"London, Dublin"</item>
        <item>"Amsterdam, Berlin"</item>
        <item>"Belgrade"</item>
        <item>"Brussels"</item>
        <item>"Sarajevo"</item>
        <item>"Windhoek"</item>
        <item>"W. Africa Time"</item>
        <item>"Amman, Jordan"</item>
        <item>"Athens, Istanbul"</item>
        <item>"Beirut, Lebanon"</item>
        <item>"Cairo"</item>
        <item>"Helsinki"</item>
        <item>"Jerusalem"</item>
        <item>"Minsk"</item>
        <item>"Harare"</item>
        <item>"Baghdad"</item>
        <item>"Moscow"</item>
        <item>"Kuwait"</item>
        <item>"Nairobi"</item>
        <item>"Tehran"</item>
        <item>"Baku"</item>
        <item>"Tbilisi"</item>
        <item>"Yerevan"</item>
        <item>"Dubai"</item>
        <item>"Kabul"</item>
        <item>"Islamabad, Karachi"</item>
        <item>"Ural'sk"</item>
        <item>"Yekaterinburg"</item>
        <item>"Kolkata"</item>
        <item>"Sri Lanka"</item>
        <item>"Kathmandu"</item>
        <item>"Astana"</item>
        <item>"Yangon"</item>
        <item>"Krasnoyarsk"</item>
        <item>"Bangkok"</item>
        <item>"Beijing"</item>
        <item>"Hong Kong"</item>
        <item>"Irkutsk"</item>
        <item>"Kuala Lumpur"</item>
        <item>"Perth"</item>
        <item>"Taipei"</item>
        <item>"Seoul"</item>
        <item>"Tokyo, Osaka"</item>
        <item>"Yakutsk"</item>
        <item>"Adelaide"</item>
        <item>"Darwin"</item>
        <item>"Brisbane"</item>
        <item>"Hobart"</item>
        <item>"Sydney, Canberra"</item>
        <item>"Vladivostok"</item>
        <item>"Guam"</item>
        <item>"Magadan"</item>
        <item>"Auckland"</item>
        <item>"Fiji"</item>
        <item>"Tonga"</item>
    </string-array>

    <!-- Choices for timezones, must be kept in sync with timezone_values. This
         list was taken from packages/apps/Settings/res/xml/timezones.xml
         sed -e 's/^.*=/        <item>/;s,">.*$,"</item>,' packages/apps/Settings/res/xml/timezones.xml -->
    <string-array name="timezone_values" translatable="false">
        <item>"Pacific/Majuro"</item>
        <item>"Pacific/Midway"</item>
        <item>"Pacific/Honolulu"</item>
        <item>"America/Anchorage"</item>
        <item>"America/Los_Angeles"</item>
        <item>"America/Tijuana"</item>
        <item>"America/Phoenix"</item>
        <item>"America/Chihuahua"</item>
        <item>"America/Denver"</item>
        <item>"America/Costa_Rica"</item>
        <item>"America/Chicago"</item>
        <item>"America/Mexico_City"</item>
        <item>"America/Regina"</item>
        <item>"America/Bogota"</item>
        <item>"America/New_York"</item>
        <item>"America/Caracas"</item>
        <item>"America/Barbados"</item>
        <item>"America/Halifax"</item>
        <item>"America/Manaus"</item>
        <item>"America/Santiago"</item>
        <item>"America/St_Johns"</item>
        <item>"America/Recife"</item>
        <item>"America/Sao_Paulo"</item>
        <item>"America/Argentina/Buenos_Aires"</item>
        <item>"America/Godthab"</item>
        <item>"America/Montevideo"</item>
        <item>"Atlantic/South_Georgia"</item>
        <item>"Atlantic/Azores"</item>
        <item>"Atlantic/Cape_Verde"</item>
        <item>"Africa/Casablanca"</item>
        <item>"Europe/London"</item>
        <item>"Europe/Amsterdam"</item>
        <item>"Europe/Belgrade"</item>
        <item>"Europe/Brussels"</item>
        <item>"Europe/Sarajevo"</item>
        <item>"Africa/Windhoek"</item>
        <item>"Africa/Brazzaville"</item>
        <item>"Asia/Amman"</item>
        <item>"Europe/Athens"</item>
        <item>"Asia/Beirut"</item>
        <item>"Africa/Cairo"</item>
        <item>"Europe/Helsinki"</item>
        <item>"Asia/Jerusalem"</item>
        <item>"Europe/Minsk"</item>
        <item>"Africa/Harare"</item>
        <item>"Asia/Baghdad"</item>
        <item>"Europe/Moscow"</item>
        <item>"Asia/Kuwait"</item>
        <item>"Africa/Nairobi"</item>
        <item>"Asia/Tehran"</item>
        <item>"Asia/Baku"</item>
        <item>"Asia/Tbilisi"</item>
        <item>"Asia/Yerevan"</item>
        <item>"Asia/Dubai"</item>
        <item>"Asia/Kabul"</item>
        <item>"Asia/Karachi"</item>
        <item>"Asia/Oral"</item>
        <item>"Asia/Yekaterinburg"</item>
        <item>"Asia/Calcutta"</item>
        <item>"Asia/Colombo"</item>
        <item>"Asia/Katmandu"</item>
        <item>"Asia/Almaty"</item>
        <item>"Asia/Rangoon"</item>
        <item>"Asia/Krasnoyarsk"</item>
        <item>"Asia/Bangkok"</item>
        <item>"Asia/Shanghai"</item>
        <item>"Asia/Hong_Kong"</item>
        <item>"Asia/Irkutsk"</item>
        <item>"Asia/Kuala_Lumpur"</item>
        <item>"Australia/Perth"</item>
        <item>"Asia/Taipei"</item>
        <item>"Asia/Seoul"</item>
        <item>"Asia/Tokyo"</item>
        <item>"Asia/Yakutsk"</item>
        <item>"Australia/Adelaide"</item>
        <item>"Australia/Darwin"</item>
        <item>"Australia/Brisbane"</item>
        <item>"Australia/Hobart"</item>
        <item>"Australia/Sydney"</item>
        <item>"Asia/Vladivostok"</item>
        <item>"Pacific/Guam"</item>
        <item>"Asia/Magadan"</item>
        <item>"Pacific/Auckland"</item>
        <item>"Pacific/Fiji"</item>
        <item>"Pacific/Tongatapu"</item>
    </string-array>

    <string-array name="availability">
        <item>Busy</item>
+2 −5
Original line number Diff line number Diff line
@@ -36,14 +36,11 @@
            android:defaultValue="false"
            android:title="@string/preferences_use_home_tz_title"
            android:summary="@string/preferences_use_home_tz_descrip" />
        <ListPreference
        <Preference
            android:key="preferences_home_tz"
            android:dependency="preferences_home_tz_enabled"
            android:defaultValue="@string/preferences_home_tz_default"
            android:title="@string/preferences_home_tz_title"
            android:entries="@array/timezone_labels"
            android:entryValues="@array/timezone_values"
            android:dialogTitle="@string/preferences_home_tz_title" />
            android:title="@string/preferences_home_tz_title" />
        <PreferenceScreen
            android:key="preferences_clear_search_history"
            android:title="@string/preferences_clear_search_history_title"
+58 −24
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.calendar;

import android.app.Activity;
import android.app.FragmentManager;
import android.app.backup.BackupManager;
import android.content.Context;
import android.content.Intent;
@@ -31,6 +32,7 @@ import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
import android.preference.PreferenceManager;
@@ -43,13 +45,19 @@ import android.text.TextUtils;
import android.widget.Toast;

import com.android.calendar.alerts.AlertReceiver;
import com.android.timezonepicker.TimeZoneInfo;
import com.android.timezonepicker.TimeZonePickerDialog;
import com.android.timezonepicker.TimeZonePickerDialog.OnTimeZoneSetListener;
import com.android.timezonepicker.TimeZonePickerUtils;

public class GeneralPreferences extends PreferenceFragment implements
        OnSharedPreferenceChangeListener, OnPreferenceChangeListener {
        OnSharedPreferenceChangeListener, OnPreferenceChangeListener, OnTimeZoneSetListener {
    // The name of the shared preferences file. This name must be maintained for historical
    // reasons, as it's what PreferenceManager assigned the first time the file was created.
    static final String SHARED_PREFS_NAME = "com.android.calendar_preferences";

    private static final String FRAG_TAG_TIME_ZONE_PICKER = "TimeZonePicker";

    // Preference keys
    public static final String KEY_HIDE_DECLINED = "preferences_hide_declined";
    public static final String KEY_WEEK_START_DAY = "preferences_week_start_day";
@@ -109,12 +117,10 @@ public class GeneralPreferences extends PreferenceFragment implements
    CheckBoxPreference mPopup;
    CheckBoxPreference mUseHomeTZ;
    CheckBoxPreference mHideDeclined;
    ListPreference mHomeTZ;
    Preference mHomeTZ;
    ListPreference mWeekStart;
    ListPreference mDefaultReminder;

    private static CharSequence[][] mTimezones;

    /** Return a properly configured SharedPreferences instance */
    public static SharedPreferences getSharedPreferences(Context context) {
        return context.getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE);
@@ -163,29 +169,56 @@ public class GeneralPreferences extends PreferenceFragment implements
        mHideDeclined = (CheckBoxPreference) preferenceScreen.findPreference(KEY_HIDE_DECLINED);
        mWeekStart = (ListPreference) preferenceScreen.findPreference(KEY_WEEK_START_DAY);
        mDefaultReminder = (ListPreference) preferenceScreen.findPreference(KEY_DEFAULT_REMINDER);
        mHomeTZ = (ListPreference) preferenceScreen.findPreference(KEY_HOME_TZ);
        String tz = mHomeTZ.getValue();

        mHomeTZ = preferenceScreen.findPreference(KEY_HOME_TZ);
        mWeekStart.setSummary(mWeekStart.getEntry());
        mDefaultReminder.setSummary(mDefaultReminder.getEntry());

        if (mTimezones == null) {
            mTimezones = (new TimezoneAdapter(activity, tz, System.currentTimeMillis()))
                    .getAllTimezones();
        String timezone = Utils.getTimeZone(activity, null);
        mHomeTZ.setOnPreferenceClickListener(new OnPreferenceClickListener() {
            @Override
            public boolean onPreferenceClick(Preference preference) {
                showTimezoneDialog();
                return true;
            }
        mHomeTZ.setEntryValues(mTimezones[0]);
        mHomeTZ.setEntries(mTimezones[1]);
        CharSequence tzName = mHomeTZ.getEntry();
        if (TextUtils.isEmpty(tzName)) {
            tzName = Utils.getTimeZone(activity, null);
        });

        String timezoneName = TimeZonePickerUtils.getGmtDisplayName(timezone,
                System.currentTimeMillis());
        mHomeTZ.setSummary(timezoneName != null ? timezoneName : timezone);

        TimeZonePickerDialog tzpd = (TimeZonePickerDialog) activity.getFragmentManager()
                .findFragmentByTag(FRAG_TAG_TIME_ZONE_PICKER);
        if (tzpd != null) {
            tzpd.setOnTimeZoneSetListener(this);
        }
        mHomeTZ.setSummary(tzName);

        migrateOldPreferences(sharedPreferences);

        updateChildPreferences();
    }

    private void showTimezoneDialog() {
        final Activity activity = getActivity();
        if (activity == null) {
            return;
        }

        Bundle b = new Bundle();
        b.putLong(TimeZonePickerDialog.BUNDLE_START_TIME_MILLIS, System.currentTimeMillis());
        b.putString(TimeZonePickerDialog.BUNDLE_TIME_ZONE, Utils.getTimeZone(activity, null));

        FragmentManager fm = getActivity().getFragmentManager();
        TimeZonePickerDialog tzpd = (TimeZonePickerDialog) fm
                .findFragmentByTag(FRAG_TAG_TIME_ZONE_PICKER);
        if (tzpd != null) {
            tzpd.dismiss();
        }
        tzpd = new TimeZonePickerDialog();
        tzpd.setArguments(b);
        tzpd.setOnTimeZoneSetListener(this);
        tzpd.show(fm, FRAG_TAG_TIME_ZONE_PICKER);
    }

    @Override
    public void onStart() {
        super.onStart();
@@ -245,7 +278,7 @@ public class GeneralPreferences extends PreferenceFragment implements
        String tz;
        if (preference == mUseHomeTZ) {
            if ((Boolean)newValue) {
                tz = mHomeTZ.getValue();
                tz = mHomeTZ.getSummary().toString();
            } else {
                tz = CalendarCache.TIMEZONE_TYPE_AUTO;
            }
@@ -258,12 +291,6 @@ public class GeneralPreferences extends PreferenceFragment implements
            intent.setDataAndType(CalendarContract.CONTENT_URI, Utils.APPWIDGET_DATA_TYPE);
            act.sendBroadcast(intent);
            return true;
        } else if (preference == mHomeTZ) {
            tz = (String) newValue;
            // We set the value here so we can read back the entry
            mHomeTZ.setValue(tz);
            mHomeTZ.setSummary(mHomeTZ.getEntry());
            Utils.setTimeZone(getActivity(), tz);
        } else if (preference == mWeekStart) {
            mWeekStart.setValue((String) newValue);
            mWeekStart.setSummary(mWeekStart.getEntry());
@@ -363,4 +390,11 @@ public class GeneralPreferences extends PreferenceFragment implements
        }
    }

    @Override
    public void onTimeZoneSet(TimeZoneInfo tzi) {
        final String timezoneName = TimeZonePickerUtils.getGmtDisplayName(tzi.mTzId,
                System.currentTimeMillis());
        mHomeTZ.setSummary(timezoneName);
        Utils.setTimeZone(getActivity(), tzi.mTzId);
    }
}
+0 −433

File deleted.

Preview size limit exceeded, changes collapsed.

+2 −37
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ import com.android.ex.chips.ChipsUtil;
import com.android.ex.chips.RecipientEditTextView;
import com.android.timezonepicker.TimeZoneInfo;
import com.android.timezonepicker.TimeZonePickerDialog;
import com.android.timezonepicker.TimeZonePickerUtils;

import java.util.ArrayList;
import java.util.Arrays;
@@ -408,48 +409,12 @@ public class EditEventView implements View.OnClickListener, DialogInterface.OnCa
    }

    private void populateTimezone(long eventStartTime) {
        TimeZone tz = TimeZone.getTimeZone(mTimezone);
        String displayName = buildGmtDisplayName(tz, eventStartTime);
        String displayName = TimeZonePickerUtils.getGmtDisplayName(mTimezone, eventStartTime);

        mTimezoneTextView.setText(displayName);
        mTimezoneButton.setText(displayName);
    }

    public String buildGmtDisplayName(TimeZone tz, long timeMillis) {
        StringBuilder sb = new StringBuilder();
        sb.append("(GMT");

        final int gmtOffset = tz.getOffset(timeMillis);
        if (gmtOffset < 0) {
            sb.append('-');
        } else {
            sb.append('+');
        }

        final int p = Math.abs(gmtOffset);
        sb.append(p / DateUtils.HOUR_IN_MILLIS); // Hour

        final int min = (p / 60000) % 60;
        if (min != 0) { // Show minutes if non-zero
            sb.append(':');
            if (min < 10) {
                sb.append('0');
            }
            sb.append(min);
        }
        sb.append(") ");

        // tz.inDaylightTime(new Date(timeMillis))
        String displayName = tz.getDisplayName(mStartTime.isDst != 0, TimeZone.LONG,
                Locale.getDefault());
        sb.append(displayName);

        if (tz.useDaylightTime()) {
            sb.append(" \u2600"); // Sun symbol
        }
        return sb.toString();
    }

    private void showTimezoneDialog() {
        Bundle b = new Bundle();
        b.putLong(TimeZonePickerDialog.BUNDLE_START_TIME_MILLIS, mStartTime.toMillis(false));