diff options
-rw-r--r-- | res/values/arrays.xml | 13 | ||||
-rw-r--r-- | res/values/strings.xml | 8 | ||||
-rw-r--r-- | res/xml/other_preferences.xml | 6 | ||||
-rw-r--r-- | src/com/android/calendar/OtherPreferences.java | 52 | ||||
-rw-r--r-- | src/com/android/calendar/alerts/AlertService.java | 10 |
5 files changed, 76 insertions, 13 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 3ae95abb..e2c577e4 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -404,4 +404,17 @@ <item>Month</item> <item>Agenda</item> </string-array> + + <!-- Experimental options for skipping reminders. [CHAR LIMIT = 35] --> + <string-array name="preferences_skip_reminders_labels"> + <!-- Default choice --> + <item>Only if declined</item> + <!-- Second option, for skipping reminders to events not yet responded to. --> + <item>If declined or not responded</item> + </string-array> + + <string-array name="preferences_skip_reminders_values" translatable="false"> + <item>declined</item> + <item>not_responded</item> + </string-array> </resources> diff --git a/res/values/strings.xml b/res/values/strings.xml index 4d687f0d..d88647d5 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -567,10 +567,10 @@ <!-- Reminders settings [CHAR LIMIT = 30]--> <string name="preferences_reminders_category">Reminders</string> - <!-- Preference label for when to send reminders [CHAR LIMIT = 25] --> - <string name="preferences_reminders_responded_label">Limit reminders by attendance</string> - <!-- Preference description for when to send reminders [CHAR LIMIT = NONE]--> - <string name="preferences_reminders_responded_description">Don\'t post reminders unless you\'ve responded \"Yes\" or \"Maybe\"</string> + <!-- Preference label for when to skip reminders [CHAR LIMIT = 25] --> + <string name="preferences_reminders_responded_label">Skip Reminders</string> + <!-- Dialog title for when to skip reminders [CHAR LIMIT = 25] --> + <string name="preferences_reminders_responded_dialog">Skip Reminders</string> <!-- Preference label for quiet hours [CHAR LIMIT = 25]--> <string name="preferences_reminders_quiet_hours_label">Quiet hours</string> <!-- Preference description for quiet hours [CHAR LIMIT = NONE]--> diff --git a/res/xml/other_preferences.xml b/res/xml/other_preferences.xml index a368b19e..411643e9 100644 --- a/res/xml/other_preferences.xml +++ b/res/xml/other_preferences.xml @@ -25,10 +25,12 @@ <PreferenceCategory android:key="preferences_reminders_category" android:title="@string/preferences_reminders_category" > - <CheckBoxPreference + <ListPreference android:key="preferences_reminders_responded" android:title="@string/preferences_reminders_responded_label" - android:summary="@string/preferences_reminders_responded_description"/> + android:entries="@array/preferences_skip_reminders_labels" + android:entryValues="@array/preferences_skip_reminders_values" + android:dialogTitle="@string/preferences_reminders_responded_dialog" /> <CheckBoxPreference android:key="preferences_reminders_quiet_hours" android:title="@string/preferences_reminders_quiet_hours_label" diff --git a/src/com/android/calendar/OtherPreferences.java b/src/com/android/calendar/OtherPreferences.java index 54ea7ea6..58872916 100644 --- a/src/com/android/calendar/OtherPreferences.java +++ b/src/com/android/calendar/OtherPreferences.java @@ -24,7 +24,9 @@ import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.CheckBoxPreference; +import android.preference.ListPreference; import android.preference.Preference; +import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceFragment; import android.preference.PreferenceManager; import android.preference.PreferenceScreen; @@ -33,7 +35,7 @@ import android.text.format.Time; import android.util.Log; import android.widget.TimePicker; -public class OtherPreferences extends PreferenceFragment { +public class OtherPreferences extends PreferenceFragment implements OnPreferenceChangeListener{ private static final String TAG = "CalendarOtherPreferences"; // The name of the shared preferences file. This name must be maintained for @@ -43,8 +45,8 @@ public class OtherPreferences extends PreferenceFragment { // Must be the same keys that are used in the other_preferences.xml file. public static final String KEY_OTHER_COPY_DB = "preferences_copy_db"; - public static final String KEY_OTHER_QUIET_HOURS = - "preferences_reminders_quiet_hours"; + public static final String KEY_OTHER_QUIET_HOURS = "preferences_reminders_quiet_hours"; + public static final String KEY_OTHER_REMINDERS_RESPONDED = "preferences_reminders_responded"; public static final String KEY_OTHER_QUIET_HOURS_START = "preferences_reminders_quiet_hours_start"; public static final String KEY_OTHER_QUIET_HOURS_START_HOUR = @@ -58,8 +60,6 @@ public class OtherPreferences extends PreferenceFragment { public static final String KEY_OTHER_QUIET_HOURS_END_MINUTE = "preferences_reminders_quiet_hours_end_minute"; public static final String KEY_OTHER_1 = "preferences_tardis_1"; - public static final String KEY_OTHER_REMINDERS_RESPONDED = - "preferences_reminders_responded"; public static final int QUIET_HOURS_DEFAULT_START_HOUR = 22; public static final int QUIET_HOURS_DEFAULT_START_MINUTE = 0; @@ -72,6 +72,7 @@ public class OtherPreferences extends PreferenceFragment { private static final String format12Hour = "%I:%M%P"; private Preference mCopyDb; + private ListPreference mSkipReminders; private CheckBoxPreference mQuietHours; private Preference mQuietHoursStart; private Preference mQuietHoursEnd; @@ -95,6 +96,9 @@ public class OtherPreferences extends PreferenceFragment { addPreferencesFromResource(R.xml.other_preferences); mCopyDb = findPreference(KEY_OTHER_COPY_DB); + mSkipReminders = (ListPreference) findPreference(KEY_OTHER_REMINDERS_RESPONDED); + updateSkipRemindersSummary(null); + mSkipReminders.setOnPreferenceChangeListener(this); Activity activity = getActivity(); if (activity == null) { @@ -129,6 +133,18 @@ public class OtherPreferences extends PreferenceFragment { } @Override + public boolean onPreferenceChange(Preference preference, Object objValue) { + final String key = preference.getKey(); + + if (KEY_OTHER_REMINDERS_RESPONDED.equals(key)) { + String value = String.valueOf(objValue); + updateSkipRemindersSummary(value); + } + + return true; + } + + @Override public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) { if (preference == mCopyDb) { Intent intent = new Intent(Intent.ACTION_MAIN); @@ -202,4 +218,30 @@ public class OtherPreferences extends PreferenceFragment { String format = mIs24HourMode? format24Hour : format12Hour; return time.format(format); } + + /** + * Update the summary for the SkipReminders preference. + * @param value The corresponding value of which summary to set. If null, the default summary + * will be set, and the value will be set accordingly too. + */ + private void updateSkipRemindersSummary(String value) { + if (mSkipReminders != null) { + // Default to "declined". Must match with R.array.preferences_skip_reminders_values. + int index = 0; + + CharSequence[] values = mSkipReminders.getEntryValues(); + CharSequence[] entries = mSkipReminders.getEntries(); + for(int value_i = 0; value_i < values.length; value_i++) { + if (values[value_i].equals(value)) { + index = value_i; + break; + } + } + mSkipReminders.setSummary(entries[index].toString()); + if (value == null) { + // Value was not known ahead of time, so the default value will be set. + mSkipReminders.setValue(values[index].toString()); + } + } + } }
\ No newline at end of file diff --git a/src/com/android/calendar/alerts/AlertService.java b/src/com/android/calendar/alerts/AlertService.java index 3d09f592..a343ab54 100644 --- a/src/com/android/calendar/alerts/AlertService.java +++ b/src/com/android/calendar/alerts/AlertService.java @@ -44,6 +44,7 @@ import android.util.Log; import com.android.calendar.GeneralPreferences; import com.android.calendar.OtherPreferences; +import com.android.calendar.R; import com.android.calendar.Utils; import java.util.ArrayList; @@ -543,8 +544,13 @@ public class AlertService extends Service { ArrayList<NotificationInfo> lowPriorityEvents) { // Experimental reminder setting to only remind for events that have // been responded to with "yes" or "maybe". - boolean remindRespondedOnly = Utils.getSharedPreference(context, - OtherPreferences.KEY_OTHER_REMINDERS_RESPONDED, false); + String skipRemindersPref = Utils.getSharedPreference(context, + OtherPreferences.KEY_OTHER_REMINDERS_RESPONDED, ""); + // Skip no-response events if the "Skip Reminders" preference has the second option, + // "If declined or not responded", is selected. + // Note that by default, the first option will be selected, so this will be false. + boolean remindRespondedOnly = skipRemindersPref.equals(context.getResources(). + getStringArray(R.array.preferences_skip_reminders_values)[1]); // Experimental reminder setting to silence reminders when they are // during the pre-defined quiet hours. boolean useQuietHours = Utils.getSharedPreference(context, |