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)