Better inbox calculation

pull/14/head
Tim Su 14 years ago
parent d9765ee8b6
commit 51324c9d2f

@ -70,6 +70,20 @@ public final class CoreFilterExposer extends BroadcastReceiver implements Astrid
return inbox;
}
/**
* Is this the inbox?
* @param filter
* @return
*/
public static boolean isInbox(Filter filter) {
String title = ContextManager.getString(R.string.BFE_Active);
if(filter.listingIcon != null &&
title.equals(filter.listingTitle) &&
title.equals(filter.title))
return true;
return false;
}
@Override
public FilterListItem[] getFilters() {
if (ContextManager.getContext() == null || ContextManager.getContext().getResources() == null)

@ -2,6 +2,9 @@ package com.todoroo.astrid.subtasks;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
@ -28,6 +31,12 @@ import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.subtasks.OrderedListUpdater.OrderedListIterator;
import com.todoroo.astrid.ui.DraggableListView;
/**
* Fragment for subtasks
*
* @author Tim Su <tim@astrid.com>
*
*/
public class SubtasksListFragment extends TaskListFragment {
private final DisplayMetrics metrics = new DisplayMetrics();
@ -180,11 +189,30 @@ public class SubtasksListFragment extends TaskListFragment {
return true;
}
private void setCompletedForItemAndSubtasks(final Task item, boolean completedState) {
private void setCompletedForItemAndSubtasks(final Task item, final boolean completedState) {
final Map<Long, ArrayList<Long>> chainedCompletions =
Collections.synchronizedMap(new HashMap<Long, ArrayList<Long>>());
final long itemId = item.getId();
final boolean completed = completedState;
System.err.println("SET COMPLETED FOR " + itemId);
final Task task = new Task();
task.setValue(Task.COMPLETION_DATE, completedState ? DateUtilities.now() : 0);
if(completedState == false) {
ArrayList<Long> chained = chainedCompletions.get(itemId);
if(chained != null) {
for(Long taskId : chained) {
taskAdapter.getCompletedItems().put(taskId, false);
task.setId(taskId);
taskService.save(task);
}
taskAdapter.notifyDataSetInvalidated();
}
return;
}
new Thread() {
@Override
public void run() {
@ -193,9 +221,8 @@ public class SubtasksListFragment extends TaskListFragment {
final AtomicLong startOrder= new AtomicLong(
item.getValue(SubtasksMetadata.ORDER));
final AtomicBoolean finished = new AtomicBoolean(false);
final Task task = new Task();
task.setValue(Task.COMPLETION_DATE, completed ? DateUtilities.now() : 0);
final ArrayList<Long> chained = new ArrayList<Long>();
chainedCompletions.put(itemId, chained);
updater.iterateThroughList(filter, SubtasksMetadata.LIST_ACTIVE_TASKS, new OrderedListIterator() {
@Override
@ -218,6 +245,7 @@ public class SubtasksListFragment extends TaskListFragment {
taskAdapter.getCompletedItems().put(taskId, true);
task.setId(taskId);
taskService.save(task);
chained.add(taskId);
}
});
getActivity().runOnUiThread(new Runnable() {

@ -206,8 +206,7 @@ public class AstridActivity extends FragmentActivity
Class<?> customTaskList = TaskListFragment.class;
System.err.println("default time"); //$NON-NLS-1$
if(filter == null || filter.sqlQuery ==
CoreFilterExposer.buildInboxFilter(getResources()).sqlQuery) {
if(filter == null || CoreFilterExposer.isInbox(filter)) {
System.err.println("is inbox"); //$NON-NLS-1$
SharedPreferences publicPrefs = AstridPreferences.getPublicPrefs(this);
int sortFlags = publicPrefs.getInt(SortHelper.PREF_SORT_FLAGS, 0);

@ -353,14 +353,10 @@ public class TaskListFragment extends ListFragment implements OnScrollListener,
return;
} else if (extras != null && extras.containsKey(TOKEN_FILTER)) {
filter = extras.getParcelable(TOKEN_FILTER);
isInbox = false;
}
Filter inbox = CoreFilterExposer.buildInboxFilter(getResources());
if(filter == null || filter.sqlQuery == inbox.sqlQuery) {
filter = inbox;
isInbox = true;
} else {
filter = CoreFilterExposer.buildInboxFilter(getResources());
}
isInbox = CoreFilterExposer.isInbox(filter);
setUpTaskList();
((AstridActivity) getActivity()).setupActivityFragment(getActiveTagData());

Loading…
Cancel
Save