Inject Calendar StartupReceiver and AlarmScheduler

pull/189/head
Alex Baker 12 years ago
parent 1c12263576
commit e6905bd0b5

@ -28,7 +28,7 @@ import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.data.TaskAttachment; import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.files.FileExplore; import com.todoroo.astrid.files.FileExplore;
import com.todoroo.astrid.gcal.CalendarStartupReceiver; import com.todoroo.astrid.gcal.CalendarAlarmScheduler;
import com.todoroo.astrid.gtasks.GtasksPreferences; import com.todoroo.astrid.gtasks.GtasksPreferences;
import com.todoroo.astrid.helper.MetadataHelper; import com.todoroo.astrid.helper.MetadataHelper;
import com.todoroo.astrid.service.MarketStrategy.AmazonMarketStrategy; import com.todoroo.astrid.service.MarketStrategy.AmazonMarketStrategy;
@ -73,6 +73,7 @@ public class EditPreferences extends TodorooPreferenceActivity {
@Inject StartupService startupService; @Inject StartupService startupService;
@Inject TaskService taskService; @Inject TaskService taskService;
@Inject Preferences preferences; @Inject Preferences preferences;
@Inject CalendarAlarmScheduler calendarAlarmScheduler;
private VoiceInputAssistant voiceInputAssistant; private VoiceInputAssistant voiceInputAssistant;
@ -402,7 +403,7 @@ public class EditPreferences extends TodorooPreferenceActivity {
@Override @Override
public boolean onPreferenceChange(Preference preference, Object newValue) { public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue != null && ((Boolean) newValue)) { if (newValue != null && ((Boolean) newValue)) {
CalendarStartupReceiver.scheduleCalendarAlarms(EditPreferences.this, true); calendarAlarmScheduler.scheduleCalendarAlarms(EditPreferences.this, true);
} }
return true; return true;
} }

@ -483,7 +483,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
if (taskActionLoader.containsKey(task.getId())) { if (taskActionLoader.containsKey(task.getId())) {
return taskActionLoader.get(task.getId()); return taskActionLoader.get(task.getId());
} else { } else {
TaskAction action = LinkActionExposer.getActionsForTask(context, task, hasFiles, hasNotes); TaskAction action = LinkActionExposer.getActionsForTask(preferences, context, task, hasFiles, hasNotes);
taskActionLoader.put(task.getId(), action); taskActionLoader.put(task.getId(), action);
return action; return action;
} }

@ -18,13 +18,13 @@ import android.text.Spannable;
import android.text.style.URLSpan; import android.text.style.URLSpan;
import android.text.util.Linkify; import android.text.util.Linkify;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.api.TaskAction; import com.todoroo.astrid.api.TaskAction;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.files.FilesAction; import com.todoroo.astrid.files.FilesAction;
import com.todoroo.astrid.notes.NotesAction; import com.todoroo.astrid.notes.NotesAction;
import org.tasks.R; import org.tasks.R;
import org.tasks.preferences.Preferences;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -37,7 +37,7 @@ import java.util.List;
*/ */
public class LinkActionExposer { public class LinkActionExposer {
public static TaskAction getActionsForTask(Context context, Task task, boolean hasAttachments, boolean hasNotes) { public static TaskAction getActionsForTask(Preferences preferences, Context context, Task task, boolean hasAttachments, boolean hasNotes) {
if (task == null) { if (task == null) {
return null; return null;
} }
@ -70,7 +70,7 @@ public class LinkActionExposer {
return new FilesAction(icon); return new FilesAction(icon);
} }
if (hasNotes && !Preferences.getBoolean(R.string.p_showNotes, false)) { if (hasNotes && !preferences.getBoolean(R.string.p_showNotes, false)) {
BitmapDrawable icon = getBitmapDrawable(R.drawable.action_notes, r); BitmapDrawable icon = getBitmapDrawable(R.drawable.action_notes, r);
return new NotesAction(icon); return new NotesAction(icon);
} }

@ -9,10 +9,14 @@ import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.Preferences;
import org.tasks.R; import org.tasks.R;
import org.tasks.preferences.Preferences;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class CalendarAlarmScheduler { public class CalendarAlarmScheduler {
public static final String TAG = "calendar-alarm"; public static final String TAG = "calendar-alarm";
@ -20,8 +24,27 @@ public class CalendarAlarmScheduler {
public static final String URI_PREFIX = "cal-reminder"; public static final String URI_PREFIX = "cal-reminder";
public static final String URI_PREFIX_POSTPONE = "cal-postpone"; public static final String URI_PREFIX_POSTPONE = "cal-postpone";
public static void scheduleAllCalendarAlarms(Context context) { private final Preferences preferences;
if (!Preferences.getBoolean(R.string.p_calendar_reminders, true)) {
@Inject
public CalendarAlarmScheduler(Preferences preferences) {
this.preferences = preferences;
}
public void scheduleCalendarAlarms(final Context context, boolean force) {
if (!preferences.getBoolean(R.string.p_calendar_reminders, true) && !force) {
return;
}
new Thread(new Runnable() {
@Override
public void run() {
scheduleAllCalendarAlarms(context);
}
}).start();
}
private void scheduleAllCalendarAlarms(Context context) {
if (!preferences.getBoolean(R.string.p_calendar_reminders, true)) {
return; return;
} }
@ -57,7 +80,6 @@ public class CalendarAlarmScheduler {
long alarmTime = start - DateUtilities.ONE_MINUTE * 15; long alarmTime = start - DateUtilities.ONE_MINUTE * 15;
am.set(AlarmManager.RTC_WAKEUP, alarmTime, pendingIntent); am.set(AlarmManager.RTC_WAKEUP, alarmTime, pendingIntent);
} }
} }
// Schedule alarm to recheck and reschedule calendar alarms in 12 hours // Schedule alarm to recheck and reschedule calendar alarms in 12 hours
@ -71,7 +93,5 @@ public class CalendarAlarmScheduler {
events.close(); events.close();
} }
} }
} }
} }

@ -1,35 +1,26 @@
package com.todoroo.astrid.gcal; package com.todoroo.astrid.gcal;
import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.AstridApiConstants;
import org.tasks.R; import org.tasks.injection.InjectingBroadcastReceiver;
public class CalendarStartupReceiver extends BroadcastReceiver { import javax.inject.Inject;
public class CalendarStartupReceiver extends InjectingBroadcastReceiver {
public static final String BROADCAST_RESCHEDULE_CAL_ALARMS = AstridApiConstants.API_PACKAGE + ".SCHEDULE_CAL_REMINDERS"; //$NON-NLS-1$ public static final String BROADCAST_RESCHEDULE_CAL_ALARMS = AstridApiConstants.API_PACKAGE + ".SCHEDULE_CAL_REMINDERS"; //$NON-NLS-1$
@Inject CalendarAlarmScheduler calendarAlarmScheduler;
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context); super.onReceive(context, intent);
scheduleCalendarAlarms(context, false);
}
public static void scheduleCalendarAlarms(final Context context, boolean force) { ContextManager.setContext(context);
if (!Preferences.getBoolean(R.string.p_calendar_reminders, true) && !force) { calendarAlarmScheduler.scheduleCalendarAlarms(context, false);
return;
}
new Thread(new Runnable() {
@Override
public void run() {
CalendarAlarmScheduler.scheduleAllCalendarAlarms(context);
}
}).start();
} }
} }

@ -36,7 +36,7 @@ import com.todoroo.astrid.dao.TagDataDao;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.gcal.CalendarStartupReceiver; import com.todoroo.astrid.gcal.CalendarAlarmScheduler;
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.provider.Astrid2TaskProvider; import com.todoroo.astrid.provider.Astrid2TaskProvider;
@ -78,13 +78,15 @@ public class StartupService {
private final MetadataService metadataService; private final MetadataService metadataService;
private final Preferences preferences; private final Preferences preferences;
private final TasksXmlImporter xmlImporter; private final TasksXmlImporter xmlImporter;
private final CalendarAlarmScheduler calendarAlarmScheduler;
@Inject @Inject
public StartupService(UpgradeService upgradeService, TaskService taskService, public StartupService(UpgradeService upgradeService, TaskService taskService,
TagDataDao tagDataDao, Database database, TagDataDao tagDataDao, Database database,
GtasksPreferenceService gtasksPreferenceService, GtasksPreferenceService gtasksPreferenceService,
GtasksSyncService gtasksSyncService, MetadataService metadataService, GtasksSyncService gtasksSyncService, MetadataService metadataService,
Preferences preferences, TasksXmlImporter xmlImporter) { Preferences preferences, TasksXmlImporter xmlImporter,
CalendarAlarmScheduler calendarAlarmScheduler) {
this.upgradeService = upgradeService; this.upgradeService = upgradeService;
this.taskService = taskService; this.taskService = taskService;
this.tagDataDao = tagDataDao; this.tagDataDao = tagDataDao;
@ -94,6 +96,7 @@ public class StartupService {
this.metadataService = metadataService; this.metadataService = metadataService;
this.preferences = preferences; this.preferences = preferences;
this.xmlImporter = xmlImporter; this.xmlImporter = xmlImporter;
this.calendarAlarmScheduler = calendarAlarmScheduler;
} }
/** /**
@ -199,7 +202,7 @@ public class StartupService {
preferences.setDefaults(); preferences.setDefaults();
CalendarStartupReceiver.scheduleCalendarAlarms(context, false); // This needs to be after set preference defaults for the purposes of ab testing calendarAlarmScheduler.scheduleCalendarAlarms(context, false); // This needs to be after set preference defaults for the purposes of ab testing
showTaskKillerHelp(context); showTaskKillerHelp(context);

@ -9,6 +9,7 @@ import com.todoroo.astrid.calls.PhoneStateChangedReceiver;
import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.CoreFilterExposer;
import com.todoroo.astrid.core.CustomFilterExposer; import com.todoroo.astrid.core.CustomFilterExposer;
import com.todoroo.astrid.gcal.CalendarAlarmReceiver; import com.todoroo.astrid.gcal.CalendarAlarmReceiver;
import com.todoroo.astrid.gcal.CalendarStartupReceiver;
import com.todoroo.astrid.gcal.GCalTaskCompleteListener; import com.todoroo.astrid.gcal.GCalTaskCompleteListener;
import com.todoroo.astrid.gtasks.GtasksCustomFilterCriteriaExposer; import com.todoroo.astrid.gtasks.GtasksCustomFilterCriteriaExposer;
import com.todoroo.astrid.gtasks.GtasksDetailExposer; import com.todoroo.astrid.gtasks.GtasksDetailExposer;
@ -59,7 +60,8 @@ import dagger.Provides;
GtasksFilterExposer.class, GtasksFilterExposer.class,
TagFilterExposer.class, TagFilterExposer.class,
BackupStartupReceiver.class, BackupStartupReceiver.class,
CalendarAlarmReceiver.class CalendarAlarmReceiver.class,
CalendarStartupReceiver.class
}) })
public class BroadcastModule { public class BroadcastModule {

Loading…
Cancel
Save