From 2ced210f9142fcc6af256484693a2e17bf23cb15 Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Wed, 5 Dec 2012 15:22:22 -0800 Subject: [PATCH] Refactored some subtasks logic to support subtasks in today filter --- .../subtasks/SubtasksFilterUpdater.java | 22 ++++++++ .../astrid/subtasks/SubtasksHelper.java | 3 +- .../astrid/subtasks/SubtasksListFragment.java | 12 ++-- .../subtasks/SubtasksTagListFragment.java | 2 +- .../astrid/subtasks/SubtasksTagUpdater.java | 24 ++++++++ .../astrid/subtasks/SubtasksUpdater.java | 55 +++++++++---------- .../astrid/activity/TaskListFragment.java | 9 ++- 7 files changed, 91 insertions(+), 36 deletions(-) create mode 100644 astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksFilterUpdater.java create mode 100644 astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagUpdater.java diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksFilterUpdater.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksFilterUpdater.java new file mode 100644 index 000000000..0453f9876 --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksFilterUpdater.java @@ -0,0 +1,22 @@ +package com.todoroo.astrid.subtasks; + +import com.todoroo.andlib.utility.Preferences; +import com.todoroo.astrid.api.Filter; + +public class SubtasksFilterUpdater extends SubtasksUpdater { + + @Override + protected String getSerializedTree(String list, Filter filter) { + String order = Preferences.getStringValue(list); + if (order == null || "null".equals(order)) //$NON-NLS-1$ + order = "[]"; //$NON-NLS-1$ + + return order; + } + + @Override + protected void writeSerialization(String list, String serialized) { + Preferences.setString(list, serialized); + } + +} diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksHelper.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksHelper.java index 99bc1ea49..13d56b4df 100644 --- a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksHelper.java +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksHelper.java @@ -16,6 +16,7 @@ import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.core.CoreFilterExposer; +import com.todoroo.astrid.core.CustomFilterExposer; import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; @@ -27,7 +28,7 @@ import com.todoroo.astrid.utility.AstridPreferences; public class SubtasksHelper { public static boolean shouldUseSubtasksFragmentForFilter(Filter filter) { - if(filter == null || CoreFilterExposer.isInbox(filter) || SubtasksHelper.isTagFilter(filter)) { + if(filter == null || CoreFilterExposer.isInbox(filter) || CustomFilterExposer.isTodayFilter(filter) || SubtasksHelper.isTagFilter(filter)) { SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(ContextManager.getContext()); int sortFlags = publicPrefs.getInt(SortHelper.PREF_SORT_FLAGS, 0); if(SortHelper.isManualSort(sortFlags)) diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksListFragment.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksListFragment.java index 55d8e3078..d6820886f 100644 --- a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksListFragment.java +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksListFragment.java @@ -13,7 +13,6 @@ import com.timsu.astrid.R; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.adapter.TaskAdapter; -import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; /** @@ -33,9 +32,8 @@ public class SubtasksListFragment extends TaskListFragment { } protected OrderedListFragmentHelperInterface createFragmentHelper() { - AstridOrderedListFragmentHelper olfh = - new AstridOrderedListFragmentHelper(this, new SubtasksUpdater()); - olfh.setList(getActiveTagData()); + AstridOrderedListFragmentHelper olfh = + new AstridOrderedListFragmentHelper(this, new SubtasksFilterUpdater()); return olfh; } @@ -53,6 +51,12 @@ public class SubtasksListFragment extends TaskListFragment { @Override public void setUpTaskList() { + if (helper instanceof AstridOrderedListFragmentHelper) { + if (isTodayFilter) + ((AstridOrderedListFragmentHelper) helper).setList(SubtasksUpdater.TODAY_TASKS_ORDER); + else if (isInbox) + ((AstridOrderedListFragmentHelper) helper).setList(SubtasksUpdater.ACTIVE_TASKS_ORDER); + } helper.beforeSetUpTaskList(filter); super.setUpTaskList(); diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java index adfef3ffc..8ae8db831 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 SubtasksUpdater()); + helper = new AstridOrderedListFragmentHelper(this, new SubtasksTagUpdater()); } @Override diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagUpdater.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagUpdater.java new file mode 100644 index 000000000..c15c3d33f --- /dev/null +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksTagUpdater.java @@ -0,0 +1,24 @@ +package com.todoroo.astrid.subtasks; + +import com.todoroo.astrid.api.Filter; +import com.todoroo.astrid.data.TagData; + +public class SubtasksTagUpdater extends SubtasksUpdater { + + @Override + protected String getSerializedTree(TagData list, Filter filter) { + String order = list.getValue(TagData.TAG_ORDERING); + if (order == null || "null".equals(order)) //$NON-NLS-1$ + order = "[]"; //$NON-NLS-1$ + + return order; + } + + @Override + protected void writeSerialization(TagData list, String serialized) { + list.setValue(TagData.TAG_ORDERING, serialized); + tagDataService.save(list); + actFmSyncService.pushTagOrderingOnSave(list.getId()); + } + +} diff --git a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksUpdater.java b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksUpdater.java index 74d07ba63..6c070f93e 100644 --- a/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksUpdater.java +++ b/astrid/plugin-src/com/todoroo/astrid/subtasks/SubtasksUpdater.java @@ -7,25 +7,24 @@ package com.todoroo.astrid.subtasks; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.sql.Criterion; -import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.actfm.sync.ActFmSyncService; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.dao.TaskDao.TaskCriteria; -import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TaskService; -public class SubtasksUpdater extends AstridOrderedListUpdater { +public abstract class SubtasksUpdater extends AstridOrderedListUpdater { @Autowired TagDataService tagDataService; @Autowired TaskService taskService; @Autowired ActFmSyncService actFmSyncService; public static final String ACTIVE_TASKS_ORDER = "active_tasks_order"; //$NON-NLS-1$ + public static final String TODAY_TASKS_ORDER = "today_tasks_order"; //$NON-NLS-1$ @Override - public void initialize(TagData list, Filter filter) { + public void initialize(T list, Filter filter) { super.initialize(list, filter); applyToFilter(filter); } @@ -45,30 +44,30 @@ public class SubtasksUpdater extends AstridOrderedListUpdater { filter.setFilterQueryOverride(query); } - @Override - protected String getSerializedTree(TagData list, Filter filter) { - String order; - if (list == null) { - order = Preferences.getStringValue(ACTIVE_TASKS_ORDER); - } else { - order = list.getValue(TagData.TAG_ORDERING); - } - if (order == null || "null".equals(order)) //$NON-NLS-1$ - order = "[]"; //$NON-NLS-1$ - - return order; - } - - @Override - protected void writeSerialization(TagData list, String serialized) { - if (list == null) { - Preferences.setString(ACTIVE_TASKS_ORDER, serialized); - } else { - list.setValue(TagData.TAG_ORDERING, serialized); - tagDataService.save(list); - actFmSyncService.pushTagOrderingOnSave(list.getId()); - } - } +// @Override +// protected String getSerializedTree(TagData list, Filter filter) { +// String order; +// if (list == null) { +// order = Preferences.getStringValue(ACTIVE_TASKS_ORDER); +// } else { +// order = list.getValue(TagData.TAG_ORDERING); +// } +// if (order == null || "null".equals(order)) //$NON-NLS-1$ +// order = "[]"; //$NON-NLS-1$ +// +// return order; +// } +// +// @Override +// protected void writeSerialization(TagData list, String serialized) { +// if (list == null) { +// Preferences.setString(ACTIVE_TASKS_ORDER, serialized); +// } else { +// list.setValue(TagData.TAG_ORDERING, serialized); +// tagDataService.save(list); +// actFmSyncService.pushTagOrderingOnSave(list.getId()); +// } +// } } diff --git a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java index b996b03c9..ce178cc51 100644 --- a/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java +++ b/astrid/src/com/todoroo/astrid/activity/TaskListFragment.java @@ -80,6 +80,7 @@ import com.todoroo.astrid.api.TaskContextActionExposer; import com.todoroo.astrid.api.TaskDecoration; import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.CustomFilterActivity; +import com.todoroo.astrid.core.CustomFilterExposer; import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.data.Metadata; @@ -196,7 +197,8 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, private Timer backgroundTimer; protected Bundle extras; - private boolean isInbox; + protected boolean isInbox; + protected boolean isTodayFilter; private final TaskListContextMenuExtensionLoader contextMenuExtensionLoader = new TaskListContextMenuExtensionLoader(); @@ -382,6 +384,9 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, } filter.setFilterQueryOverride(null); isInbox = CoreFilterExposer.isInbox(filter); + isTodayFilter = false; + if (!isInbox) + isTodayFilter = CustomFilterExposer.isTodayFilter(filter); setUpTaskList(); ((AstridActivity) getActivity()).setupActivityFragment(getActiveTagData()); @@ -1352,7 +1357,7 @@ public class TaskListFragment extends ListFragment implements OnScrollListener, } protected boolean hasDraggableOption() { - return isInbox; + return isInbox || isTodayFilter; } @Override