Removed several references to tag_ordering and replaced with tasklistmetadata

pull/14/head
Sam Bosley 13 years ago
parent fa3bbf3445
commit 8717d6c8b7

@ -86,6 +86,19 @@ public final class TaskListMetadata extends RemoteModel {
/** List of all properties for this model */
public static final Property<?>[] PROPERTIES = generateProperties(TaskListMetadata.class);
public static final String FILTER_ID_ALL = "all";
public static final String FILTER_ID_TODAY = "today";
public static final String FILTER_ID_NO_LIST = "nolist";
public static final String FILTER_ID_ASSIGNED_BY_ME = "assigned";
public static final String SORT_AUTO = "auto";
public static final String SORT_MANUAL = "manual";
public static final String SORT_DUE = "due";
public static final String SORT_CREATED = "created";
public static final String SORT_COMPLETED = "completed";
public static final String SORT_UPDATED = "updated";
public static final String SORT_TITLE = "title";
// --- defaults
/** Default values container */

@ -83,8 +83,6 @@ import com.todoroo.astrid.welcome.HelpInfoPopover;
public class TagViewFragment extends TaskListFragment {
private static final String LAST_FETCH_KEY = "tag-fetch-"; //$NON-NLS-1$
public static final String BROADCAST_TAG_ACTIVITY = AstridApiConstants.API_PACKAGE + ".TAG_ACTIVITY"; //$NON-NLS-1$
public static final String EXTRA_TAG_NAME = "tag"; //$NON-NLS-1$
@ -649,11 +647,14 @@ public class TagViewFragment extends TaskListFragment {
tagData = tagDataService.fetchById(tagData.getId(), TagData.PROPERTIES); // refetch
if (tagData == null) {
// This can happen if a tag has been deleted as part of a sync
taskListMetadata = null;
return;
} else if (tagData.isDeleted()) {
justDeleted = true;
return;
}
initializeTaskListMetadata();
postLoadTagData();
filter = TagFilterExposer.filterFromTagData(getActivity(), tagData);
getActivity().getIntent().putExtra(TOKEN_FILTER, filter);
extras.putParcelable(TOKEN_FILTER, filter);

@ -174,7 +174,6 @@ public class NameMaps {
putTagPropertyToServerName(TagData.CREATION_DATE, "created_at", true);
putTagPropertyToServerName(TagData.DELETION_DATE, "deleted_at", true);
putTagPropertyToServerName(TagData.UUID, "uuid", false);
putTagPropertyToServerName(TagData.TAG_ORDERING, "tag_ordering", false);
putTagPropertyToServerName(TagData.TASK_COUNT, "task_count", false);
putTagPropertyToServerName(TagData.TAG_DESCRIPTION, "description", true);
putTagPropertyToServerName(TagData.PICTURE, "picture", true);

@ -1,13 +1,15 @@
package com.todoroo.astrid.subtasks;
import com.todoroo.andlib.utility.Preferences;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.data.TaskListMetadata;
public class SubtasksFilterUpdater extends SubtasksUpdater<String> {
public class SubtasksFilterUpdater extends SubtasksUpdater<TaskListMetadata> {
@Override
protected String getSerializedTree(String list, Filter filter) {
String order = Preferences.getStringValue(list);
protected String getSerializedTree(TaskListMetadata list, Filter filter) {
if (list == null)
return "[]"; //$NON-NLS-1$
String order = list.getValue(TaskListMetadata.TASK_IDS);
if (order == null || "null".equals(order)) //$NON-NLS-1$
order = "[]"; //$NON-NLS-1$
@ -15,10 +17,11 @@ public class SubtasksFilterUpdater extends SubtasksUpdater<String> {
}
@Override
protected void writeSerialization(String list, String serialized, boolean shouldQueueSync) {
Preferences.setString(list, serialized);
if (shouldQueueSync)
actFmSyncService.pushFilterOrderingOnSave(list);
protected void writeSerialization(TaskListMetadata list, String serialized, boolean shouldQueueSync) {
if (list != null) {
list.setValue(TaskListMetadata.TASK_IDS, serialized);
taskListMetadataDao.saveExisting(list);
}
}
}

@ -14,6 +14,7 @@ import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.astrid.activity.TaskListFragment;
import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskListMetadata;
/**
* Fragment for subtasks
@ -32,8 +33,8 @@ public class SubtasksListFragment extends TaskListFragment {
}
protected OrderedListFragmentHelperInterface<?> createFragmentHelper() {
AstridOrderedListFragmentHelper<String> olfh =
new AstridOrderedListFragmentHelper<String>(this, new SubtasksFilterUpdater());
AstridOrderedListFragmentHelper<TaskListMetadata> olfh =
new AstridOrderedListFragmentHelper<TaskListMetadata>(this, new SubtasksFilterUpdater());
return olfh;
}

@ -12,21 +12,21 @@ import com.timsu.astrid.R;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskListMetadata;
public class SubtasksTagListFragment extends TagViewFragment {
private final AstridOrderedListFragmentHelper<TagData> helper;
private final AstridOrderedListFragmentHelper<TaskListMetadata> helper;
public SubtasksTagListFragment() {
super();
helper = new AstridOrderedListFragmentHelper<TagData>(this, new SubtasksTagUpdater(isBeingFiltered));
helper = new AstridOrderedListFragmentHelper<TaskListMetadata>(this, new SubtasksTagUpdater(isBeingFiltered));
}
@Override
protected void postLoadTagData() {
helper.setList(tagData);
helper.setList(taskListMetadata);
}
@Override

@ -3,9 +3,9 @@ package com.todoroo.astrid.subtasks;
import java.util.concurrent.atomic.AtomicBoolean;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.TaskListMetadata;
public class SubtasksTagUpdater extends SubtasksUpdater<TagData> {
public class SubtasksTagUpdater extends SubtasksFilterUpdater {
private final AtomicBoolean isBeingFiltered;
@ -14,23 +14,16 @@ public class SubtasksTagUpdater extends SubtasksUpdater<TagData> {
}
@Override
protected String getSerializedTree(TagData list, Filter filter) {
if (list == null || isBeingFiltered.get())
protected String getSerializedTree(TaskListMetadata list, Filter filter) {
if (isBeingFiltered.get())
return "[]"; //$NON-NLS-1$
String order = list.getValue(TagData.TAG_ORDERING);
if (order == null || "null".equals(order)) //$NON-NLS-1$
order = "[]"; //$NON-NLS-1$
return order;
return super.getSerializedTree(list, filter);
}
@Override
protected void writeSerialization(TagData list, String serialized, boolean shouldQueueSync) {
protected void writeSerialization(TaskListMetadata list, String serialized, boolean shouldQueueSync) {
if (!isBeingFiltered.get()) {
list.setValue(TagData.TAG_ORDERING, serialized);
tagDataService.save(list);
if (shouldQueueSync)
actFmSyncService.pushTagOrderingOnSave(list.getId());
super.writeSerialization(list, serialized, shouldQueueSync);
}
}

@ -10,13 +10,13 @@ import com.todoroo.andlib.sql.Criterion;
import com.todoroo.astrid.actfm.sync.ActFmSyncService;
import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
import com.todoroo.astrid.dao.TaskListMetadataDao;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.service.TagDataService;
import com.todoroo.astrid.service.TaskService;
public abstract class SubtasksUpdater<T> extends AstridOrderedListUpdater<T> {
@Autowired TagDataService tagDataService;
@Autowired TaskListMetadataDao taskListMetadataDao;
@Autowired TaskService taskService;
@Autowired ActFmSyncService actFmSyncService;

@ -83,10 +83,13 @@ 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.dao.TaskListMetadataDao;
import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.data.User;
import com.todoroo.astrid.helper.SyncActionHelper;
import com.todoroo.astrid.helper.TaskListContextMenuExtensionLoader;
@ -180,6 +183,8 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
@Autowired TagDataService tagDataService;
@Autowired TaskListMetadataDao taskListMetadataDao;
@Autowired ActFmPreferenceService actFmPreferenceService;
private final TaskContextActionExposer[] contextItemExposers = new TaskContextActionExposer[] {
@ -202,6 +207,7 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
protected Bundle extras;
protected boolean isInbox;
protected boolean isTodayFilter;
protected TaskListMetadata taskListMetadata;
private final TaskListContextMenuExtensionLoader contextMenuExtensionLoader = new TaskListContextMenuExtensionLoader();
@ -379,6 +385,10 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
return null;
}
public TaskListMetadata getTaskListMetadata() {
return taskListMetadata;
}
protected void initializeData() {
if (extras != null && extras.containsKey(TOKEN_FILTER)) {
filter = extras.getParcelable(TOKEN_FILTER);
@ -392,12 +402,33 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
if (!isInbox)
isTodayFilter = CustomFilterExposer.isTodayFilter(filter);
initializeTaskListMetadata();
setUpTaskList();
((AstridActivity) getActivity()).setupActivityFragment(getActiveTagData());
contextMenuExtensionLoader.loadInNewThread(getActivity());
}
protected void initializeTaskListMetadata() {
TagData td = getActiveTagData();
String tdId;
if (td == null) {
if (isInbox)
taskListMetadata = taskListMetadataDao.fetchByTagId(TaskListMetadata.FILTER_ID_ALL, TaskListMetadata.PROPERTIES);
else if (isTodayFilter)
taskListMetadata = taskListMetadataDao.fetchByTagId(TaskListMetadata.FILTER_ID_TODAY, TaskListMetadata.PROPERTIES);
} else {
tdId = td.getUuid();
taskListMetadata = taskListMetadataDao.fetchByTagId(td.getUuid(), TaskListMetadata.PROPERTIES);
if (taskListMetadata == null && !RemoteModel.isUuidEmpty(tdId)) {
taskListMetadata = new TaskListMetadata();
taskListMetadata.setValue(TaskListMetadata.TAG_UUID, tdId);
taskListMetadataDao.createNew(taskListMetadata);
}
}
}
protected void addSyncRefreshMenuItem(Menu menu, int themeFlags) {
addMenuItem(menu, R.string.TLA_menu_sync,
ThemeService.getDrawable(R.drawable.icn_menu_refresh, themeFlags), MENU_SYNC_ID, true);

@ -5,8 +5,12 @@
*/
package com.todoroo.astrid.dao;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.actfm.sync.messages.NameMaps;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.TaskListMetadata;
@ -33,5 +37,11 @@ public class TaskListMetadataDao extends RemoteModelDao<TaskListMetadata> {
return NameMaps.shouldRecordOutstandingColumnForTable(NameMaps.TABLE_ID_TASK_LIST_METADATA, columnName);
}
public TaskListMetadata fetchByTagId(String tagUuid, Property<?>...properties) {
TodorooCursor<TaskListMetadata> taskListMetadata = query(Query.select(properties).where(Criterion.or(TaskListMetadata.TAG_UUID.eq(tagUuid),
TaskListMetadata.FILTER.eq(tagUuid))));
return returnFetchResult(taskListMetadata);
}
}

Loading…
Cancel
Save