Getting alarms to work again

pull/14/head
Tim Su 15 years ago
parent 6b4f87598b
commit c26fdbf8c0

@ -60,9 +60,9 @@ public class AlarmDetailExposer extends BroadcastReceiver {
if(nextTime == -1)
return null;
CharSequence durationString = DateUtils.getRelativeDateTimeString(context,
nextTime, DateUtils.MINUTE_IN_MILLIS, DateUtils.WEEK_IN_MILLIS,
DateUtils.FORMAT_ABBREV_ALL);
CharSequence durationString = DateUtils.formatDateTime(context, nextTime,
DateUtils.FORMAT_NUMERIC_DATE | DateUtils.FORMAT_SHOW_TIME |
DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR);
return context.getString(R.string.alarm_ADE_detail, durationString);
} finally {
cursor.close();

@ -25,6 +25,7 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.reminders.Notifications;
import com.todoroo.astrid.reminders.ReminderService;
import com.todoroo.astrid.service.MetadataService;
import com.todoroo.astrid.utility.Constants;
/**
* Provides operations for working with alerts
@ -77,7 +78,10 @@ public class AlarmService {
metadata.add(item);
}
return service.synchronizeMetadata(taskId, metadata, Metadata.KEY.eq(AlarmFields.METADATA_KEY)) > 0;
boolean changed = service.synchronizeMetadata(taskId, metadata, Metadata.KEY.eq(AlarmFields.METADATA_KEY)) > 0;
if(changed)
scheduleAlarms(taskId);
return changed;
}
// --- alarm scheduling
@ -99,7 +103,7 @@ public class AlarmService {
* @return todoroo cursor. PLEASE CLOSE THIS CURSOR!
*/
private TodorooCursor<Metadata> getAlarmsForTask(long taskId) {
return PluginServices.getMetadataService().query(Query.select(AlarmFields.TIME).
return PluginServices.getMetadataService().query(Query.select(Metadata.TASK, AlarmFields.TIME).
join(Join.inner(Task.TABLE, Metadata.TASK.eq(Task.ID))).
where(Criterion.and(TaskCriteria.isActive(),
MetadataCriteria.byTaskAndwithKey(taskId, AlarmFields.METADATA_KEY))));
@ -129,8 +133,8 @@ public class AlarmService {
* Schedules alarms for a single task
* @param task
*/
public void scheduleAlarms(Task task) {
TodorooCursor<Metadata> cursor = getAlarmsForTask(task.getId());
public void scheduleAlarms(long taskId) {
TodorooCursor<Metadata> cursor = getAlarmsForTask(taskId);
try {
Metadata alarm = new Metadata();
for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
@ -138,7 +142,7 @@ public class AlarmService {
scheduleAlarm(alarm);
}
} catch (Exception e) {
// suppress
Log.i("astrid-alarms", "Error scheduling alarm", e); //$NON-NLS-1$ //$NON-NLS-2$
} finally {
cursor.close();
}
@ -173,6 +177,7 @@ public class AlarmService {
if(time == 0 || time == NO_ALARM)
am.cancel(pendingIntent);
else if(time > DateUtilities.now()) {
if(Constants.DEBUG)
Log.e("Astrid", "Alarm (" + taskId + ", " + type +
") set for " + new Date(time));
am.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);

@ -356,7 +356,7 @@ public final class ReminderService {
time = DateUtilities.now() + 5000L;
if(Constants.DEBUG)
Log.e("Astrid", "Alarm (" + task.getId() + ", " + type +
Log.e("Astrid", "Reminder (" + task.getId() + ", " + type +
") set for " + new Date(time));
am.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);
}

@ -11,7 +11,7 @@
<string name="alarm_ACS_button">Add an Alarm</string>
<!-- Task Detail for Alarms (%s -> time)-->
<string name="alarm_ADE_detail">Alarm %s</string>
<string name="alarm_ADE_detail">Alarm: %s</string>
<string-array name="reminders_alarm">
<!-- reminders related to alarm -->

Loading…
Cancel
Save