Refactored some subtasks logic to support subtasks in today filter

pull/14/head
Sam Bosley 13 years ago
parent 408dc262cf
commit 2ced210f91

@ -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<String> {
@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);
}
}

@ -16,6 +16,7 @@ import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.api.FilterWithCustomIntent; import com.todoroo.astrid.api.FilterWithCustomIntent;
import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.CoreFilterExposer;
import com.todoroo.astrid.core.CustomFilterExposer;
import com.todoroo.astrid.core.PluginServices; import com.todoroo.astrid.core.PluginServices;
import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
@ -27,7 +28,7 @@ import com.todoroo.astrid.utility.AstridPreferences;
public class SubtasksHelper { public class SubtasksHelper {
public static boolean shouldUseSubtasksFragmentForFilter(Filter filter) { 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()); SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(ContextManager.getContext());
int sortFlags = publicPrefs.getInt(SortHelper.PREF_SORT_FLAGS, 0); int sortFlags = publicPrefs.getInt(SortHelper.PREF_SORT_FLAGS, 0);
if(SortHelper.isManualSort(sortFlags)) if(SortHelper.isManualSort(sortFlags))

@ -13,7 +13,6 @@ import com.timsu.astrid.R;
import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
/** /**
@ -33,9 +32,8 @@ public class SubtasksListFragment extends TaskListFragment {
} }
protected OrderedListFragmentHelperInterface<?> createFragmentHelper() { protected OrderedListFragmentHelperInterface<?> createFragmentHelper() {
AstridOrderedListFragmentHelper<TagData> olfh = AstridOrderedListFragmentHelper<String> olfh =
new AstridOrderedListFragmentHelper<TagData>(this, new SubtasksUpdater()); new AstridOrderedListFragmentHelper<String>(this, new SubtasksFilterUpdater());
olfh.setList(getActiveTagData());
return olfh; return olfh;
} }
@ -53,6 +51,12 @@ public class SubtasksListFragment extends TaskListFragment {
@Override @Override
public void setUpTaskList() { public void setUpTaskList() {
if (helper instanceof AstridOrderedListFragmentHelper) {
if (isTodayFilter)
((AstridOrderedListFragmentHelper<String>) helper).setList(SubtasksUpdater.TODAY_TASKS_ORDER);
else if (isInbox)
((AstridOrderedListFragmentHelper<String>) helper).setList(SubtasksUpdater.ACTIVE_TASKS_ORDER);
}
helper.beforeSetUpTaskList(filter); helper.beforeSetUpTaskList(filter);
super.setUpTaskList(); super.setUpTaskList();

@ -21,7 +21,7 @@ public class SubtasksTagListFragment extends TagViewFragment {
public SubtasksTagListFragment() { public SubtasksTagListFragment() {
super(); super();
helper = new AstridOrderedListFragmentHelper<TagData>(this, new SubtasksUpdater()); helper = new AstridOrderedListFragmentHelper<TagData>(this, new SubtasksTagUpdater());
} }
@Override @Override

@ -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<TagData> {
@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());
}
}

@ -7,25 +7,24 @@ package com.todoroo.astrid.subtasks;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.actfm.sync.ActFmSyncService; import com.todoroo.astrid.actfm.sync.ActFmSyncService;
import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TagDataService; import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
public class SubtasksUpdater extends AstridOrderedListUpdater<TagData> { public abstract class SubtasksUpdater<T> extends AstridOrderedListUpdater<T> {
@Autowired TagDataService tagDataService; @Autowired TagDataService tagDataService;
@Autowired TaskService taskService; @Autowired TaskService taskService;
@Autowired ActFmSyncService actFmSyncService; @Autowired ActFmSyncService actFmSyncService;
public static final String ACTIVE_TASKS_ORDER = "active_tasks_order"; //$NON-NLS-1$ 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 @Override
public void initialize(TagData list, Filter filter) { public void initialize(T list, Filter filter) {
super.initialize(list, filter); super.initialize(list, filter);
applyToFilter(filter); applyToFilter(filter);
} }
@ -45,30 +44,30 @@ public class SubtasksUpdater extends AstridOrderedListUpdater<TagData> {
filter.setFilterQueryOverride(query); filter.setFilterQueryOverride(query);
} }
@Override // @Override
protected String getSerializedTree(TagData list, Filter filter) { // protected String getSerializedTree(TagData list, Filter filter) {
String order; // String order;
if (list == null) { // if (list == null) {
order = Preferences.getStringValue(ACTIVE_TASKS_ORDER); // order = Preferences.getStringValue(ACTIVE_TASKS_ORDER);
} else { // } else {
order = list.getValue(TagData.TAG_ORDERING); // order = list.getValue(TagData.TAG_ORDERING);
} // }
if (order == null || "null".equals(order)) //$NON-NLS-1$ // if (order == null || "null".equals(order)) //$NON-NLS-1$
order = "[]"; //$NON-NLS-1$ // order = "[]"; //$NON-NLS-1$
//
return order; // return order;
} // }
//
@Override // @Override
protected void writeSerialization(TagData list, String serialized) { // protected void writeSerialization(TagData list, String serialized) {
if (list == null) { // if (list == null) {
Preferences.setString(ACTIVE_TASKS_ORDER, serialized); // Preferences.setString(ACTIVE_TASKS_ORDER, serialized);
} else { // } else {
list.setValue(TagData.TAG_ORDERING, serialized); // list.setValue(TagData.TAG_ORDERING, serialized);
tagDataService.save(list); // tagDataService.save(list);
actFmSyncService.pushTagOrderingOnSave(list.getId()); // actFmSyncService.pushTagOrderingOnSave(list.getId());
} // }
} // }
} }

@ -80,6 +80,7 @@ import com.todoroo.astrid.api.TaskContextActionExposer;
import com.todoroo.astrid.api.TaskDecoration; import com.todoroo.astrid.api.TaskDecoration;
import com.todoroo.astrid.core.CoreFilterExposer; import com.todoroo.astrid.core.CoreFilterExposer;
import com.todoroo.astrid.core.CustomFilterActivity; import com.todoroo.astrid.core.CustomFilterActivity;
import com.todoroo.astrid.core.CustomFilterExposer;
import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
@ -196,7 +197,8 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
private Timer backgroundTimer; private Timer backgroundTimer;
protected Bundle extras; protected Bundle extras;
private boolean isInbox; protected boolean isInbox;
protected boolean isTodayFilter;
private final TaskListContextMenuExtensionLoader contextMenuExtensionLoader = new TaskListContextMenuExtensionLoader(); private final TaskListContextMenuExtensionLoader contextMenuExtensionLoader = new TaskListContextMenuExtensionLoader();
@ -382,6 +384,9 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
} }
filter.setFilterQueryOverride(null); filter.setFilterQueryOverride(null);
isInbox = CoreFilterExposer.isInbox(filter); isInbox = CoreFilterExposer.isInbox(filter);
isTodayFilter = false;
if (!isInbox)
isTodayFilter = CustomFilterExposer.isTodayFilter(filter);
setUpTaskList(); setUpTaskList();
((AstridActivity) getActivity()).setupActivityFragment(getActiveTagData()); ((AstridActivity) getActivity()).setupActivityFragment(getActiveTagData());
@ -1352,7 +1357,7 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
} }
protected boolean hasDraggableOption() { protected boolean hasDraggableOption() {
return isInbox; return isInbox || isTodayFilter;
} }
@Override @Override

Loading…
Cancel
Save