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.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))

@ -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<TagData> olfh =
new AstridOrderedListFragmentHelper<TagData>(this, new SubtasksUpdater());
olfh.setList(getActiveTagData());
AstridOrderedListFragmentHelper<String> olfh =
new AstridOrderedListFragmentHelper<String>(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<String>) helper).setList(SubtasksUpdater.TODAY_TASKS_ORDER);
else if (isInbox)
((AstridOrderedListFragmentHelper<String>) helper).setList(SubtasksUpdater.ACTIVE_TASKS_ORDER);
}
helper.beforeSetUpTaskList(filter);
super.setUpTaskList();

@ -21,7 +21,7 @@ public class SubtasksTagListFragment extends TagViewFragment {
public SubtasksTagListFragment() {
super();
helper = new AstridOrderedListFragmentHelper<TagData>(this, new SubtasksUpdater());
helper = new AstridOrderedListFragmentHelper<TagData>(this, new SubtasksTagUpdater());
}
@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.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<TagData> {
public abstract class SubtasksUpdater<T> extends AstridOrderedListUpdater<T> {
@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<TagData> {
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());
// }
// }
}

@ -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

Loading…
Cancel
Save