From aa29b74554fe929e4397b197cb03ecd6308f04cd Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 16 Jan 2013 14:16:26 -0800 Subject: [PATCH] When filtering list by assigned, order and indent should be ignored --- .../todoroo/astrid/actfm/TagViewFragment.java | 8 +++++- .../subtasks/SubtasksTagListFragment.java | 2 +- .../astrid/subtasks/SubtasksTagUpdater.java | 27 +++++++++++++++---- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java index d1f2e313d..468eac34b 100644 --- a/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/actfm/TagViewFragment.java @@ -5,6 +5,8 @@ */ package com.todoroo.astrid.actfm; +import java.util.concurrent.atomic.AtomicBoolean; + import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -99,7 +101,9 @@ public class TagViewFragment extends TaskListFragment { private boolean dataLoaded = false; - private long currentId; + private long currentId = Task.USER_ID_IGNORE; + + protected AtomicBoolean isBeingFiltered = new AtomicBoolean(false); private Filter originalFilter; @@ -428,6 +432,7 @@ public class TagViewFragment extends TaskListFragment { else filterByAssigned.setText(getString(R.string.actfm_TVA_filtered_by_assign, displayName)); } + isBeingFiltered.set(true); setUpTaskList(); } } @@ -443,6 +448,7 @@ public class TagViewFragment extends TaskListFragment { private void resetAssignedFilter() { currentId = Task.USER_ID_IGNORE; + isBeingFiltered.set(false); filter = originalFilter; View filterAssigned = getView().findViewById(R.id.filter_assigned); if (filterAssigned != null) diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java index 8ae8db831..2707bf38f 100644 --- a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java @@ -21,7 +21,7 @@ public class SubtasksTagListFragment extends TagViewFragment { public SubtasksTagListFragment() { super(); - helper = new AstridOrderedListFragmentHelper(this, new SubtasksTagUpdater()); + helper = new AstridOrderedListFragmentHelper(this, new SubtasksTagUpdater(isBeingFiltered)); } @Override diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagUpdater.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagUpdater.java index 77341f0d7..17ad2c080 100644 --- a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagUpdater.java +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagUpdater.java @@ -1,13 +1,21 @@ package com.todoroo.astrid.subtasks; +import java.util.concurrent.atomic.AtomicBoolean; + import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.data.TagData; public class SubtasksTagUpdater extends SubtasksUpdater { + private final AtomicBoolean isBeingFiltered; + + public SubtasksTagUpdater(AtomicBoolean isBeingFiltered) { + this.isBeingFiltered = isBeingFiltered; + } + @Override protected String getSerializedTree(TagData list, Filter filter) { - if (list == null) + if (list == null || isBeingFiltered.get()) return "[]"; //$NON-NLS-1$ String order = list.getValue(TagData.TAG_ORDERING); if (order == null || "null".equals(order)) //$NON-NLS-1$ @@ -18,10 +26,19 @@ public class SubtasksTagUpdater extends SubtasksUpdater { @Override protected void writeSerialization(TagData list, String serialized, boolean shouldQueueSync) { - list.setValue(TagData.TAG_ORDERING, serialized); - tagDataService.save(list); - if (shouldQueueSync) - actFmSyncService.pushTagOrderingOnSave(list.getId()); + if (!isBeingFiltered.get()) { + list.setValue(TagData.TAG_ORDERING, serialized); + tagDataService.save(list); + if (shouldQueueSync) + actFmSyncService.pushTagOrderingOnSave(list.getId()); + } + } + + @Override + public int getIndentForTask(long targetTaskId) { + if (isBeingFiltered.get()) + return 0; + return super.getIndentForTask(targetTaskId); } }