summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/arrays.xml13
-rw-r--r--res/values/strings.xml8
-rw-r--r--res/xml/other_preferences.xml6
-rw-r--r--src/com/android/calendar/OtherPreferences.java52
-rw-r--r--src/com/android/calendar/alerts/AlertService.java10
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,