Implemented story 13186747, User-set defaults for reminders due today, specific date. Please test this.

pull/14/head
Arne Jans 13 years ago
parent 496c240a2a
commit 13e2b739da

@ -52,6 +52,10 @@ public class ReminderPreferences extends TodorooPreferenceActivity {
String setting = r.getStringArray(R.array.EPr_quiet_hours_end)[index];
preference.setSummary(r.getString(R.string.rmd_EPr_quiet_hours_end_desc, setting));
}
} else if(r.getString(R.string.p_rmd_time).equals(preference.getKey())) {
int index = AndroidUtilities.indexOf(r.getStringArray(R.array.EPr_rmd_time_values), (String)value);
String setting = r.getStringArray(R.array.EPr_rmd_time)[index];
preference.setSummary(r.getString(R.string.rmd_EPr_rmd_time_desc, setting));
} else if(r.getString(R.string.p_rmd_ringtone).equals(preference.getKey())) {
if(value == null || "content://settings/system/notification_sound".equals(value)) //$NON-NLS-1$
preference.setSummary(r.getString(R.string.rmd_EPr_ringtone_desc_default));

@ -10,7 +10,9 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import android.text.format.DateUtils;
import android.util.Log;
import android.widget.Toast;
import com.timsu.astrid.R;
import com.todoroo.andlib.data.Property;
@ -102,7 +104,7 @@ public final class ReminderService {
Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_quietStart, 22);
Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_quietEnd, 10);
Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_default_random_hours, 0);
Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_time, 12);
Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_time, 18);
Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_nagging, true);
Preferences.setIfUnset(prefs, editor, r, R.string.p_rmd_persistent, true);
@ -276,17 +278,96 @@ public final class ReminderService {
else {
// return notification time on this day
Date date = new Date(dueDate);
date.setHours(Preferences.getIntegerFromString(R.string.p_rmd_time, 12));
date.setHours(Preferences.getIntegerFromString(R.string.p_rmd_time, 18));
date.setMinutes(0);
date.setSeconds(0);
dueDateAlarm = date.getTime();
if (dueDate > DateUtilities.now() && dueDateAlarm < DateUtilities.now()) {
// this only happens for tasks due today, cause dueDateAlarm wouldnt be in the past otherwise
// if the default reminder is in the past, then reschedule it
// on this day before start of quiet hours or after quiet hours
// randomly placed in this interval
boolean quietHours = false;
int quietHoursStart = Preferences.getIntegerFromString(R.string.p_rmd_quietStart, -1);
Date quietHoursStartDate = new Date();
quietHoursStartDate.setHours(quietHoursStart);
quietHoursStartDate.setMinutes(0);
quietHoursStartDate.setSeconds(0);
int quietHoursEnd = Preferences.getIntegerFromString(R.string.p_rmd_quietEnd, -1);
Date quietHoursEndDate = new Date();
quietHoursEndDate.setHours(quietHoursStart);
quietHoursEndDate.setMinutes(0);
quietHoursEndDate.setSeconds(0);
long millisToQuiet = quietHoursStartDate.getTime() - DateUtilities.now();
long millisToEndOfDay = dueDate - DateUtilities.now();
//
int periodDivFactor = 4;
if(quietHoursStart != -1 && quietHoursEnd != -1) {
int hour = new Date().getHours();
if(quietHoursStart <= quietHoursEnd) {
if(hour >= quietHoursStart && hour < quietHoursEnd) {
quietHours = true;
// its quiet now, quietHoursEnd is 23 max,
// so put the default reminder to the end of the quiethours
date.setHours(quietHoursEnd);
dueDateAlarm = date.getTime();
} else if (hour < quietHoursStart) {
// quietHours didnt start yet
millisToQuiet = quietHoursStartDate.getTime() - DateUtilities.now();
long millisAfterQuiet = dueDate - quietHoursEndDate.getTime();
// if there is more time after quiethours today, select quiethours-end for reminder
if (millisAfterQuiet > (millisToQuiet / ((float)(1-(1/periodDivFactor))) ))
dueDateAlarm = quietHoursEndDate.getTime();
else
dueDateAlarm = DateUtilities.now() + (long)(millisToQuiet / periodDivFactor);
} else {
// after quietHours, reuse dueDate for end of day
dueDateAlarm = DateUtilities.now() + (long)(millisToEndOfDay / periodDivFactor);
}
} else { // wrap across 24/hour boundary
if(hour >= quietHoursStart) {
// do nothing for the end of day, dont let it even vibrate
quietHours = true;
dueDateAlarm = NO_ALARM;
} else if (hour < quietHoursEnd) {
quietHours = true;
date.setHours(quietHoursEnd);
dueDateAlarm = date.getTime();
} else {
// quietHours didnt start yet
millisToQuiet = quietHoursStartDate.getTime() - DateUtilities.now();
dueDateAlarm = DateUtilities.now() + (long)(millisToQuiet / periodDivFactor);
}
}
} else {
// Quiet hours not activated, simply schedule the reminder on 1/periodDivFactor towards the end of day
dueDateAlarm = DateUtilities.now() + (long)(millisToEndOfDay / periodDivFactor);
}
if(dueDate > DateUtilities.now() && dueDateAlarm < DateUtilities.now())
dueDateAlarm = dueDate;
String toastMessage;
Context context = ContextManager.getContext();
CharSequence formattedDate =
DateUtils.getRelativeTimeSpanString(dueDateAlarm);
toastMessage = context.getString(R.string.rmd_time_toast, formattedDate);
if (dueDateAlarm != NO_ALARM)
Toast.makeText(context, toastMessage, 5).show();
else
Toast.makeText(context, context.getString(R.string.rmd_time_toast_quiet), 5).show();
}
}
if(lastReminder > dueDateAlarm)
return NO_ALARM;
if(dueDate > DateUtilities.now() && dueDateAlarm < DateUtilities.now())
dueDateAlarm = dueDate;
return dueDateAlarm;
}
return NO_ALARM;
@ -368,8 +449,7 @@ public final class ReminderService {
time = DateUtilities.now() + 5000L;
if(Constants.DEBUG)
Log.e("Astrid", "Reminder (" + task.getId() + ", " + type +
") set for " + new Date(time));
Log.e("Astrid", "Reminder set for " + new Date(time)+" for (\""+task.getValue(Task.TITLE)+"\" (" + task.getId() + "), " + type +")");
am.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);
}
}

@ -73,7 +73,7 @@
<!-- Message displayed when error occurs -->
<string name="backup_TXI_error">Fehler beim Importieren</string>
<string name="export_toast">Backed Up %1$s to %2$s.</string>
<string name="export_toast">Backup erstellt für %1$s nach %2$s.</string>
<string name="export_toast_no_tasks">Keine Aufgaben für den Export.</string>
@ -1014,6 +1014,10 @@
<!-- Reminder: Cancel reminder -->
<string name="rmd_NoA_goAway">Hau ab!</string>
<!-- Reminder: save toast for changing the past default due reminder for today -->
<string name="rmd_time_toast">Die Standarderinnerungszeit für heute liegt in der Vergangenheit!\nDie nächste Erinnerung erscheint daher %s.</string>
<string name="rmd_time_toast_quiet">Die Standarderinnerungszeit für heute liegt in der Vergangenheit und Stille Stunden sind aktiv!\nFür heute wird daher keine Erinnerung mehr angezeigt.</string>
<!-- ============================================= reminder preferences == -->
<!-- Reminder Preference Screen Title -->
@ -1031,6 +1035,11 @@
<!-- Reminder Preference: Quiet Hours End Description (%s => time set) -->
<string name="rmd_EPr_quiet_hours_end_desc">Erinnerungen werden angezeigt ab: %s</string>
<!-- Reminder Preference: Default Reminder Title -->
<string name="rmd_EPr_rmd_time_title">Standarderinnerungszeit</string>
<!-- Reminder Preference: Default Reminder Description (%s => time set) -->
<string name="rmd_EPr_rmd_time_desc">Meldungen für Aufgaben ohne Zeitangabe erscheinen um %s</string>
<!-- Reminder Preference: Notification Ringtone Title -->
<string name="rmd_EPr_ringtone_title">Erinnerungsklingelton</string>
<!-- Reminder Preference: Notification Ringtone Description (when custom tone is set) -->
@ -1151,6 +1160,34 @@
<item>08:00</item>
</string-array>
<string-array name="EPr_rmd_time">
<!-- Reminder Preference: rmd_time: options for preference menu. Translate but don't change the times! -->
<item>09:00</item>
<item>10:00</item>
<item>11:00</item>
<item>12:00</item>
<item>13:00</item>
<item>14:00</item>
<item>15:00</item>
<item>16:00</item>
<item>17:00</item>
<item>18:00</item>
<item>19:00</item>
<item>20:00</item>
<item>21:00</item>
<item>22:00</item>
<item>23:00</item>
<item>24:00</item>
<item>01:00</item>
<item>02:00</item>
<item>03:00</item>
<item>04:00</item>
<item>05:00</item>
<item>06:00</item>
<item>07:00</item>
<item>08:00</item>
</string-array>
<!-- =============================================== random reminders == -->
<string-array name="reminders">

@ -13,6 +13,9 @@
<!-- hour to end quiet hours (non-inclusive) -->
<string name="p_rmd_quietEnd">notif_qend</string>
<!-- reminder time when task doesn't have a due time (hour of day) -->
<string name="p_rmd_time">reminder_time</string>
<!-- whether "clear all notifications" clears astrid notifications -->
<string name="p_rmd_persistent">notif_annoy</string>
@ -34,9 +37,6 @@
<!-- if true / unset, hh:mm dialog. otherwise, days / hours -->
<string name="p_rmd_snooze_dialog">snooze_dialog</string>
<!-- reminder time when task doesn't have a due time (hour of day) -->
<string name="p_rmd_time">reminder_time</string>
<!-- default random reminder setting (in hours) -->
<string name="p_rmd_default_random_hours">notif_default_reminder</string>
@ -125,6 +125,34 @@
<item>08</item>
</string-array>
<string-array name="EPr_rmd_time_values">
<!-- rmd_time_values: 24-hour representation of rmd_time_values -->
<item>09</item>
<item>10</item>
<item>11</item>
<item>12</item>
<item>13</item>
<item>14</item>
<item>15</item>
<item>16</item>
<item>17</item>
<item>18</item>
<item>19</item>
<item>20</item>
<item>21</item>
<item>22</item>
<item>23</item>
<item>00</item>
<item>01</item>
<item>02</item>
<item>03</item>
<item>04</item>
<item>05</item>
<item>06</item>
<item>07</item>
<item>08</item>
</string-array>
<!-- ======================================================= APPEARANCE == -->
<string name="p_colorize">colorize</string>

@ -53,7 +53,11 @@
<!-- Reminder: Cancel reminder -->
<string name="rmd_NoA_goAway">Go Away!</string>
<!-- Reminder: save toast for changing the past default due reminder for today -->
<string name="rmd_time_toast">Default due reminder for today is in the past!\nThe next reminder will be %s.</string>
<string name="rmd_time_toast_quiet">Default due reminder for today is in the past and its already quiet time!\nNo reminder scheduled for today.</string>
<!-- ============================================= reminder preferences == -->
<!-- Reminder Preference Screen Title -->
@ -71,6 +75,11 @@
<!-- Reminder Preference: Quiet Hours End Description (%s => time set) -->
<string name="rmd_EPr_quiet_hours_end_desc">Notifications will begin appearing starting at %s</string>
<!-- Reminder Preference: Default Reminder Title -->
<string name="rmd_EPr_rmd_time_title">Default Reminder</string>
<!-- Reminder Preference: Default Reminder Description (%s => time set) -->
<string name="rmd_EPr_rmd_time_desc">Notifications for tasks without duetimes will appear at %s</string>
<!-- Reminder Preference: Notification Ringtone Title -->
<string name="rmd_EPr_ringtone_title">Notification Ringtone</string>
<!-- Reminder Preference: Notification Ringtone Description (when custom tone is set) -->
@ -191,6 +200,34 @@
<item>8 AM</item>
</string-array>
<string-array name="EPr_rmd_time">
<!-- Reminder Preference: rmd_time: options for preference menu. Translate but don't change the times! -->
<item>9 AM</item>
<item>10 AM</item>
<item>11 AM</item>
<item>12 PM</item>
<item>1 PM</item>
<item>2 PM</item>
<item>3 PM</item>
<item>4 PM</item>
<item>5 PM</item>
<item>6 PM</item>
<item>7 PM</item>
<item>8 PM</item>
<item>9 PM</item>
<item>10 PM</item>
<item>11 PM</item>
<item>12 AM</item>
<item>1 AM</item>
<item>2 AM</item>
<item>3 AM</item>
<item>4 AM</item>
<item>5 AM</item>
<item>6 AM</item>
<item>7 AM</item>
<item>8 AM</item>
</string-array>
<!-- =============================================== random reminders == -->
<string-array name="reminders">
@ -269,5 +306,4 @@
<item>Didn\'t you make that excuse last time?</item>
<item>I can\'t help you organize your life if you do that...</item>
</string-array>
</resources>

@ -13,6 +13,11 @@
android:entries="@array/EPr_quiet_hours_end"
android:entryValues="@array/EPr_quiet_hours_end_values"
android:title="@string/rmd_EPr_quiet_hours_end_title"/>
<ListPreference
android:key="@string/p_rmd_time"
android:entries="@array/EPr_rmd_time"
android:entryValues="@array/EPr_rmd_time_values"
android:title="@string/rmd_EPr_rmd_time_title"/>
<CheckBoxPreference
android:key="@string/p_rmd_persistent"
android:title="@string/rmd_EPr_persistent_title"/>

Loading…
Cancel
Save