From 72d1d73a9b5b6f776d7294f4f83bcc1cfdfac4d9 Mon Sep 17 00:00:00 2001 From: Michael Chan Date: Tue, 20 Nov 2012 07:16:14 -0800 Subject: Remove vibrate-on-silent-mode per UX Also show current ringtone (6265196) Cherry-picked from https://googleplex-android-review.googlesource.com/#/c/253780/ https://googleplex-android-review.googlesource.com/#/c/253801/ Bug: 7631982 Bug: 6265196 Change-Id: I7a9212d8672a225ab95c0fa2973ae616b393f005 --- src/com/android/calendar/GeneralPreferences.java | 68 ++++++++++++++--------- src/com/android/calendar/Utils.java | 22 ++++++++ src/com/android/calendar/alerts/AlertService.java | 50 +---------------- 3 files changed, 64 insertions(+), 76 deletions(-) (limited to 'src') diff --git a/src/com/android/calendar/GeneralPreferences.java b/src/com/android/calendar/GeneralPreferences.java index abaa2b66..d98d3e65 100644 --- a/src/com/android/calendar/GeneralPreferences.java +++ b/src/com/android/calendar/GeneralPreferences.java @@ -22,6 +22,9 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; 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; @@ -59,7 +62,6 @@ public class GeneralPreferences extends PreferenceFragment implements 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_VIBRATE_WHEN = "preferences_alerts_vibrateWhen"; public static final String KEY_ALERTS_RINGTONE = "preferences_alerts_ringtone"; public static final String KEY_ALERTS_POPUP = "preferences_alerts_popup"; @@ -102,7 +104,7 @@ public class GeneralPreferences extends PreferenceFragment implements public static final boolean DEFAULT_SHOW_WEEK_NUM = false; CheckBoxPreference mAlert; - ListPreference mVibrateWhen; + CheckBoxPreference mVibrate; RingtonePreference mRingtone; CheckBoxPreference mPopup; CheckBoxPreference mUseHomeTZ; @@ -141,17 +143,21 @@ public class GeneralPreferences extends PreferenceFragment implements final PreferenceScreen preferenceScreen = getPreferenceScreen(); mAlert = (CheckBoxPreference) preferenceScreen.findPreference(KEY_ALERTS); - mVibrateWhen = (ListPreference) preferenceScreen.findPreference(KEY_ALERTS_VIBRATE_WHEN); + 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(mVibrateWhen); - } else { - mVibrateWhen.setSummary(mVibrateWhen.getEntry()); + mAlertGroup.removePreference(mVibrate); } mRingtone = (RingtonePreference) preferenceScreen.findPreference(KEY_ALERTS_RINGTONE); + String ringToneUri = Utils.getSharedPreference(activity, KEY_ALERTS_RINGTONE, ""); + if (!TextUtils.isEmpty(ringToneUri)) { + String ringtone = getRingtoneTitleFromUri(getActivity(), ringToneUri); + mRingtone.setSummary(ringtone == null ? "" : ringtone); + } + mPopup = (CheckBoxPreference) preferenceScreen.findPreference(KEY_ALERTS_POPUP); mUseHomeTZ = (CheckBoxPreference) preferenceScreen.findPreference(KEY_HOME_TZ_ENABLED); mHideDeclined = (CheckBoxPreference) preferenceScreen.findPreference(KEY_HIDE_DECLINED); @@ -181,8 +187,8 @@ public class GeneralPreferences extends PreferenceFragment implements } @Override - public void onResume() { - super.onResume(); + public void onStart() { + super.onStart(); getPreferenceScreen().getSharedPreferences() .registerOnSharedPreferenceChangeListener(this); setPreferenceListeners(this); @@ -199,16 +205,15 @@ public class GeneralPreferences extends PreferenceFragment implements mDefaultReminder.setOnPreferenceChangeListener(listener); mRingtone.setOnPreferenceChangeListener(listener); mHideDeclined.setOnPreferenceChangeListener(listener); - mVibrateWhen.setOnPreferenceChangeListener(listener); - + mVibrate.setOnPreferenceChangeListener(listener); } @Override - public void onPause() { - super.onPause(); + public void onStop() { getPreferenceScreen().getSharedPreferences() .unregisterOnSharedPreferenceChangeListener(this); setPreferenceListeners(null); + super.onStop(); } @Override @@ -266,17 +271,32 @@ public class GeneralPreferences extends PreferenceFragment implements mDefaultReminder.setValue((String) newValue); mDefaultReminder.setSummary(mDefaultReminder.getEntry()); } else if (preference == mRingtone) { - // TODO update this after b/3417832 is fixed + if (newValue instanceof String) { + String ringtone = getRingtoneTitleFromUri(getActivity(), (String) newValue); + mRingtone.setSummary(ringtone == null ? "" : ringtone); + } + return true; + } else if (preference == mVibrate) { + mVibrate.setChecked((Boolean) newValue); return true; - } else if (preference == mVibrateWhen) { - mVibrateWhen.setValue((String)newValue); - mVibrateWhen.setSummary(mVibrateWhen.getEntry()); } 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. @@ -284,13 +304,9 @@ public class GeneralPreferences extends PreferenceFragment implements */ private void migrateOldPreferences(SharedPreferences prefs) { // If needed, migrate vibration setting from a previous version - if (!prefs.contains(KEY_ALERTS_VIBRATE_WHEN) && - prefs.contains(KEY_ALERTS_VIBRATE)) { - int stringId = prefs.getBoolean(KEY_ALERTS_VIBRATE, false) ? - R.string.prefDefault_alerts_vibrate_true : - R.string.prefDefault_alerts_vibrate_false; - mVibrateWhen.setValue(getActivity().getString(stringId)); - } + + 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); @@ -319,13 +335,11 @@ public class GeneralPreferences extends PreferenceFragment implements */ private void updateChildPreferences() { if (mAlert.isChecked()) { - mVibrateWhen.setEnabled(true); + mVibrate.setEnabled(true); mRingtone.setEnabled(true); mPopup.setEnabled(true); } else { - mVibrateWhen.setValue( - getActivity().getString(R.string.prefDefault_alerts_vibrate_false)); - mVibrateWhen.setEnabled(false); + mVibrate.setEnabled(false); mRingtone.setEnabled(false); mPopup.setEnabled(false); } diff --git a/src/com/android/calendar/Utils.java b/src/com/android/calendar/Utils.java index 3afcfd44..e21a8f32 100644 --- a/src/com/android/calendar/Utils.java +++ b/src/com/android/calendar/Utils.java @@ -116,6 +116,8 @@ public class Utils { public static final String KEY_QUICK_RESPONSES = "preferences_quick_responses"; + public static final String KEY_ALERTS_VIBRATE_WHEN = "preferences_alerts_vibrateWhen"; + public static final String APPWIDGET_DATA_TYPE = "vnd.android.data/update"; static final String MACHINE_GENERATED_ADDRESS = "calendar.google.com"; @@ -224,6 +226,26 @@ public class Utils { return mTZUtils.formatDateRange(context, startMillis, endMillis, flags); } + public static boolean getDefaultVibrate(Context context, SharedPreferences prefs) { + boolean vibrate; + if (prefs.contains(KEY_ALERTS_VIBRATE_WHEN)) { + // Migrate setting to new 4.2 behavior + // + // silent and never -> off + // always -> on + String vibrateWhen = prefs.getString(KEY_ALERTS_VIBRATE_WHEN, null); + vibrate = vibrateWhen != null && vibrateWhen.equals(context + .getString(R.string.prefDefault_alerts_vibrate_true)); + prefs.edit().remove(KEY_ALERTS_VIBRATE_WHEN).commit(); + Log.d(TAG, "Migrating KEY_ALERTS_VIBRATE_WHEN(" + vibrateWhen + + ") to KEY_ALERTS_VIBRATE = " + vibrate); + } else { + vibrate = prefs.getBoolean(GeneralPreferences.KEY_ALERTS_VIBRATE, + false); + } + return vibrate; + } + public static String[] getSharedPreference(Context context, String key, String[] defaultValue) { SharedPreferences prefs = GeneralPreferences.getSharedPreferences(context); Set ss = prefs.getStringSet(key, null); diff --git a/src/com/android/calendar/alerts/AlertService.java b/src/com/android/calendar/alerts/AlertService.java index 9811dabf..94ffd9a6 100644 --- a/src/com/android/calendar/alerts/AlertService.java +++ b/src/com/android/calendar/alerts/AlertService.java @@ -26,7 +26,6 @@ import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.database.Cursor; -import android.media.AudioManager; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -44,7 +43,6 @@ import android.text.format.Time; import android.util.Log; import com.android.calendar.GeneralPreferences; -import com.android.calendar.R; import com.android.calendar.Utils; import java.util.ArrayList; @@ -506,7 +504,6 @@ public class AlertService extends Service { // Use app local storage to keep track of fired alerts to fix problem of multiple // installed calendar apps potentially causing missed alarms. boolean newAlertOverride = false; - String alertIdStr = Long.toString(alertId); if (AlertUtils.BYPASS_DB && ((currentTime - alarmTime) / MINUTE_MS < 1)) { // To avoid re-firing alerts, only fire if alarmTime is very recent. Otherwise // we can get refires for non-dismissed alerts after app installation, or if the @@ -588,18 +585,6 @@ public class AlertService extends Service { } // TODO: Prefer accepted events in case of ties. - int newStatus; - switch (status) { - case Attendees.ATTENDEE_STATUS_ACCEPTED: - newStatus = 2; - break; - case Attendees.ATTENDEE_STATUS_TENTATIVE: - newStatus = 1; - break; - default: - newStatus = 0; - } - NotificationInfo newInfo = new NotificationInfo(eventName, location, description, beginTime, endTime, eventId, allDay, newAlert); @@ -831,40 +816,7 @@ public class AlertService extends Service { private boolean getDefaultVibrate() { if (defaultVibrate < 0) { - // Find out the circumstances under which to vibrate. - // Migrate from pre-Froyo boolean setting if necessary. - String vibrateWhen; // "always" or "silent" or "never" - if(prefs.contains(GeneralPreferences.KEY_ALERTS_VIBRATE_WHEN)) - { - // Look up Froyo setting - vibrateWhen = - prefs.getString(GeneralPreferences.KEY_ALERTS_VIBRATE_WHEN, null); - } else if(prefs.contains(GeneralPreferences.KEY_ALERTS_VIBRATE)) { - // No Froyo setting. Migrate pre-Froyo setting to new Froyo-defined value. - boolean vibrate = - prefs.getBoolean(GeneralPreferences.KEY_ALERTS_VIBRATE, false); - vibrateWhen = vibrate ? - context.getString(R.string.prefDefault_alerts_vibrate_true) : - context.getString(R.string.prefDefault_alerts_vibrate_false); - } else { - // No setting. Use Froyo-defined default. - vibrateWhen = context.getString(R.string.prefDefault_alerts_vibrateWhen); - } - - if (vibrateWhen.equals("always")) { - defaultVibrate = 1; - } else if (!vibrateWhen.equals("silent")) { - defaultVibrate = 0; - } else { - // Settings are to vibrate when silent. Return true if it is now silent. - AudioManager audioManager = - (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); - if (audioManager.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE) { - defaultVibrate = 1; - } else { - defaultVibrate = 0; - } - } + defaultVibrate = Utils.getDefaultVibrate(context, prefs) ? 1 : 0; } return defaultVibrate == 1; } -- cgit v1.2.3