First pass at rescheduling cal alarms every 12 hours

pull/14/head
Sam Bosley 13 years ago
parent 79515e85d2
commit 162e27cd0b

@ -227,8 +227,6 @@
</intent-filter> </intent-filter>
</receiver> </receiver>
<receiver android:name="com.todoroo.astrid.gcal.CalendarAlarmReceiver" />
<receiver android:name="com.todoroo.astrid.reminders.ReengagementReceiver"> <receiver android:name="com.todoroo.astrid.reminders.ReengagementReceiver">
<intent-filter> <intent-filter>
<action android:name="com.timsu.astrid.SHOW_REENGAGEMENT"/> <action android:name="com.timsu.astrid.SHOW_REENGAGEMENT"/>
@ -293,14 +291,6 @@
<activity android:name="com.todoroo.astrid.calls.MissedCallActivity" <activity android:name="com.todoroo.astrid.calls.MissedCallActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"> android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity> </activity>
<activity android:name="com.todoroo.astrid.gcal.CalendarReminderActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
<activity android:name="com.todoroo.astrid.gcal.CreateEventListActivity"
android:theme="@android:style/Theme.Dialog">
</activity>
<!-- tags --> <!-- tags -->
<receiver android:name="com.todoroo.astrid.tags.TagsPlugin"> <receiver android:name="com.todoroo.astrid.tags.TagsPlugin">
@ -512,6 +502,27 @@
</intent-filter> </intent-filter>
</receiver> </receiver>
<receiver android:name="com.todoroo.astrid.gcal.CalendarStartupReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="com.todoroo.astrid.SCHEDULE_CAL_REMINDERS"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<activity android:name="com.todoroo.astrid.gcal.CalendarReminderActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
</activity>
<activity android:name="com.todoroo.astrid.gcal.CreateEventListActivity"
android:theme="@android:style/Theme.Dialog">
</activity>
<receiver android:name="com.todoroo.astrid.gcal.CalendarAlarmReceiver" />
<!-- old tasks --> <!-- old tasks -->
<activity android:name="com.todoroo.astrid.core.OldTaskPreferences" <activity android:name="com.todoroo.astrid.core.OldTaskPreferences"
android:theme="@android:style/Theme" android:theme="@android:style/Theme"

@ -28,6 +28,7 @@ public class CalendarAlarmScheduler {
long now = DateUtilities.now(); long now = DateUtilities.now();
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Cursor events = cr.query(Calendars.getCalendarContentUri(Calendars.CALENDAR_CONTENT_EVENTS), Cursor events = cr.query(Calendars.getCalendarContentUri(Calendars.CALENDAR_CONTENT_EVENTS),
new String[] { Calendars.ID_COLUMN_NAME, Calendars.EVENTS_DTSTART_COL }, new String[] { Calendars.ID_COLUMN_NAME, Calendars.EVENTS_DTSTART_COL },
Calendars.EVENTS_DTSTART_COL + " > ? AND " + Calendars.EVENTS_DTSTART_COL + " < ?", Calendars.EVENTS_DTSTART_COL + " > ? AND " + Calendars.EVENTS_DTSTART_COL + " < ?",
@ -50,7 +51,6 @@ public class CalendarAlarmScheduler {
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
CalendarAlarmReceiver.REQUEST_CODE_CAL_REMINDER, eventAlarm, 0); CalendarAlarmReceiver.REQUEST_CODE_CAL_REMINDER, eventAlarm, 0);
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
am.cancel(pendingIntent); am.cancel(pendingIntent);
long alarmTime = start - DateUtilities.ONE_MINUTE * 15; long alarmTime = start - DateUtilities.ONE_MINUTE * 15;
@ -61,6 +61,13 @@ public class CalendarAlarmScheduler {
} }
} }
// Schedule alarm to recheck and reschedule calendar alarms in 12 hours
Intent rescheduleAlarm = new Intent(CalendarStartupReceiver.BROADCAST_RESCHEDULE_CAL_ALARMS);
PendingIntent pendingReschedule = PendingIntent.getBroadcast(context, 0,
rescheduleAlarm, 0);
am.cancel(pendingReschedule);
am.set(AlarmManager.RTC, DateUtilities.now() + DateUtilities.ONE_HOUR * 12, pendingReschedule);
} finally { } finally {
events.close(); events.close();
} }

@ -0,0 +1,33 @@
package com.todoroo.astrid.gcal;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.api.AstridApiConstants;
public class CalendarStartupReceiver extends BroadcastReceiver {
public static final String BROADCAST_RESCHEDULE_CAL_ALARMS = AstridApiConstants.PACKAGE + ".SCHEDULE_CAL_REMINDERS"; //$NON-NLS-1$
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
scheduleCalendarAlarms(context);
}
public static void scheduleCalendarAlarms(final Context context) {
if (!Preferences.getBoolean(R.string.p_calendar_reminders, true))
return;
new Thread(new Runnable() {
@Override
public void run() {
CalendarAlarmScheduler.scheduleAllCalendarAlarms(context);
}
}).start();
}
}

@ -46,7 +46,7 @@ import com.todoroo.astrid.backup.BackupService;
import com.todoroo.astrid.backup.TasksXmlImporter; import com.todoroo.astrid.backup.TasksXmlImporter;
import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.CalendarAlarmScheduler; import com.todoroo.astrid.gcal.CalendarStartupReceiver;
import com.todoroo.astrid.gtasks.GtasksPreferenceService; import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import com.todoroo.astrid.gtasks.sync.GtasksSyncService; import com.todoroo.astrid.gtasks.sync.GtasksSyncService;
import com.todoroo.astrid.opencrx.OpencrxCoreUtils; import com.todoroo.astrid.opencrx.OpencrxCoreUtils;
@ -120,7 +120,6 @@ public class StartupService {
if(hasStartedUp || context == null) if(hasStartedUp || context == null)
return; return;
// sets up context manager // sets up context manager
ContextManager.setContext(context); ContextManager.setContext(context);
@ -192,8 +191,6 @@ public class StartupService {
AstridPreferences.setCurrentVersionName(versionName); AstridPreferences.setCurrentVersionName(versionName);
} }
CalendarAlarmScheduler.scheduleAllCalendarAlarms(context);
upgradeService.performSecondaryUpgrade(context); upgradeService.performSecondaryUpgrade(context);
final int finalLatestVersion = latestSetVersion; final int finalLatestVersion = latestSetVersion;
@ -225,6 +222,7 @@ public class StartupService {
// perform initialization // perform initialization
ReminderStartupReceiver.startReminderSchedulingService(context); ReminderStartupReceiver.startReminderSchedulingService(context);
CalendarStartupReceiver.scheduleCalendarAlarms(context);
BackupService.scheduleService(context); BackupService.scheduleService(context);
actFmSyncService.initialize(); actFmSyncService.initialize();

Loading…
Cancel
Save