diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml index 26c17a9f4..2497b6575 100644 --- a/astrid/AndroidManifest.xml +++ b/astrid/AndroidManifest.xml @@ -137,6 +137,12 @@ android:resource="@xml/widget_provider_info" /> + + + + + + diff --git a/astrid/api-src/com/todoroo/astrid/api/AstridApiConstants.java b/astrid/api-src/com/todoroo/astrid/api/AstridApiConstants.java index d31d93bb8..c4a81e15e 100644 --- a/astrid/api-src/com/todoroo/astrid/api/AstridApiConstants.java +++ b/astrid/api-src/com/todoroo/astrid/api/AstridApiConstants.java @@ -217,6 +217,14 @@ public class AstridApiConstants { */ public static final String BROADCAST_EVENT_REFRESH = PACKAGE + ".REFRESH"; + /** + * Action name for broadcast intent notifying Astrid to clear detail cache + * because an event occurred that potentially affects all tasks (e.g. + * logging out of a sync provider). Use this call carefully, as loading + * details can degrade the performance of Astrid. + */ + public static final String BROADCAST_EVENT_FLUSH_DETAILS = PACKAGE + ".FLUSH_DETAILS"; + /** * Action name for broadcast intent notifying that task was completed * @extra EXTRAS_TASK_ID id of the task diff --git a/astrid/src/com/todoroo/astrid/activity/EditPreferences.java b/astrid/src/com/todoroo/astrid/activity/EditPreferences.java index e7a897875..6afd38e77 100644 --- a/astrid/src/com/todoroo/astrid/activity/EditPreferences.java +++ b/astrid/src/com/todoroo/astrid/activity/EditPreferences.java @@ -28,7 +28,6 @@ import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.widget.TodorooPreferences; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.dao.Database; -import com.todoroo.astrid.dao.TaskDao; import com.todoroo.astrid.model.Task; import com.todoroo.astrid.service.StartupService; import com.todoroo.astrid.service.TaskService; @@ -49,16 +48,13 @@ public class EditPreferences extends TodorooPreferences { // --- instance variables @Autowired - TaskService taskService; // for debugging + private TaskService taskService; // for debugging @Autowired - TaskDao taskDao; + private Database database; @Autowired - Database database; - - @Autowired - DialogUtilities dialogUtilities; + private DialogUtilities dialogUtilities; public EditPreferences() { DependencyInjectionService.getInstance().inject(this); @@ -176,7 +172,7 @@ public class EditPreferences extends TodorooPreferences { preference.setOnPreferenceClickListener(new OnPreferenceClickListener() { public boolean onPreferenceClick(Preference p) { database.openForWriting(); - taskDao.deleteWhere(Criterion.all); + taskService.deleteWhere(Criterion.all); dialogUtilities.okDialog(EditPreferences.this, "done", null); return false; } diff --git a/astrid/src/com/todoroo/astrid/service/GlobalEventReceiver.java b/astrid/src/com/todoroo/astrid/service/GlobalEventReceiver.java new file mode 100644 index 000000000..85ae949a8 --- /dev/null +++ b/astrid/src/com/todoroo/astrid/service/GlobalEventReceiver.java @@ -0,0 +1,41 @@ +package com.todoroo.astrid.service; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.service.DependencyInjectionService; +import com.todoroo.astrid.api.AstridApiConstants; +import com.todoroo.astrid.utility.Flags; + +/** + * BroadcastReceiver for receiving Astrid events not associated with a + * specific activity + * + * @author Tim Su + * + */ +public final class GlobalEventReceiver extends BroadcastReceiver { + + static { + AstridDependencyInjector.initialize(); + } + + @Autowired + private TaskService taskService; + + @Override + public void onReceive(Context context, Intent intent) { + if(intent == null) + return; + + DependencyInjectionService.getInstance().inject(this); + + if(AstridApiConstants.BROADCAST_EVENT_FLUSH_DETAILS.equals(intent.getAction())) { + taskService.clearDetails(); + Flags.set(Flags.REFRESH); + } + } + +} diff --git a/astrid/src/com/todoroo/astrid/service/TaskService.java b/astrid/src/com/todoroo/astrid/service/TaskService.java index da61e96a2..ae0f28f8d 100644 --- a/astrid/src/com/todoroo/astrid/service/TaskService.java +++ b/astrid/src/com/todoroo/astrid/service/TaskService.java @@ -282,6 +282,12 @@ public class TaskService { } } - + /** + * Delete all tasks matching a given criterion + * @param all + */ + public void deleteWhere(Criterion criteria) { + taskDao.deleteWhere(criteria); + } } diff --git a/astrid/src/com/todoroo/astrid/utility/Constants.java b/astrid/src/com/todoroo/astrid/utility/Constants.java index d564ba8e7..b2c2f81da 100644 --- a/astrid/src/com/todoroo/astrid/utility/Constants.java +++ b/astrid/src/com/todoroo/astrid/utility/Constants.java @@ -21,11 +21,6 @@ public final class Constants { */ public static final boolean OEM = false; - /** - * Whether this is an installation with sync disabled - */ - public static final boolean SYNC = true; - /** * Interval to update the widget (in order to detect hidden tasks * becoming visible)