diff --git a/astrid/AndroidManifest.xml b/astrid/AndroidManifest.xml
index 56bd26d27..626769be1 100644
--- a/astrid/AndroidManifest.xml
+++ b/astrid/AndroidManifest.xml
@@ -244,6 +244,12 @@
+
+
+
+
+
+
diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksCustomFilterCriteriaExposer.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksCustomFilterCriteriaExposer.java
new file mode 100644
index 000000000..29bb639df
--- /dev/null
+++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksCustomFilterCriteriaExposer.java
@@ -0,0 +1,89 @@
+package com.todoroo.astrid.gtasks;
+
+import android.content.BroadcastReceiver;
+import android.content.ContentValues;
+import android.content.Context;
+import android.content.Intent;
+import android.content.res.Resources;
+import android.graphics.drawable.BitmapDrawable;
+
+import com.timsu.astrid.R;
+import com.todoroo.andlib.data.AbstractModel;
+import com.todoroo.andlib.service.Autowired;
+import com.todoroo.andlib.service.ContextManager;
+import com.todoroo.andlib.service.DependencyInjectionService;
+import com.todoroo.andlib.sql.Criterion;
+import com.todoroo.andlib.sql.Join;
+import com.todoroo.andlib.sql.Query;
+import com.todoroo.astrid.api.AstridApiConstants;
+import com.todoroo.astrid.api.CustomFilterCriterion;
+import com.todoroo.astrid.api.MultipleSelectCriterion;
+import com.todoroo.astrid.dao.TaskDao;
+import com.todoroo.astrid.data.Metadata;
+import com.todoroo.astrid.data.MetadataApiDao.MetadataCriteria;
+import com.todoroo.astrid.data.StoreObject;
+import com.todoroo.astrid.data.Task;
+import com.todoroo.astrid.service.AstridDependencyInjector;
+
+public class GtasksCustomFilterCriteriaExposer extends BroadcastReceiver {
+ @Autowired private GtasksPreferenceService gtasksPreferenceService;
+ @Autowired private GtasksListService gtasksListService;
+
+ private static final String IDENTIFIER = "gtaskslist"; //$NON-NLS-1$
+
+ static {
+ AstridDependencyInjector.initialize();
+ }
+
+ @SuppressWarnings("nls")
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ ContextManager.setContext(context);
+ DependencyInjectionService.getInstance().inject(this);
+
+ // if we aren't logged in, don't expose sync action
+ if(!gtasksPreferenceService.isLoggedIn())
+ return;
+
+ Resources r = context.getResources();
+
+
+ StoreObject[] lists = gtasksListService.getLists();
+
+ CustomFilterCriterion[] result = new CustomFilterCriterion[1];
+ String[] listNames = new String[lists.length];
+ String[] listIds = new String[lists.length];
+ for (int i = 0; i < lists.length; i++) {
+ listNames[i] = lists[i].getValue(GtasksList.NAME);
+ listIds[i] = lists[i].getValue(GtasksList.REMOTE_ID);
+ }
+
+ ContentValues values = new ContentValues();
+ values.putAll(GtasksMetadata.createEmptyMetadata(AbstractModel.NO_ID).getMergedValues());
+ values.remove(Metadata.TASK.name);
+ values.put(GtasksMetadata.LIST_ID.name, "?");
+
+ CustomFilterCriterion criterion = new MultipleSelectCriterion(
+ IDENTIFIER,
+ context.getString(R.string.CFC_gtasks_list_text),
+
+ Query.select(Metadata.TASK).from(Metadata.TABLE).join(Join.inner(
+ Task.TABLE, Metadata.TASK.eq(Task.ID))).where(Criterion.and(
+ TaskDao.TaskCriteria.activeAndVisible(),
+ MetadataCriteria.withKey(GtasksMetadata.METADATA_KEY),
+ GtasksMetadata.LIST_ID.eq("?"))).toString(),
+
+ values,
+ listNames,
+ listIds,
+ ((BitmapDrawable)r.getDrawable(R.drawable.gtasks_icon)).getBitmap(),
+ context.getString(R.string.CFC_gtasks_list_name));
+ result[0] = criterion;
+
+ // transmit filter list
+ Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_SEND_CUSTOM_FILTER_CRITERIA);
+ broadcastIntent.putExtra(AstridApiConstants.EXTRAS_ADDON, GtasksPreferenceService.IDENTIFIER);
+ broadcastIntent.putExtra(AstridApiConstants.EXTRAS_RESPONSE, result);
+ context.sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
+ }
+}
diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksFilterExposer.java
index af208cbaf..01837098b 100644
--- a/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksFilterExposer.java
+++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/GtasksFilterExposer.java
@@ -26,11 +26,11 @@ import com.todoroo.astrid.api.FilterCategory;
import com.todoroo.astrid.api.FilterListHeader;
import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.api.FilterWithCustomIntent;
+import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.MetadataApiDao.MetadataCriteria;
import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.data.Task;
-import com.todoroo.astrid.data.TaskApiDao.TaskCriteria;
import com.todoroo.astrid.service.AstridDependencyInjector;
/**
@@ -60,8 +60,7 @@ public class GtasksFilterExposer extends BroadcastReceiver {
ContextManager.getString(R.string.gtasks_FEx_title, listName), new QueryTemplate().join(
Join.left(Metadata.TABLE, Task.ID.eq(Metadata.TASK))).where(Criterion.and(
MetadataCriteria.withKey(GtasksMetadata.METADATA_KEY),
- TaskCriteria.notDeleted(),
- TaskCriteria.isActive(),
+ TaskCriteria.activeAndVisible(),
GtasksMetadata.LIST_ID.eq(list.getValue(GtasksList.REMOTE_ID)))).orderBy(
Order.asc(Functions.cast(GtasksMetadata.ORDER, "INTEGER"))), //$NON-NLS-1$
values);
diff --git a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncProvider.java b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncProvider.java
index 8c2d2446f..c02b45136 100644
--- a/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncProvider.java
+++ b/astrid/plugin-src/com/todoroo/astrid/gtasks/sync/GtasksSyncProvider.java
@@ -31,6 +31,7 @@ import com.todoroo.andlib.utility.AndroidUtilities;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.andlib.utility.DialogUtilities;
import com.todoroo.andlib.utility.Preferences;
+import com.todoroo.astrid.api.AstridApiConstants;
import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.StoreObject;
@@ -49,21 +50,20 @@ import com.todoroo.astrid.service.StatisticsService;
import com.todoroo.astrid.sync.SyncContainer;
import com.todoroo.astrid.sync.SyncProvider;
import com.todoroo.astrid.utility.Constants;
-import com.todoroo.astrid.utility.Flags;
import com.todoroo.gtasks.GoogleConnectionManager;
import com.todoroo.gtasks.GoogleLoginException;
import com.todoroo.gtasks.GoogleTaskService;
+import com.todoroo.gtasks.GoogleTaskService.ConvenientTaskCreator;
import com.todoroo.gtasks.GoogleTaskTask;
import com.todoroo.gtasks.GoogleTaskView;
import com.todoroo.gtasks.GoogleTasksException;
-import com.todoroo.gtasks.GoogleTaskService.ConvenientTaskCreator;
import com.todoroo.gtasks.actions.Actions;
import com.todoroo.gtasks.actions.GetTasksAction;
import com.todoroo.gtasks.actions.ListAction;
import com.todoroo.gtasks.actions.ListActions;
-import com.todoroo.gtasks.actions.ListCreationAction;
import com.todoroo.gtasks.actions.ListActions.TaskBuilder;
import com.todoroo.gtasks.actions.ListActions.TaskModifier;
+import com.todoroo.gtasks.actions.ListCreationAction;
@SuppressWarnings("nls")
public class GtasksSyncProvider extends SyncProvider {
@@ -226,7 +226,8 @@ public class GtasksSyncProvider extends SyncProvider {
gtasksPreferenceService.recordSuccessfulSync();
StatisticsService.reportEvent("gtasks-sync-finished"); //$NON-NLS-1$
- Flags.set(Flags.REFRESH);
+ Intent broadcastIntent = new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH);
+ ContextManager.getContext().sendBroadcast(broadcastIntent, AstridApiConstants.PERMISSION_READ);
} catch (IllegalStateException e) {
// occurs when application was closed
} catch (Exception e) {
diff --git a/astrid/plugin-src/com/todoroo/astrid/producteev/ProducteevCustomFilterCriteriaExposer.java b/astrid/plugin-src/com/todoroo/astrid/producteev/ProducteevCustomFilterCriteriaExposer.java
index 7656a2a14..cfc065fba 100644
--- a/astrid/plugin-src/com/todoroo/astrid/producteev/ProducteevCustomFilterCriteriaExposer.java
+++ b/astrid/plugin-src/com/todoroo/astrid/producteev/ProducteevCustomFilterCriteriaExposer.java
@@ -56,7 +56,7 @@ public class ProducteevCustomFilterCriteriaExposer extends BroadcastReceiver {
workspaceNames[i] = dashboards[i].getName();
workspaceIds[i] = String.valueOf(dashboards[i].getId());
}
- ContentValues values = new ContentValues(2);
+ ContentValues values = new ContentValues();
values.put(Metadata.KEY.name, ProducteevTask.METADATA_KEY);
values.put(ProducteevTask.DASHBOARD_ID.name, "?");
CustomFilterCriterion criterion = new MultipleSelectCriterion(
@@ -68,7 +68,7 @@ public class ProducteevCustomFilterCriteriaExposer extends BroadcastReceiver {
TaskDao.TaskCriteria.activeAndVisible(),
MetadataDao.MetadataCriteria.withKey(ProducteevTask.METADATA_KEY),
ProducteevTask.DASHBOARD_ID.eq("?"))).toString(),
- values, // what is this?
+ values,
workspaceNames,
workspaceIds,
((BitmapDrawable)r.getDrawable(R.drawable.silk_folder)).getBitmap(),
@@ -102,7 +102,7 @@ public class ProducteevCustomFilterCriteriaExposer extends BroadcastReceiver {
TaskDao.TaskCriteria.activeAndVisible(),
MetadataDao.MetadataCriteria.withKey(ProducteevTask.METADATA_KEY),
ProducteevTask.RESPONSIBLE_ID.eq("?"))).toString(),
- values, // what is this?
+ values,
userNames,
userIds,
((BitmapDrawable)r.getDrawable(R.drawable.silk_user_gray)).getBitmap(),
diff --git a/astrid/res/values/strings-gtasks.xml b/astrid/res/values/strings-gtasks.xml
index a4271fc21..c163695b4 100644
--- a/astrid/res/values/strings-gtasks.xml
+++ b/astrid/res/values/strings-gtasks.xml
@@ -19,6 +19,10 @@
Drag the grabber on the left side of a task
to rearrange it. Swipe the grabber left or right to change indentation.
+
+ In list: ?
+
+ In list...