summaryrefslogtreecommitdiff
path: root/src/com/android/calendar/GeneralPreferences.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/calendar/GeneralPreferences.java')
-rw-r--r--src/com/android/calendar/GeneralPreferences.java400
1 files changed, 0 insertions, 400 deletions
diff --git a/src/com/android/calendar/GeneralPreferences.java b/src/com/android/calendar/GeneralPreferences.java
deleted file mode 100644
index a42f07e3..00000000
--- a/src/com/android/calendar/GeneralPreferences.java
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * Copyright (C) 2007 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-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;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.Editor;
-import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
-import android.media.Ringtone;
-import android.media.RingtoneManager;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Vibrator;
-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;
-import android.preference.PreferenceScreen;
-import android.preference.RingtonePreference;
-import android.provider.CalendarContract;
-import android.provider.CalendarContract.CalendarCache;
-import android.provider.SearchRecentSuggestions;
-import android.text.TextUtils;
-import android.text.format.Time;
-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, 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";
- static final String SHARED_PREFS_NAME_NO_BACKUP = "com.android.calendar_preferences_no_backup";
-
- 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";
- public static final String KEY_SHOW_WEEK_NUM = "preferences_show_week_num";
- public static final String KEY_DAYS_PER_WEEK = "preferences_days_per_week";
- public static final String KEY_SKIP_SETUP = "preferences_skip_setup";
-
- public static final String KEY_CLEAR_SEARCH_HISTORY = "preferences_clear_search_history";
-
- public static final String KEY_ALERTS_CATEGORY = "preferences_alerts_category";
- public static final String KEY_ALERTS = "preferences_alerts";
- public static final String KEY_ALERTS_VIBRATE = "preferences_alerts_vibrate";
- public static final String KEY_ALERTS_RINGTONE = "preferences_alerts_ringtone";
- public static final String KEY_ALERTS_POPUP = "preferences_alerts_popup";
-
- public static final String KEY_SHOW_CONTROLS = "preferences_show_controls";
-
- public static final String KEY_DEFAULT_REMINDER = "preferences_default_reminder";
- public static final int NO_REMINDER = -1;
- public static final String NO_REMINDER_STRING = "-1";
- public static final int REMINDER_DEFAULT_TIME = 10; // in minutes
-
- public static final String KEY_DEFAULT_CELL_HEIGHT = "preferences_default_cell_height";
- public static final String KEY_VERSION = "preferences_version";
-
- /** Key to SharePreference for default view (CalendarController.ViewType) */
- public static final String KEY_START_VIEW = "preferred_startView";
- /**
- * Key to SharePreference for default detail view (CalendarController.ViewType)
- * Typically used by widget
- */
- public static final String KEY_DETAILED_VIEW = "preferred_detailedView";
- public static final String KEY_DEFAULT_CALENDAR = "preference_defaultCalendar";
-
- // These must be in sync with the array preferences_week_start_day_values
- public static final String WEEK_START_DEFAULT = "-1";
- public static final String WEEK_START_SATURDAY = "7";
- public static final String WEEK_START_SUNDAY = "1";
- public static final String WEEK_START_MONDAY = "2";
-
- // These keys are kept to enable migrating users from previous versions
- private static final String KEY_ALERTS_TYPE = "preferences_alerts_type";
- private static final String ALERT_TYPE_ALERTS = "0";
- private static final String ALERT_TYPE_STATUS_BAR = "1";
- private static final String ALERT_TYPE_OFF = "2";
- static final String KEY_HOME_TZ_ENABLED = "preferences_home_tz_enabled";
- static final String KEY_HOME_TZ = "preferences_home_tz";
-
- // Default preference values
- public static final int DEFAULT_START_VIEW = CalendarController.ViewType.WEEK;
- public static final int DEFAULT_DETAILED_VIEW = CalendarController.ViewType.DAY;
- public static final boolean DEFAULT_SHOW_WEEK_NUM = false;
- // This should match the XML file.
- public static final String DEFAULT_RINGTONE = "content://settings/system/notification_sound";
-
- CheckBoxPreference mAlert;
- CheckBoxPreference mVibrate;
- CheckBoxPreference mPopup;
- CheckBoxPreference mUseHomeTZ;
- CheckBoxPreference mHideDeclined;
- Preference mHomeTZ;
- TimeZonePickerUtils mTzPickerUtils;
- ListPreference mWeekStart;
- ListPreference mDefaultReminder;
-
- private String mTimeZoneId;
-
- /** Return a properly configured SharedPreferences instance */
- public static SharedPreferences getSharedPreferences(Context context) {
- return context.getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE);
- }
-
- /** Set the default shared preferences in the proper context */
- public static void setDefaultValues(Context context) {
- PreferenceManager.setDefaultValues(context, SHARED_PREFS_NAME, Context.MODE_PRIVATE,
- R.xml.general_preferences, false);
- }
-
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
-
- final Activity activity = getActivity();
-
- // Make sure to always use the same preferences file regardless of the package name
- // we're running under
- final PreferenceManager preferenceManager = getPreferenceManager();
- final SharedPreferences sharedPreferences = getSharedPreferences(activity);
- preferenceManager.setSharedPreferencesName(SHARED_PREFS_NAME);
-
- // Load the preferences from an XML resource
- addPreferencesFromResource(R.xml.general_preferences);
-
- final PreferenceScreen preferenceScreen = getPreferenceScreen();
- mAlert = (CheckBoxPreference) preferenceScreen.findPreference(KEY_ALERTS);
- mVibrate = (CheckBoxPreference) preferenceScreen.findPreference(KEY_ALERTS_VIBRATE);
- Vibrator vibrator = (Vibrator) activity.getSystemService(Context.VIBRATOR_SERVICE);
- if (vibrator == null || !vibrator.hasVibrator()) {
- PreferenceCategory mAlertGroup = (PreferenceCategory) preferenceScreen
- .findPreference(KEY_ALERTS_CATEGORY);
- mAlertGroup.removePreference(mVibrate);
- }
-
- mPopup = (CheckBoxPreference) preferenceScreen.findPreference(KEY_ALERTS_POPUP);
- mUseHomeTZ = (CheckBoxPreference) preferenceScreen.findPreference(KEY_HOME_TZ_ENABLED);
- mHideDeclined = (CheckBoxPreference) preferenceScreen.findPreference(KEY_HIDE_DECLINED);
- mWeekStart = (ListPreference) preferenceScreen.findPreference(KEY_WEEK_START_DAY);
- mDefaultReminder = (ListPreference) preferenceScreen.findPreference(KEY_DEFAULT_REMINDER);
- mHomeTZ = preferenceScreen.findPreference(KEY_HOME_TZ);
- mWeekStart.setSummary(mWeekStart.getEntry());
- mDefaultReminder.setSummary(mDefaultReminder.getEntry());
-
- // This triggers an asynchronous call to the provider to refresh the data in shared pref
- mTimeZoneId = Utils.getTimeZone(activity, null);
-
- SharedPreferences prefs = CalendarUtils.getSharedPreferences(activity,
- Utils.SHARED_PREFS_NAME);
-
- // Utils.getTimeZone will return the currentTimeZone instead of the one
- // in the shared_pref if home time zone is disabled. So if home tz is
- // off, we will explicitly read it.
- if (!prefs.getBoolean(KEY_HOME_TZ_ENABLED, false)) {
- mTimeZoneId = prefs.getString(KEY_HOME_TZ, Time.getCurrentTimezone());
- }
-
- mHomeTZ.setOnPreferenceClickListener(new OnPreferenceClickListener() {
- @Override
- public boolean onPreferenceClick(Preference preference) {
- showTimezoneDialog();
- return true;
- }
- });
-
- if (mTzPickerUtils == null) {
- mTzPickerUtils = new TimeZonePickerUtils(getActivity());
- }
- CharSequence timezoneName = mTzPickerUtils.getGmtDisplayName(getActivity(), mTimeZoneId,
- System.currentTimeMillis(), false);
- mHomeTZ.setSummary(timezoneName != null ? timezoneName : mTimeZoneId);
-
- TimeZonePickerDialog tzpd = (TimeZonePickerDialog) activity.getFragmentManager()
- .findFragmentByTag(FRAG_TAG_TIME_ZONE_PICKER);
- if (tzpd != null) {
- tzpd.setOnTimeZoneSetListener(this);
- }
-
- 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();
- getPreferenceScreen().getSharedPreferences()
- .registerOnSharedPreferenceChangeListener(this);
- setPreferenceListeners(this);
- }
-
- /**
- * Sets up all the preference change listeners to use the specified
- * listener.
- */
- private void setPreferenceListeners(OnPreferenceChangeListener listener) {
- mUseHomeTZ.setOnPreferenceChangeListener(listener);
- mHomeTZ.setOnPreferenceChangeListener(listener);
- mWeekStart.setOnPreferenceChangeListener(listener);
- mDefaultReminder.setOnPreferenceChangeListener(listener);
- mHideDeclined.setOnPreferenceChangeListener(listener);
- mVibrate.setOnPreferenceChangeListener(listener);
- }
-
- @Override
- public void onStop() {
- getPreferenceScreen().getSharedPreferences()
- .unregisterOnSharedPreferenceChangeListener(this);
- setPreferenceListeners(null);
- super.onStop();
- }
-
- @Override
- public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
- Activity a = getActivity();
- if (key.equals(KEY_ALERTS)) {
- updateChildPreferences();
- if (a != null) {
- Intent intent = new Intent();
- intent.setClass(a, AlertReceiver.class);
- if (mAlert.isChecked()) {
- intent.setAction(AlertReceiver.ACTION_DISMISS_OLD_REMINDERS);
- } else {
- intent.setAction(AlertReceiver.EVENT_REMINDER_APP_ACTION);
- }
- a.sendBroadcast(intent);
- }
- }
- if (a != null) {
- BackupManager.dataChanged(a.getPackageName());
- }
- }
-
- /**
- * Handles time zone preference changes
- */
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- String tz;
- final Activity activity = getActivity();
- if (preference == mUseHomeTZ) {
- if ((Boolean)newValue) {
- tz = mTimeZoneId;
- } else {
- tz = CalendarCache.TIMEZONE_TYPE_AUTO;
- }
- Utils.setTimeZone(activity, tz);
- return true;
- } else if (preference == mHideDeclined) {
- mHideDeclined.setChecked((Boolean) newValue);
- Intent intent = new Intent(Utils.getWidgetScheduledUpdateAction(activity));
- intent.setDataAndType(CalendarContract.CONTENT_URI, Utils.APPWIDGET_DATA_TYPE);
- activity.sendBroadcast(intent);
- return true;
- } else if (preference == mWeekStart) {
- mWeekStart.setValue((String) newValue);
- mWeekStart.setSummary(mWeekStart.getEntry());
- } else if (preference == mDefaultReminder) {
- mDefaultReminder.setValue((String) newValue);
- mDefaultReminder.setSummary(mDefaultReminder.getEntry());
- } else if (preference == mVibrate) {
- mVibrate.setChecked((Boolean) newValue);
- return true;
- } else {
- return true;
- }
- return false;
- }
-
- public String getRingtoneTitleFromUri(Context context, String uri) {
- if (TextUtils.isEmpty(uri)) {
- return null;
- }
-
- Ringtone ring = RingtoneManager.getRingtone(getActivity(), Uri.parse(uri));
- if (ring != null) {
- return ring.getTitle(context);
- }
- return null;
- }
-
- /**
- * If necessary, upgrades previous versions of preferences to the current
- * set of keys and values.
- * @param prefs the preferences to upgrade
- */
- private void migrateOldPreferences(SharedPreferences prefs) {
- // If needed, migrate vibration setting from a previous version
-
- mVibrate.setChecked(Utils.getDefaultVibrate(getActivity(), prefs));
-
- // If needed, migrate the old alerts type settin
- if (!prefs.contains(KEY_ALERTS) && prefs.contains(KEY_ALERTS_TYPE)) {
- String type = prefs.getString(KEY_ALERTS_TYPE, ALERT_TYPE_STATUS_BAR);
- if (type.equals(ALERT_TYPE_OFF)) {
- mAlert.setChecked(false);
- mPopup.setChecked(false);
- mPopup.setEnabled(false);
- } else if (type.equals(ALERT_TYPE_STATUS_BAR)) {
- mAlert.setChecked(true);
- mPopup.setChecked(false);
- mPopup.setEnabled(true);
- } else if (type.equals(ALERT_TYPE_ALERTS)) {
- mAlert.setChecked(true);
- mPopup.setChecked(true);
- mPopup.setEnabled(true);
- }
- // clear out the old setting
- prefs.edit().remove(KEY_ALERTS_TYPE).commit();
- }
- }
-
- /**
- * Keeps the dependent settings in sync with the parent preference, so for
- * example, when notifications are turned off, we disable the preferences
- * for configuring the exact notification behavior.
- */
- private void updateChildPreferences() {
- if (mAlert.isChecked()) {
- mVibrate.setEnabled(true);
- mPopup.setEnabled(true);
- } else {
- mVibrate.setEnabled(false);
- mPopup.setEnabled(false);
- }
- }
-
-
- @Override
- public boolean onPreferenceTreeClick(
- PreferenceScreen preferenceScreen, Preference preference) {
- final String key = preference.getKey();
- return super.onPreferenceTreeClick(preferenceScreen, preference);
- }
-
- @Override
- public void onTimeZoneSet(TimeZoneInfo tzi) {
- if (mTzPickerUtils == null) {
- mTzPickerUtils = new TimeZonePickerUtils(getActivity());
- }
-
- final CharSequence timezoneName = mTzPickerUtils.getGmtDisplayName(
- getActivity(), tzi.mTzId, System.currentTimeMillis(), false);
- mHomeTZ.setSummary(timezoneName);
- Utils.setTimeZone(getActivity(), tzi.mTzId);
- }
-}