From cc76e6d1780407e03505fdcce17d7f3df7106cac Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Tue, 8 May 2012 17:29:18 -0700 Subject: [PATCH] Fixed many bugs with people filters --- .../astrid/people/PeopleFilterExposer.java | 47 +++++-------------- .../astrid/people/PersonViewFragment.java | 6 +++ .../astrid/activity/TaskListFragment.java | 2 +- .../todoroo/astrid/service/TaskService.java | 3 ++ .../com/todoroo/astrid/ui/QuickAddBar.java | 8 +++- 5 files changed, 30 insertions(+), 36 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterExposer.java b/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterExposer.java index 859430ced..e5fd39c37 100644 --- a/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/people/PeopleFilterExposer.java @@ -1,5 +1,8 @@ package com.todoroo.astrid.people; +import org.json.JSONException; +import org.json.JSONObject; + import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentValues; @@ -10,22 +13,18 @@ import android.os.Bundle; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.sql.Criterion; -import com.todoroo.andlib.sql.Field; -import com.todoroo.andlib.sql.Join; import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.Query; import com.todoroo.andlib.sql.QueryTemplate; +import com.todoroo.astrid.actfm.sync.ActFmSyncService; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.api.FilterWithUpdate; import com.todoroo.astrid.core.PluginServices; -import com.todoroo.astrid.data.Metadata; -import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.User; -import com.todoroo.astrid.tags.TagService; public class PeopleFilterExposer extends BroadcastReceiver { @Override @@ -60,38 +59,11 @@ public class PeopleFilterExposer extends BroadcastReceiver { @SuppressWarnings("nls") public static FilterWithCustomIntent filterFromUserData(User user) { String email = user.getValue(User.EMAIL); - String[] tags; - - TodorooCursor tagsWithUser = PluginServices.getTagDataService().query(Query.select(TagData.NAME) - .where(Criterion.or( - TagData.MEMBERS.like("%" + email + "%"), - TagData.USER.like("%" + email + "%"), - TagData.USER_ID.eq(user.getId())))); - try { - if (tagsWithUser.getCount() == 0) { - tags = new String[1]; - tags[0] = "\"\""; - } else { - tags = new String[tagsWithUser.getCount()]; - int i = 0; - TagData curr = new TagData(); - for (tagsWithUser.moveToFirst(); !tagsWithUser.isAfterLast(); tagsWithUser.moveToNext()) { - curr.readFromCursor(tagsWithUser); - tags[i] = "\"" + curr.getValue(TagData.NAME) + "\""; - i++; - } - } - } finally { - tagsWithUser.close(); - } String title = user.getDisplayName(); - QueryTemplate userTemplate = new QueryTemplate().join(Join.inner(Metadata.TABLE.as("mtags"), - Criterion.and(Task.ID.eq(Field.field("mtags." + Metadata.TASK.name)), - Field.field("mtags." + Metadata.KEY.name).eq(TagService.KEY), - Field.field("mtags." + TagService.TAG.name).in(tags), + QueryTemplate userTemplate = new QueryTemplate().where( Criterion.or(Task.USER.like("%" + email + "%"), - Task.USER_ID.eq(user.getValue(User.REMOTE_ID)))))); + Task.USER_ID.eq(user.getValue(User.REMOTE_ID)))); FilterWithUpdate filter = new FilterWithUpdate(title, title, userTemplate, null); @@ -99,6 +71,13 @@ public class PeopleFilterExposer extends BroadcastReceiver { ContentValues values = new ContentValues(); values.put(Task.USER_ID.name, user.getValue(User.REMOTE_ID)); + try { + JSONObject userJson = new JSONObject(); + ActFmSyncService.JsonHelper.jsonFromUser(userJson, user); + values.put(Task.USER.name, userJson.toString()); + } catch (JSONException e) { + // Ignored + } filter.valuesForNewTasks = values; String imageUrl = user.getValue(User.PICTURE); diff --git a/astrid/plugin-src/com/todoroo/astrid/people/PersonViewFragment.java b/astrid/plugin-src/com/todoroo/astrid/people/PersonViewFragment.java index 05056c817..142e3510b 100644 --- a/astrid/plugin-src/com/todoroo/astrid/people/PersonViewFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/people/PersonViewFragment.java @@ -20,4 +20,10 @@ public class PersonViewFragment extends TaskListFragment { return parent; } + @Override + protected void setupQuickAddBar() { + super.setupQuickAddBar(); + quickAddBar.setUsePeopleControl(false); + } + } diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java index f24e4308c..71848b39a 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java @@ -509,7 +509,7 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, getView().findViewById(R.id.progressBar).setVisibility(View.GONE); } - private void setupQuickAddBar() { + protected void setupQuickAddBar() { quickAddBar = (QuickAddBar) getView().findViewById(R.id.taskListFooter); quickAddBar.initialize(getActivity(), this, mListener); diff --git a/astrid/src/com/todoroo/astrid/service/TaskService.java b/astrid/src/com/todoroo/astrid/service/TaskService.java index 1e74be88f..6a6389b28 100644 --- a/astrid/src/com/todoroo/astrid/service/TaskService.java +++ b/astrid/src/com/todoroo/astrid/service/TaskService.java @@ -505,6 +505,9 @@ public class TaskService { task.mergeWith(forTask); } + if (task.getValue(Task.USER_ID) != Task.USER_ID_SELF) + task.putTransitory(TRANS_ASSIGNED, true); + boolean markup = taskService.quickAdd(task); if (markup) task.putTransitory(TRANS_QUICK_ADD_MARKUP, true); diff --git a/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java b/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java index 4a23a367e..fd54d35c1 100644 --- a/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java +++ b/astrid/src/com/todoroo/astrid/ui/QuickAddBar.java @@ -70,6 +70,7 @@ public class QuickAddBar extends LinearLayout { private RepeatControlSet repeatControl; private GCalControlSet gcalControl; private EditPeopleControlSet peopleControl; + private boolean usePeopleControl = true; @Autowired AddOnService addOnService; @Autowired ExceptionService exceptionService; @@ -178,6 +179,11 @@ public class QuickAddBar extends LinearLayout { setUpQuickAddControlSets(); } + public void setUsePeopleControl(boolean usePeopleControl) { + this.usePeopleControl = usePeopleControl; + peopleControl.getDisplayView().setVisibility(usePeopleControl ? View.VISIBLE : View.GONE); + } + private void setUpQuickAddControlSets() { repeatControl = new RepeatControlSet(activity, @@ -245,7 +251,7 @@ public class QuickAddBar extends LinearLayout { try { if (title != null) title = title.trim(); - boolean assignedToMe = peopleControl.willBeAssignedToMe(); + boolean assignedToMe = usePeopleControl ? peopleControl.willBeAssignedToMe() : true; if (!assignedToMe && !actFmPreferenceService.isLoggedIn()) { DialogInterface.OnClickListener okListener = new DialogInterface.OnClickListener() { @Override