Fixing some lifecycle issues

pull/384/head
Alex Baker 10 years ago
parent 2f0938a11a
commit e5c991e7db

@ -54,7 +54,7 @@ public class GtasksListFragment extends SubtasksListFragment {
private GtasksList list; private GtasksList list;
@Override @Override
protected OrderedListFragmentHelperInterface<?> createFragmentHelper() { protected OrderedListFragmentHelperInterface createFragmentHelper() {
return new OrderedMetadataListFragmentHelper<>(preferences, taskAttachmentDao, taskService, metadataDao, this, gtasksTaskListUpdater, dialogBuilder); return new OrderedMetadataListFragmentHelper<>(preferences, taskAttachmentDao, taskService, metadataDao, this, gtasksTaskListUpdater, dialogBuilder);
} }

@ -45,7 +45,7 @@ import java.util.concurrent.atomic.AtomicReference;
import timber.log.Timber; import timber.log.Timber;
public class OrderedMetadataListFragmentHelper<LIST> implements OrderedListFragmentHelperInterface<LIST> { public class OrderedMetadataListFragmentHelper<LIST> implements OrderedListFragmentHelperInterface {
private final DisplayMetrics metrics = new DisplayMetrics(); private final DisplayMetrics metrics = new DisplayMetrics();
private final OrderedMetadataListUpdater<LIST> updater; private final OrderedMetadataListUpdater<LIST> updater;

@ -28,8 +28,6 @@ public class TagViewFragment extends TaskListFragment {
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) { if (savedInstanceState != null) {
tagData = savedInstanceState.getParcelable(EXTRA_TAG_DATA); tagData = savedInstanceState.getParcelable(EXTRA_TAG_DATA);
} else { } else {
@ -55,6 +53,8 @@ public class TagViewFragment extends TaskListFragment {
tagDataDao.persist(tagData); tagDataDao.persist(tagData);
} }
} }
super.onCreate(savedInstanceState);
} }
@Override @Override

@ -540,7 +540,6 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
taskCreator.addToCalendar(task); taskCreator.addToCalendar(task);
onTaskListItemClicked(task.getId()); onTaskListItemClicked(task.getId());
taskListFragment.loadTaskListContent(); taskListFragment.loadTaskListContent();
taskListFragment.selectCustomId(task.getId());
taskListFragment.onTaskCreated(task.getId(), task.getUUID()); taskListFragment.onTaskCreated(task.getId(), task.getUUID());
} }
}; };
@ -611,14 +610,9 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
navigationDrawer.refresh(); navigationDrawer.refresh();
} }
} else if (requestCode == REQUEST_SORT) { } else if (requestCode == REQUEST_SORT) {
if (resultCode == RESULT_OK && data != null) { if (resultCode == RESULT_OK) {
TasksWidget.updateWidgets(this); TasksWidget.updateWidgets(this);
if (data.hasExtra(SortActivity.EXTRA_TOGGLE_MANUAL)) {
onFilterItemClicked(getTaskListFragment().getFilter()); onFilterItemClicked(getTaskListFragment().getFilter());
} else {
getTaskListFragment().setUpTaskList();
}
} }
} else if (requestCode == REQUEST_UPGRADE) { } else if (requestCode == REQUEST_UPGRADE) {
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {

@ -46,22 +46,17 @@ import com.todoroo.astrid.api.Filter;
import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.core.BuiltInFilterExposer;
import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.core.SortHelper;
import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.dao.TaskAttachmentDao;
import com.todoroo.astrid.dao.TaskListMetadataDao;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskAttachment; import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.gtasks.GtasksPreferenceService; import com.todoroo.astrid.gtasks.GtasksPreferenceService;
import com.todoroo.astrid.helper.SyncActionHelper; import com.todoroo.astrid.helper.SyncActionHelper;
import com.todoroo.astrid.service.TaskDeleter; import com.todoroo.astrid.service.TaskDeleter;
import com.todoroo.astrid.service.TaskDuplicator; import com.todoroo.astrid.service.TaskDuplicator;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
import com.todoroo.astrid.subtasks.SubtasksHelper;
import com.todoroo.astrid.subtasks.SubtasksListFragment; import com.todoroo.astrid.subtasks.SubtasksListFragment;
import com.todoroo.astrid.subtasks.SubtasksTagListFragment; import com.todoroo.astrid.subtasks.SubtasksTagListFragment;
import com.todoroo.astrid.subtasks.SubtasksUpdater;
import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.tags.TaskToTagMetadata;
import com.todoroo.astrid.timers.TimerPlugin; import com.todoroo.astrid.timers.TimerPlugin;
@ -113,7 +108,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
// --- instance variables // --- instance variables
@Inject TaskService taskService; @Inject TaskService taskService;
@Inject TaskListMetadataDao taskListMetadataDao;
@Inject TaskDeleter taskDeleter; @Inject TaskDeleter taskDeleter;
@Inject TaskDuplicator taskDuplicator; @Inject TaskDuplicator taskDuplicator;
@Inject @ForActivity Context context; @Inject @ForActivity Context context;
@ -124,21 +118,15 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
@Inject DialogBuilder dialogBuilder; @Inject DialogBuilder dialogBuilder;
@Inject SyncActionHelper syncActionHelper; @Inject SyncActionHelper syncActionHelper;
protected TaskAdapter taskAdapter = null; private TaskAdapter taskAdapter = null;
protected RefreshReceiver refreshReceiver = new RefreshReceiver(); private RefreshReceiver refreshReceiver = new RefreshReceiver();
private OnTaskListItemClickedListener mListener;
private SwipeRefreshLayout listView;
private SwipeRefreshLayout emptyView;
protected final AtomicReference<String> sqlQueryTemplate = new AtomicReference<>(); protected final AtomicReference<String> sqlQueryTemplate = new AtomicReference<>();
protected Filter filter; protected Filter filter;
protected Bundle extras; protected Bundle extras;
protected boolean isInbox;
protected boolean isTodayFilter;
protected TaskListMetadata taskListMetadata;
// --- fragment handling variables
protected OnTaskListItemClickedListener mListener;
protected SwipeRefreshLayout listView;
protected SwipeRefreshLayout emptyView;
/* /*
* ====================================================================== * ======================================================================
@ -199,6 +187,8 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
if (extras == null) { if (extras == null) {
extras = new Bundle(); // Just need an empty one to prevent potential null pointers extras = new Bundle(); // Just need an empty one to prevent potential null pointers
} }
setTaskAdapter();
} }
public void initialize(Filter filter, Bundle extras) { public void initialize(Filter filter, Bundle extras) {
@ -264,20 +254,61 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
super.onActivityCreated(savedInstanceState); super.onActivityCreated(savedInstanceState);
// We have a menu item to show in action bar. // We have a menu item to show in action bar.
setHasOptionsMenu(true); setHasOptionsMenu(true);
setUpUiComponents(); final ListView listView = getListView();
initializeData(); registerForContextMenu(listView);
// set listener for quick-changing task priority
listView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View view, int keyCode, KeyEvent event) {
if (event.getAction() != KeyEvent.ACTION_UP || view == null) {
return false;
}
boolean filterOn = listView.isTextFilterEnabled();
View selected = listView.getSelectedView();
// hot-key to set task priority - 1-4 or ALT + Q-R
if (!filterOn && event.getUnicodeChar() >= '1'
&& event.getUnicodeChar() <= '4' && selected != null) {
int importance = event.getNumber() - '1';
Task task = ((ViewHolder) selected.getTag()).task;
task.setImportance(importance);
taskService.save(task);
taskAdapter.setFieldContentsAndVisibility(selected);
}
// filter
else if (!filterOn && event.getUnicodeChar() != 0) {
listView.setTextFilterEnabled(true);
listView.setFilterText(
Character.toString((char) event.getUnicodeChar()));
}
// turn off filter if nothing is selected
else if (filterOn
&& TextUtils.isEmpty(listView.getTextFilter())) {
listView.setTextFilterEnabled(false);
}
return false;
}
});
filter.setFilterQueryOverride(null);
setListAdapter(taskAdapter);
loadTaskListContent();
if (getResources().getBoolean(R.bool.two_pane_layout)) { if (getResources().getBoolean(R.bool.two_pane_layout)) {
// In dual-pane mode, the list view highlights the selected item. // In dual-pane mode, the list view highlights the selected item.
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
getListView().setItemsCanFocus(false); listView.setItemsCanFocus(false);
} }
if ((this instanceof SubtasksListFragment) || (this instanceof SubtasksTagListFragment)) { if ((this instanceof SubtasksListFragment) || (this instanceof SubtasksTagListFragment)) {
return; return;
} }
getListView().setOnItemClickListener(new OnItemClickListener() { listView.setOnItemClickListener(new OnItemClickListener() {
@Override @Override
public void onItemClick(AdapterView<?> parent, View view, public void onItemClick(AdapterView<?> parent, View view,
int position, long id) { int position, long id) {
@ -301,102 +332,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
return null; return null;
} }
protected void initializeData() {
filter.setFilterQueryOverride(null);
isInbox = BuiltInFilterExposer.isInbox(context, filter);
isTodayFilter = false;
if (!isInbox) {
isTodayFilter = BuiltInFilterExposer.isTodayFilter(context, filter);
}
initializeTaskListMetadata();
setUpTaskList();
}
protected void initializeTaskListMetadata() {
TagData td = getActiveTagData();
String tdId;
if (td == null) {
String filterId = null;
String prefId = null;
if (isInbox) {
filterId = TaskListMetadata.FILTER_ID_ALL;
prefId = SubtasksUpdater.ACTIVE_TASKS_ORDER;
} else if (isTodayFilter) {
filterId = TaskListMetadata.FILTER_ID_TODAY;
prefId = SubtasksUpdater.TODAY_TASKS_ORDER;
}
if (!TextUtils.isEmpty(filterId)) {
taskListMetadata = taskListMetadataDao.fetchByTagId(filterId, TaskListMetadata.PROPERTIES);
if (taskListMetadata == null) {
String defaultOrder = preferences.getStringValue(prefId);
if (TextUtils.isEmpty(defaultOrder)) {
defaultOrder = "[]"; //$NON-NLS-1$
}
defaultOrder = SubtasksHelper.convertTreeToRemoteIds(taskService, defaultOrder);
taskListMetadata = new TaskListMetadata();
taskListMetadata.setFilter(filterId);
taskListMetadata.setTaskIDs(defaultOrder);
taskListMetadataDao.createNew(taskListMetadata);
}
}
} else {
tdId = td.getUuid();
taskListMetadata = taskListMetadataDao.fetchByTagId(td.getUuid(), TaskListMetadata.PROPERTIES);
if (taskListMetadata == null && !RemoteModel.isUuidEmpty(tdId)) {
taskListMetadata = new TaskListMetadata();
taskListMetadata.setTagUUID(tdId);
taskListMetadataDao.createNew(taskListMetadata);
}
}
postLoadTaskListMetadata();
}
protected void postLoadTaskListMetadata() {
// Hook
}
protected void setUpUiComponents() {
registerForContextMenu(getListView());
// set listener for quick-changing task priority
getListView().setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View view, int keyCode, KeyEvent event) {
if (event.getAction() != KeyEvent.ACTION_UP || view == null) {
return false;
}
boolean filterOn = getListView().isTextFilterEnabled();
View selected = getListView().getSelectedView();
// hot-key to set task priority - 1-4 or ALT + Q-R
if (!filterOn && event.getUnicodeChar() >= '1'
&& event.getUnicodeChar() <= '4' && selected != null) {
int importance = event.getNumber() - '1';
Task task = ((ViewHolder) selected.getTag()).task;
task.setImportance(importance);
taskService.save(task);
taskAdapter.setFieldContentsAndVisibility(selected);
}
// filter
else if (!filterOn && event.getUnicodeChar() != 0) {
getListView().setTextFilterEnabled(true);
getListView().setFilterText(
Character.toString((char) event.getUnicodeChar()));
}
// turn off filter if nothing is selected
else if (filterOn
&& TextUtils.isEmpty(getListView().getTextFilter())) {
getListView().setTextFilterEnabled(false);
}
return false;
}
});
}
/* /*
* ====================================================================== * ======================================================================
* ============================================================ lifecycle * ============================================================ lifecycle
@ -454,7 +389,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
* the above method takes care of calling it in the correct way * the above method takes care of calling it in the correct way
*/ */
protected void initiateAutomaticSyncImpl() { protected void initiateAutomaticSyncImpl() {
if (isCurrentTaskListFragment() && isInbox) { if (isCurrentTaskListFragment() && BuiltInFilterExposer.isInbox(context, filter)) {
syncActionHelper.initiateAutomaticSync(); syncActionHelper.initiateAutomaticSync();
} }
} }
@ -497,6 +432,8 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
*/ */
protected void refresh() { protected void refresh() {
loadTaskListContent(); loadTaskListContent();
setSyncOngoing(gtasksPreferenceService.isOngoing());
} }
/* /*
@ -510,7 +447,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
*/ */
public void loadTaskListContent() { public void loadTaskListContent() {
if (taskAdapter == null) { if (taskAdapter == null) {
setUpTaskList(); setTaskAdapter();
return; return;
} }
@ -518,16 +455,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
taskCursor.requery(); taskCursor.requery();
taskAdapter.notifyDataSetChanged(); taskAdapter.notifyDataSetChanged();
if (getView() != null) { // This was happening sometimes
int oldListItemSelected = getListView().getSelectedItemPosition();
if (oldListItemSelected != ListView.INVALID_POSITION
&& oldListItemSelected < taskCursor.getCount()) {
getListView().setSelection(oldListItemSelected);
}
}
setSyncOngoing(gtasksPreferenceService.isOngoing());
} }
protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) { protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) {
@ -548,7 +475,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
/** /**
* Fill in the Task List with current items * Fill in the Task List with current items
*/ */
public void setUpTaskList() { public void setTaskAdapter() {
if (filter == null) { if (filter == null) {
return; return;
} }
@ -560,10 +487,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
// set up list adapters // set up list adapters
taskAdapter = createTaskAdapter(currentCursor); taskAdapter = createTaskAdapter(currentCursor);
setListAdapter(taskAdapter);
loadTaskListContent();
} }
public Property<?>[] taskProperties() { public Property<?>[] taskProperties() {
@ -632,22 +555,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
taskAdapter.changeCursor(cursor); taskAdapter.changeCursor(cursor);
} }
/**
* Select a custom task id in the list. If it doesn't exist, create a new
* custom filter
*/
public void selectCustomId(long withCustomId) {
// if already in the list, select it
TodorooCursor<Task> currentCursor = (TodorooCursor<Task>) taskAdapter.getCursor();
for (int i = 0; i < currentCursor.getCount(); i++) {
currentCursor.moveToPosition(i);
if (currentCursor.get(Task.ID) == withCustomId) {
getListView().setSelection(i);
return;
}
}
}
/* /*
* ====================================================================== * ======================================================================
* ============================================================== actions * ============================================================== actions
@ -774,6 +681,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr
} }
protected boolean hasDraggableOption() { protected boolean hasDraggableOption() {
return isInbox || isTodayFilter; return BuiltInFilterExposer.isInbox(context, filter) || BuiltInFilterExposer.isTodayFilter(context, filter);
} }
} }

@ -40,7 +40,7 @@ import java.util.concurrent.atomic.AtomicReference;
import timber.log.Timber; import timber.log.Timber;
public class AstridOrderedListFragmentHelper<LIST> implements OrderedListFragmentHelperInterface<LIST> { public class AstridOrderedListFragmentHelper<LIST> implements OrderedListFragmentHelperInterface {
private final DisplayMetrics metrics = new DisplayMetrics(); private final DisplayMetrics metrics = new DisplayMetrics();
private final AstridOrderedListUpdater<LIST> updater; private final AstridOrderedListUpdater<LIST> updater;
@ -79,19 +79,18 @@ public class AstridOrderedListFragmentHelper<LIST> implements OrderedListFragmen
return fragment.getFilter(); return fragment.getFilter();
} }
public DraggableListView getTouchListView() {
return (DraggableListView) fragment.getListView();
}
@Override @Override
public void setUpUiComponents() { public void setUpUiComponents() {
TypedValue tv = new TypedValue(); TypedValue tv = new TypedValue();
getActivity().getTheme().resolveAttribute(R.attr.asThemeTextColor, tv, false); getActivity().getTheme().resolveAttribute(R.attr.asThemeTextColor, tv, false);
getTouchListView().setDragndropBackgroundColor(tv.data); DraggableListView draggableListView = (DraggableListView) fragment.getListView();
getTouchListView().setDropListener(dropListener); draggableListView.setDragndropBackgroundColor(tv.data);
getTouchListView().setClickListener(rowClickListener); draggableListView.setDropListener(dropListener);
getTouchListView().setSwipeListener(swipeListener); draggableListView.setClickListener(rowClickListener);
draggableListView.setSwipeListener(swipeListener);
getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
draggableListView.setItemHightNormal(taskAdapter.computeFullRowHeight());
} }
@Override @Override
@ -177,8 +176,6 @@ public class AstridOrderedListFragmentHelper<LIST> implements OrderedListFragmen
taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, sqlQueryTemplate, dialogBuilder); taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, sqlQueryTemplate, dialogBuilder);
getTouchListView().setItemHightNormal(taskAdapter.computeFullRowHeight());
taskAdapter.addOnCompletedTaskListener(new OnCompletedTaskListener() { taskAdapter.addOnCompletedTaskListener(new OnCompletedTaskListener() {
@Override @Override
public void onCompletedTask(Task item, boolean newState) { public void onCompletedTask(Task item, boolean newState) {
@ -281,7 +278,6 @@ public class AstridOrderedListFragmentHelper<LIST> implements OrderedListFragmen
updater.onCreateTask(list, getFilter(), uuid); updater.onCreateTask(list, getFilter(), uuid);
fragment.reconstructCursor(); fragment.reconstructCursor();
fragment.loadTaskListContent(); fragment.loadTaskListContent();
fragment.selectCustomId(id);
} }
@Override @Override

@ -10,7 +10,7 @@ import com.todoroo.astrid.data.Task;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
public interface OrderedListFragmentHelperInterface<T> { public interface OrderedListFragmentHelperInterface {
void setUpUiComponents(); void setUpUiComponents();
void beforeSetUpTaskList(Filter filter); void beforeSetUpTaskList(Filter filter);

@ -7,6 +7,8 @@ package com.todoroo.astrid.subtasks;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ListView; import android.widget.ListView;
@ -14,7 +16,9 @@ import android.widget.ListView;
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.core.BuiltInFilterExposer;
import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.dao.TaskAttachmentDao;
import com.todoroo.astrid.dao.TaskListMetadataDao;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
@ -34,7 +38,7 @@ import javax.inject.Inject;
*/ */
public class SubtasksListFragment extends TaskListFragment { public class SubtasksListFragment extends TaskListFragment {
protected OrderedListFragmentHelperInterface<?> helper; protected OrderedListFragmentHelperInterface helper;
private int lastVisibleIndex = -1; private int lastVisibleIndex = -1;
@ -44,6 +48,7 @@ public class SubtasksListFragment extends TaskListFragment {
@Inject ActivityPreferences preferences; @Inject ActivityPreferences preferences;
@Inject @ForApplication Context context; @Inject @ForApplication Context context;
@Inject DialogBuilder dialogBuilder; @Inject DialogBuilder dialogBuilder;
@Inject TaskListMetadataDao taskListMetadataDao;
@Override @Override
public void onAttach(Activity activity) { public void onAttach(Activity activity) {
@ -52,7 +57,7 @@ public class SubtasksListFragment extends TaskListFragment {
helper = createFragmentHelper(); helper = createFragmentHelper();
} }
protected OrderedListFragmentHelperInterface<?> createFragmentHelper() { protected OrderedListFragmentHelperInterface createFragmentHelper() {
return new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater, dialogBuilder); return new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater, dialogBuilder);
} }
@ -62,20 +67,48 @@ public class SubtasksListFragment extends TaskListFragment {
} }
@Override @Override
protected void setUpUiComponents() { public void onActivityCreated(Bundle savedInstanceState) {
super.setUpUiComponents(); super.onActivityCreated(savedInstanceState);
helper.setUpUiComponents(); helper.setUpUiComponents();
} }
@Override @Override
public void setUpTaskList() { public void setTaskAdapter() {
if (helper instanceof AstridOrderedListFragmentHelper) { if (helper instanceof AstridOrderedListFragmentHelper) {
((AstridOrderedListFragmentHelper<TaskListMetadata>) helper).setList(taskListMetadata); ((AstridOrderedListFragmentHelper<TaskListMetadata>) helper).setList(initializeTaskListMetadata());
} }
helper.beforeSetUpTaskList(filter); helper.beforeSetUpTaskList(filter);
super.setUpTaskList(); super.setTaskAdapter();
}
private TaskListMetadata initializeTaskListMetadata() {
String filterId = null;
String prefId = null;
if (BuiltInFilterExposer.isInbox(context, filter)) {
filterId = TaskListMetadata.FILTER_ID_ALL;
prefId = SubtasksUpdater.ACTIVE_TASKS_ORDER;
} else if (BuiltInFilterExposer.isTodayFilter(context, filter)) {
filterId = TaskListMetadata.FILTER_ID_TODAY;
prefId = SubtasksUpdater.TODAY_TASKS_ORDER;
}
if (TextUtils.isEmpty(filterId)) {
return null;
}
TaskListMetadata taskListMetadata = taskListMetadataDao.fetchByTagId(filterId, TaskListMetadata.PROPERTIES);
if (taskListMetadata == null) {
String defaultOrder = preferences.getStringValue(prefId);
if (TextUtils.isEmpty(defaultOrder)) {
defaultOrder = "[]"; //$NON-NLS-1$
}
defaultOrder = SubtasksHelper.convertTreeToRemoteIds(taskService, defaultOrder);
taskListMetadata = new TaskListMetadata();
taskListMetadata.setFilter(filterId);
taskListMetadata.setTaskIDs(defaultOrder);
taskListMetadataDao.createNew(taskListMetadata);
}
return taskListMetadata;
} }
@Override @Override
@ -109,10 +142,4 @@ public class SubtasksListFragment extends TaskListFragment {
protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) { protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) {
return helper.createTaskAdapter(context, cursor, sqlQueryTemplate); return helper.createTaskAdapter(context, cursor, sqlQueryTemplate);
} }
@Override
protected void refresh() {
super.refresh();
initializeTaskListMetadata();
}
} }

@ -7,6 +7,7 @@ package com.todoroo.astrid.subtasks;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.os.Bundle;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -14,6 +15,9 @@ import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.actfm.TagViewFragment;
import com.todoroo.astrid.adapter.TaskAdapter; import com.todoroo.astrid.adapter.TaskAdapter;
import com.todoroo.astrid.dao.TaskAttachmentDao; import com.todoroo.astrid.dao.TaskAttachmentDao;
import com.todoroo.astrid.dao.TaskListMetadataDao;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.data.TaskListMetadata;
import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.TaskService;
@ -33,6 +37,7 @@ public class SubtasksTagListFragment extends TagViewFragment {
@Inject ActivityPreferences preferences; @Inject ActivityPreferences preferences;
@Inject @ForApplication Context context; @Inject @ForApplication Context context;
@Inject DialogBuilder dialogBuilder; @Inject DialogBuilder dialogBuilder;
@Inject TaskListMetadataDao taskListMetadataDao;
private AstridOrderedListFragmentHelper<TaskListMetadata> helper; private AstridOrderedListFragmentHelper<TaskListMetadata> helper;
@ -45,11 +50,6 @@ public class SubtasksTagListFragment extends TagViewFragment {
helper = new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater, dialogBuilder); helper = new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater, dialogBuilder);
} }
@Override
protected void postLoadTaskListMetadata() {
helper.setList(taskListMetadata);
}
@Override @Override
protected View getListBody(ViewGroup root) { protected View getListBody(ViewGroup root) {
return getActivity().getLayoutInflater().inflate( return getActivity().getLayoutInflater().inflate(
@ -57,17 +57,30 @@ public class SubtasksTagListFragment extends TagViewFragment {
} }
@Override @Override
protected void setUpUiComponents() { public void onActivityCreated(Bundle savedInstanceState) {
super.setUpUiComponents(); super.onActivityCreated(savedInstanceState);
helper.setUpUiComponents(); helper.setUpUiComponents();
} }
@Override @Override
public void setUpTaskList() { public void setTaskAdapter() {
helper.setList(initializeTaskListMetadata());
helper.beforeSetUpTaskList(filter); helper.beforeSetUpTaskList(filter);
super.setUpTaskList(); super.setTaskAdapter();
}
private TaskListMetadata initializeTaskListMetadata() {
TagData td = getActiveTagData();
String tdId = td.getUuid();
TaskListMetadata taskListMetadata = taskListMetadataDao.fetchByTagId(td.getUuid(), TaskListMetadata.PROPERTIES);
if (taskListMetadata == null && !RemoteModel.isUuidEmpty(tdId)) {
taskListMetadata = new TaskListMetadata();
taskListMetadata.setTagUUID(tdId);
taskListMetadataDao.createNew(taskListMetadata);
}
return taskListMetadata;
} }
@Override @Override
@ -100,10 +113,4 @@ public class SubtasksTagListFragment extends TagViewFragment {
protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) { protected TaskAdapter createTaskAdapter(TodorooCursor<Task> cursor) {
return helper.createTaskAdapter(context, cursor, sqlQueryTemplate); return helper.createTaskAdapter(context, cursor, sqlQueryTemplate);
} }
@Override
protected void refresh() {
super.refresh();
initializeTaskListMetadata();
}
} }

@ -1,7 +1,6 @@
package org.tasks.activities; package org.tasks.activities;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AlertDialog; import android.support.v7.app.AlertDialog;
import android.view.View; import android.view.View;
@ -27,7 +26,6 @@ import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop;
public class SortActivity extends InjectingAppCompatActivity { public class SortActivity extends InjectingAppCompatActivity {
public static final String EXTRA_MANUAL_ENABLED = "extra_manual_enabled"; public static final String EXTRA_MANUAL_ENABLED = "extra_manual_enabled";
public static final String EXTRA_TOGGLE_MANUAL = "extra_toggle_manual";
@Inject Preferences preferences; @Inject Preferences preferences;
@Inject DialogBuilder dialogBuilder; @Inject DialogBuilder dialogBuilder;
@ -117,7 +115,6 @@ public class SortActivity extends InjectingAppCompatActivity {
private void setSelection(boolean reverse) { private void setSelection(boolean reverse) {
preferences.setBoolean(R.string.p_reverse_sort, reverse); preferences.setBoolean(R.string.p_reverse_sort, reverse);
final boolean wasManual = preferences.getBoolean(R.string.p_manual_sort, false);
final boolean isManual = manualEnabled && selectedIndex == 0; final boolean isManual = manualEnabled && selectedIndex == 0;
preferences.setBoolean(R.string.p_manual_sort, isManual); preferences.setBoolean(R.string.p_manual_sort, isManual);
@ -126,11 +123,7 @@ public class SortActivity extends InjectingAppCompatActivity {
preferences.setSortMode(getSortMode(manualEnabled ? selectedIndex : selectedIndex + 1)); preferences.setSortMode(getSortMode(manualEnabled ? selectedIndex : selectedIndex + 1));
} }
setResult(RESULT_OK, new Intent() {{ setResult(RESULT_OK);
if (wasManual != isManual) {
putExtra(EXTRA_TOGGLE_MANUAL, isManual);
}
}});
finish(); finish();
} }

Loading…
Cancel
Save