1ca4786769151f97069980443ce43d9c4f867ac5bErik/*
2ca4786769151f97069980443ce43d9c4f867ac5bErik * Copyright (C) 2011 The Android Open Source Project
3ca4786769151f97069980443ce43d9c4f867ac5bErik *
4ca4786769151f97069980443ce43d9c4f867ac5bErik * Licensed under the Apache License, Version 2.0 (the "License");
5ca4786769151f97069980443ce43d9c4f867ac5bErik * you may not use this file except in compliance with the License.
6ca4786769151f97069980443ce43d9c4f867ac5bErik * You may obtain a copy of the License at
7ca4786769151f97069980443ce43d9c4f867ac5bErik *
8ca4786769151f97069980443ce43d9c4f867ac5bErik *      http://www.apache.org/licenses/LICENSE-2.0
9ca4786769151f97069980443ce43d9c4f867ac5bErik *
10ca4786769151f97069980443ce43d9c4f867ac5bErik * Unless required by applicable law or agreed to in writing, software
11ca4786769151f97069980443ce43d9c4f867ac5bErik * distributed under the License is distributed on an "AS IS" BASIS,
12ca4786769151f97069980443ce43d9c4f867ac5bErik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ca4786769151f97069980443ce43d9c4f867ac5bErik * See the License for the specific language governing permissions and
14ca4786769151f97069980443ce43d9c4f867ac5bErik * limitations under the License.
15ca4786769151f97069980443ce43d9c4f867ac5bErik */
16ca4786769151f97069980443ce43d9c4f867ac5bErik
17ca4786769151f97069980443ce43d9c4f867ac5bErikpackage com.android.calendar;
18ca4786769151f97069980443ce43d9c4f867ac5bErik
190dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzsteinimport android.app.Activity;
200dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzsteinimport android.app.Dialog;
210dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzsteinimport android.app.TimePickerDialog;
22c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chanimport android.content.ComponentName;
23c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chanimport android.content.Intent;
240dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzsteinimport android.content.SharedPreferences;
25ca4786769151f97069980443ce43d9c4f867ac5bErikimport android.os.Bundle;
260dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzsteinimport android.preference.CheckBoxPreference;
271bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzsteinimport android.preference.ListPreference;
28c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chanimport android.preference.Preference;
291bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzsteinimport android.preference.Preference.OnPreferenceChangeListener;
30ca4786769151f97069980443ce43d9c4f867ac5bErikimport android.preference.PreferenceFragment;
310dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzsteinimport android.preference.PreferenceManager;
32c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chanimport android.preference.PreferenceScreen;
330dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzsteinimport android.text.format.DateFormat;
340dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzsteinimport android.text.format.Time;
350dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzsteinimport android.util.Log;
360dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzsteinimport android.widget.TimePicker;
37ca4786769151f97069980443ce43d9c4f867ac5bErik
381bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzsteinpublic class OtherPreferences extends PreferenceFragment  implements OnPreferenceChangeListener{
390dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private static final String TAG = "CalendarOtherPreferences";
400dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
41ca4786769151f97069980443ce43d9c4f867ac5bErik    // The name of the shared preferences file. This name must be maintained for
42ca4786769151f97069980443ce43d9c4f867ac5bErik    // historical reasons, as it's what PreferenceManager assigned the first
43ca4786769151f97069980443ce43d9c4f867ac5bErik    // time the file was created.
44ca4786769151f97069980443ce43d9c4f867ac5bErik    static final String SHARED_PREFS_NAME = "com.android.calendar_preferences";
45ca4786769151f97069980443ce43d9c4f867ac5bErik
460dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    // Must be the same keys that are used in the other_preferences.xml file.
470dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    public static final String KEY_OTHER_COPY_DB = "preferences_copy_db";
481bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein    public static final String KEY_OTHER_QUIET_HOURS = "preferences_reminders_quiet_hours";
491bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein    public static final String KEY_OTHER_REMINDERS_RESPONDED = "preferences_reminders_responded";
500dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    public static final String KEY_OTHER_QUIET_HOURS_START =
510dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            "preferences_reminders_quiet_hours_start";
520dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    public static final String KEY_OTHER_QUIET_HOURS_START_HOUR =
530dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            "preferences_reminders_quiet_hours_start_hour";
540dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    public static final String KEY_OTHER_QUIET_HOURS_START_MINUTE =
550dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            "preferences_reminders_quiet_hours_start_minute";
560dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    public static final String KEY_OTHER_QUIET_HOURS_END =
570dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            "preferences_reminders_quiet_hours_end";
580dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    public static final String KEY_OTHER_QUIET_HOURS_END_HOUR =
590dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            "preferences_reminders_quiet_hours_end_hour";
600dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    public static final String KEY_OTHER_QUIET_HOURS_END_MINUTE =
610dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            "preferences_reminders_quiet_hours_end_minute";
62ca4786769151f97069980443ce43d9c4f867ac5bErik    public static final String KEY_OTHER_1 = "preferences_tardis_1";
630dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
640dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    public static final int QUIET_HOURS_DEFAULT_START_HOUR = 22;
650dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    public static final int QUIET_HOURS_DEFAULT_START_MINUTE = 0;
660dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    public static final int QUIET_HOURS_DEFAULT_END_HOUR = 8;
670dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    public static final int QUIET_HOURS_DEFAULT_END_MINUTE = 0;
680dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
690dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private static final int START_LISTENER = 1;
700dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private static final int END_LISTENER = 2;
710dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private static final String format24Hour = "%H:%M";
720dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private static final String format12Hour = "%I:%M%P";
73ca4786769151f97069980443ce43d9c4f867ac5bErik
74c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan    private Preference mCopyDb;
751bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein    private ListPreference mSkipReminders;
760dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private CheckBoxPreference mQuietHours;
770dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private Preference mQuietHoursStart;
780dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private Preference mQuietHoursEnd;
790dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
800dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private TimePickerDialog mTimePickerDialog;
810dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private TimeSetListener mQuietHoursStartListener;
820dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private TimePickerDialog mQuietHoursStartDialog;
830dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private TimeSetListener mQuietHoursEndListener;
840dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private TimePickerDialog mQuietHoursEndDialog;
850dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private boolean mIs24HourMode;
86c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan
87ca4786769151f97069980443ce43d9c4f867ac5bErik    public OtherPreferences() {
88ca4786769151f97069980443ce43d9c4f867ac5bErik    }
89ca4786769151f97069980443ce43d9c4f867ac5bErik
90ca4786769151f97069980443ce43d9c4f867ac5bErik    @Override
91ca4786769151f97069980443ce43d9c4f867ac5bErik    public void onCreate(Bundle icicle) {
92ca4786769151f97069980443ce43d9c4f867ac5bErik        super.onCreate(icicle);
930dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        PreferenceManager manager = getPreferenceManager();
940dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        manager.setSharedPreferencesName(SHARED_PREFS_NAME);
950dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        SharedPreferences prefs = manager.getSharedPreferences();
960dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
97ca4786769151f97069980443ce43d9c4f867ac5bErik        addPreferencesFromResource(R.xml.other_preferences);
980dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        mCopyDb = findPreference(KEY_OTHER_COPY_DB);
991bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein        mSkipReminders = (ListPreference) findPreference(KEY_OTHER_REMINDERS_RESPONDED);
100d64b3c86b1e9554fba73b37dc9fde3f442a99fabSam Blitzstein        String skipPreferencesValue = null;
101d64b3c86b1e9554fba73b37dc9fde3f442a99fabSam Blitzstein        if (mSkipReminders != null) {
102d64b3c86b1e9554fba73b37dc9fde3f442a99fabSam Blitzstein            skipPreferencesValue = mSkipReminders.getValue();
103d64b3c86b1e9554fba73b37dc9fde3f442a99fabSam Blitzstein            mSkipReminders.setOnPreferenceChangeListener(this);
104d64b3c86b1e9554fba73b37dc9fde3f442a99fabSam Blitzstein        }
105d64b3c86b1e9554fba73b37dc9fde3f442a99fabSam Blitzstein        updateSkipRemindersSummary(skipPreferencesValue);
1060dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
1070dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        Activity activity = getActivity();
1080dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        if (activity == null) {
1090dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            Log.d(TAG, "Activity was null");
1100dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        }
1110dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        mIs24HourMode = DateFormat.is24HourFormat(activity);
1120dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
1130dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        mQuietHours =
1140dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                (CheckBoxPreference) findPreference(KEY_OTHER_QUIET_HOURS);
1150dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
1160dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        int startHour = prefs.getInt(KEY_OTHER_QUIET_HOURS_START_HOUR,
1170dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                QUIET_HOURS_DEFAULT_START_HOUR);
1180dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        int startMinute = prefs.getInt(KEY_OTHER_QUIET_HOURS_START_MINUTE,
1190dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                QUIET_HOURS_DEFAULT_START_MINUTE);
1200dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        mQuietHoursStart = findPreference(KEY_OTHER_QUIET_HOURS_START);
1210dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        mQuietHoursStartListener = new TimeSetListener(START_LISTENER);
1220dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        mQuietHoursStartDialog = new TimePickerDialog(
1230dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                activity, mQuietHoursStartListener,
1240dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                startHour, startMinute, mIs24HourMode);
1250dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        mQuietHoursStart.setSummary(formatTime(startHour, startMinute));
1260dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
1270dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        int endHour = prefs.getInt(KEY_OTHER_QUIET_HOURS_END_HOUR,
1280dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                QUIET_HOURS_DEFAULT_END_HOUR);
1290dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        int endMinute = prefs.getInt(KEY_OTHER_QUIET_HOURS_END_MINUTE,
1300dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                QUIET_HOURS_DEFAULT_END_MINUTE);
1310dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        mQuietHoursEnd = findPreference(KEY_OTHER_QUIET_HOURS_END);
1320dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        mQuietHoursEndListener = new TimeSetListener(END_LISTENER);
1330dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        mQuietHoursEndDialog = new TimePickerDialog(
1340dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                activity, mQuietHoursEndListener,
1350dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                endHour, endMinute, mIs24HourMode);
1360dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        mQuietHoursEnd.setSummary(formatTime(endHour, endMinute));
137c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan    }
138c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan
139c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan    @Override
1401bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein    public boolean onPreferenceChange(Preference preference, Object objValue) {
1411bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein        final String key = preference.getKey();
1421bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein
1431bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein        if (KEY_OTHER_REMINDERS_RESPONDED.equals(key)) {
1441bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein            String value = String.valueOf(objValue);
1451bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein            updateSkipRemindersSummary(value);
1461bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein        }
1471bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein
1481bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein        return true;
1491bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein    }
1501bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein
1511bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein    @Override
152c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan    public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) {
153c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan        if (preference == mCopyDb) {
154c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan            Intent intent = new Intent(Intent.ACTION_MAIN);
155c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan            intent.setComponent(new ComponentName("com.android.providers.calendar",
156c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan                    "com.android.providers.calendar.CalendarDebugActivity"));
157c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan            startActivity(intent);
1580dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        } else if (preference == mQuietHoursStart) {
1590dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            if (mTimePickerDialog == null) {
1600dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                mTimePickerDialog = mQuietHoursStartDialog;
1610dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                mTimePickerDialog.show();
1620dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            } else {
1630dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                Log.v(TAG, "not null");
1640dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            }
1650dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        } else if (preference == mQuietHoursEnd) {
1660dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            if (mTimePickerDialog == null) {
1670dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                mTimePickerDialog = mQuietHoursEndDialog;
1680dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                mTimePickerDialog.show();
1690dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            } else {
1700dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                Log.v(TAG, "not null");
1710dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            }
172c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan        } else {
173c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan            return super.onPreferenceTreeClick(screen, preference);
174c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan        }
175c03aab49fe4169036e5b5d089bded31611b2b6ddMichael Chan        return true;
176ca4786769151f97069980443ce43d9c4f867ac5bErik    }
1770dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
1780dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private class TimeSetListener implements TimePickerDialog.OnTimeSetListener {
1790dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        private int mListenerId;
1800dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
1810dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        public TimeSetListener(int listenerId) {
1820dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            mListenerId = listenerId;
1830dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        }
1840dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
1850dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        @Override
1860dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
1870dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            mTimePickerDialog = null;
1880dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
1890dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            SharedPreferences prefs = getPreferenceManager().getSharedPreferences();
1900dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            SharedPreferences.Editor editor = prefs.edit();
1910dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
1920dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            String summary = formatTime(hourOfDay, minute);
1930dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            switch (mListenerId) {
1940dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                case (START_LISTENER):
1950dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                    mQuietHoursStart.setSummary(summary);
1960dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                    editor.putInt(KEY_OTHER_QUIET_HOURS_START_HOUR, hourOfDay);
1970dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                    editor.putInt(KEY_OTHER_QUIET_HOURS_START_MINUTE, minute);
1980dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                    break;
1990dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                case (END_LISTENER):
2000dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                    mQuietHoursEnd.setSummary(summary);
2010dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                    editor.putInt(KEY_OTHER_QUIET_HOURS_END_HOUR, hourOfDay);
2020dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                    editor.putInt(KEY_OTHER_QUIET_HOURS_END_MINUTE, minute);
2030dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                    break;
2040dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                default:
2050dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein                    Log.d(TAG, "Set time for unknown listener: "+mListenerId);
2060dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            }
2070dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
2080dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein            editor.commit();
2090dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        }
2100dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    }
2110dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
2120dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    /**
2130dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein     * @param hourOfDay the hour of the day (0-24)
2140dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein     * @param minute
2150dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein     * @return human-readable string formatted based on 24-hour mode.
2160dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein     */
2170dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    private String formatTime(int hourOfDay, int minute) {
2180dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        Time time = new Time();
2190dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        time.hour = hourOfDay;
2200dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        time.minute = minute;
2210dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein
2220dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        String format = mIs24HourMode? format24Hour : format12Hour;
2230dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein        return time.format(format);
2240dfbaae6a1c083f9c76ad77a9b711420968672a4Sam Blitzstein    }
2251bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein
2261bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein    /**
2271bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein     * Update the summary for the SkipReminders preference.
2281bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein     * @param value The corresponding value of which summary to set. If null, the default summary
2291bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein     * will be set, and the value will be set accordingly too.
2301bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein     */
2311bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein    private void updateSkipRemindersSummary(String value) {
2321bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein        if (mSkipReminders != null) {
2331bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein            // Default to "declined". Must match with R.array.preferences_skip_reminders_values.
2341bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein            int index = 0;
2351bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein
2361bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein            CharSequence[] values = mSkipReminders.getEntryValues();
2371bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein            CharSequence[] entries = mSkipReminders.getEntries();
2381bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein            for(int value_i = 0; value_i < values.length; value_i++) {
2391bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein                if (values[value_i].equals(value)) {
2401bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein                    index = value_i;
2411bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein                    break;
2421bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein                }
2431bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein            }
2441bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein            mSkipReminders.setSummary(entries[index].toString());
2451bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein            if (value == null) {
2461bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein                // Value was not known ahead of time, so the default value will be set.
2471bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein                mSkipReminders.setValue(values[index].toString());
2481bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein            }
2491bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein        }
2501bc7c4b149a3696dca055a3d7a45499851e55d50Sam Blitzstein    }
251d64b3c86b1e9554fba73b37dc9fde3f442a99fabSam Blitzstein}
252