diff --git a/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java index 6a240a197..3821799fb 100644 --- a/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java +++ b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java @@ -54,7 +54,7 @@ public class GtasksListFragment extends SubtasksListFragment { private GtasksList list; @Override - protected OrderedListFragmentHelperInterface createFragmentHelper() { + protected OrderedListFragmentHelperInterface createFragmentHelper() { return new OrderedMetadataListFragmentHelper<>(preferences, taskAttachmentDao, taskService, metadataDao, this, gtasksTaskListUpdater, dialogBuilder); } diff --git a/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java b/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java index 716ae6956..a44d32387 100644 --- a/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java +++ b/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java @@ -45,7 +45,7 @@ import java.util.concurrent.atomic.AtomicReference; import timber.log.Timber; -public class OrderedMetadataListFragmentHelper implements OrderedListFragmentHelperInterface { +public class OrderedMetadataListFragmentHelper implements OrderedListFragmentHelperInterface { private final DisplayMetrics metrics = new DisplayMetrics(); private final OrderedMetadataListUpdater updater; diff --git a/src/main/java/com/todoroo/astrid/actfm/TagViewFragment.java b/src/main/java/com/todoroo/astrid/actfm/TagViewFragment.java index c9ede341b..50daf30bf 100644 --- a/src/main/java/com/todoroo/astrid/actfm/TagViewFragment.java +++ b/src/main/java/com/todoroo/astrid/actfm/TagViewFragment.java @@ -28,8 +28,6 @@ public class TagViewFragment extends TaskListFragment { @Override public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (savedInstanceState != null) { tagData = savedInstanceState.getParcelable(EXTRA_TAG_DATA); } else { @@ -55,6 +53,8 @@ public class TagViewFragment extends TaskListFragment { tagDataDao.persist(tagData); } } + + super.onCreate(savedInstanceState); } @Override diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java index 021b3d151..bba33eb04 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java @@ -540,7 +540,6 @@ public class TaskListActivity extends InjectingAppCompatActivity implements taskCreator.addToCalendar(task); onTaskListItemClicked(task.getId()); taskListFragment.loadTaskListContent(); - taskListFragment.selectCustomId(task.getId()); taskListFragment.onTaskCreated(task.getId(), task.getUUID()); } }; @@ -611,14 +610,9 @@ public class TaskListActivity extends InjectingAppCompatActivity implements navigationDrawer.refresh(); } } else if (requestCode == REQUEST_SORT) { - if (resultCode == RESULT_OK && data != null) { + if (resultCode == RESULT_OK) { TasksWidget.updateWidgets(this); - - if (data.hasExtra(SortActivity.EXTRA_TOGGLE_MANUAL)) { - onFilterItemClicked(getTaskListFragment().getFilter()); - } else { - getTaskListFragment().setUpTaskList(); - } + onFilterItemClicked(getTaskListFragment().getFilter()); } } else if (requestCode == REQUEST_UPGRADE) { if (resultCode == RESULT_OK) { diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index 8216b6068..ab44d1b90 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -46,22 +46,17 @@ import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.core.SortHelper; import com.todoroo.astrid.dao.TaskAttachmentDao; -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.gtasks.GtasksPreferenceService; import com.todoroo.astrid.helper.SyncActionHelper; import com.todoroo.astrid.service.TaskDeleter; import com.todoroo.astrid.service.TaskDuplicator; import com.todoroo.astrid.service.TaskService; -import com.todoroo.astrid.subtasks.SubtasksHelper; import com.todoroo.astrid.subtasks.SubtasksListFragment; import com.todoroo.astrid.subtasks.SubtasksTagListFragment; -import com.todoroo.astrid.subtasks.SubtasksUpdater; import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.timers.TimerPlugin; @@ -113,7 +108,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr // --- instance variables @Inject TaskService taskService; - @Inject TaskListMetadataDao taskListMetadataDao; @Inject TaskDeleter taskDeleter; @Inject TaskDuplicator taskDuplicator; @Inject @ForActivity Context context; @@ -124,21 +118,15 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr @Inject DialogBuilder dialogBuilder; @Inject SyncActionHelper syncActionHelper; - protected TaskAdapter taskAdapter = null; - protected RefreshReceiver refreshReceiver = new RefreshReceiver(); + private TaskAdapter taskAdapter = null; + private RefreshReceiver refreshReceiver = new RefreshReceiver(); + private OnTaskListItemClickedListener mListener; + private SwipeRefreshLayout listView; + private SwipeRefreshLayout emptyView; + protected final AtomicReference sqlQueryTemplate = new AtomicReference<>(); protected Filter filter; - 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) { extras = new Bundle(); // Just need an empty one to prevent potential null pointers } + + setTaskAdapter(); } public void initialize(Filter filter, Bundle extras) { @@ -264,20 +254,61 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr super.onActivityCreated(savedInstanceState); // We have a menu item to show in action bar. setHasOptionsMenu(true); - setUpUiComponents(); - initializeData(); + final ListView listView = getListView(); + 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)) { // In dual-pane mode, the list view highlights the selected item. - getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); - getListView().setItemsCanFocus(false); + listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); + listView.setItemsCanFocus(false); } if ((this instanceof SubtasksListFragment) || (this instanceof SubtasksTagListFragment)) { return; } - getListView().setOnItemClickListener(new OnItemClickListener() { + listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { @@ -301,102 +332,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr 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 @@ -454,7 +389,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr * the above method takes care of calling it in the correct way */ protected void initiateAutomaticSyncImpl() { - if (isCurrentTaskListFragment() && isInbox) { + if (isCurrentTaskListFragment() && BuiltInFilterExposer.isInbox(context, filter)) { syncActionHelper.initiateAutomaticSync(); } } @@ -497,6 +432,8 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr */ protected void refresh() { loadTaskListContent(); + + setSyncOngoing(gtasksPreferenceService.isOngoing()); } /* @@ -510,7 +447,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr */ public void loadTaskListContent() { if (taskAdapter == null) { - setUpTaskList(); + setTaskAdapter(); return; } @@ -518,16 +455,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr taskCursor.requery(); 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 cursor) { @@ -548,7 +475,7 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr /** * Fill in the Task List with current items */ - public void setUpTaskList() { + public void setTaskAdapter() { if (filter == null) { return; } @@ -560,10 +487,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr // set up list adapters taskAdapter = createTaskAdapter(currentCursor); - - setListAdapter(taskAdapter); - - loadTaskListContent(); } public Property[] taskProperties() { @@ -632,22 +555,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr 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 currentCursor = (TodorooCursor) taskAdapter.getCursor(); - for (int i = 0; i < currentCursor.getCount(); i++) { - currentCursor.moveToPosition(i); - if (currentCursor.get(Task.ID) == withCustomId) { - getListView().setSelection(i); - return; - } - } - } - /* * ====================================================================== * ============================================================== actions @@ -774,6 +681,6 @@ public class TaskListFragment extends InjectingListFragment implements SwipeRefr } protected boolean hasDraggableOption() { - return isInbox || isTodayFilter; + return BuiltInFilterExposer.isInbox(context, filter) || BuiltInFilterExposer.isTodayFilter(context, filter); } } diff --git a/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java b/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java index a53601240..0cb43bf04 100644 --- a/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java +++ b/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java @@ -40,7 +40,7 @@ import java.util.concurrent.atomic.AtomicReference; import timber.log.Timber; -public class AstridOrderedListFragmentHelper implements OrderedListFragmentHelperInterface { +public class AstridOrderedListFragmentHelper implements OrderedListFragmentHelperInterface { private final DisplayMetrics metrics = new DisplayMetrics(); private final AstridOrderedListUpdater updater; @@ -79,19 +79,18 @@ public class AstridOrderedListFragmentHelper implements OrderedListFragmen return fragment.getFilter(); } - public DraggableListView getTouchListView() { - return (DraggableListView) fragment.getListView(); - } - @Override public void setUpUiComponents() { TypedValue tv = new TypedValue(); getActivity().getTheme().resolveAttribute(R.attr.asThemeTextColor, tv, false); - getTouchListView().setDragndropBackgroundColor(tv.data); - getTouchListView().setDropListener(dropListener); - getTouchListView().setClickListener(rowClickListener); - getTouchListView().setSwipeListener(swipeListener); + DraggableListView draggableListView = (DraggableListView) fragment.getListView(); + draggableListView.setDragndropBackgroundColor(tv.data); + draggableListView.setDropListener(dropListener); + draggableListView.setClickListener(rowClickListener); + draggableListView.setSwipeListener(swipeListener); getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics); + + draggableListView.setItemHightNormal(taskAdapter.computeFullRowHeight()); } @Override @@ -177,8 +176,6 @@ public class AstridOrderedListFragmentHelper implements OrderedListFragmen taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, sqlQueryTemplate, dialogBuilder); - getTouchListView().setItemHightNormal(taskAdapter.computeFullRowHeight()); - taskAdapter.addOnCompletedTaskListener(new OnCompletedTaskListener() { @Override public void onCompletedTask(Task item, boolean newState) { @@ -281,7 +278,6 @@ public class AstridOrderedListFragmentHelper implements OrderedListFragmen updater.onCreateTask(list, getFilter(), uuid); fragment.reconstructCursor(); fragment.loadTaskListContent(); - fragment.selectCustomId(id); } @Override diff --git a/src/main/java/com/todoroo/astrid/subtasks/OrderedListFragmentHelperInterface.java b/src/main/java/com/todoroo/astrid/subtasks/OrderedListFragmentHelperInterface.java index 302c6020d..d99b317da 100644 --- a/src/main/java/com/todoroo/astrid/subtasks/OrderedListFragmentHelperInterface.java +++ b/src/main/java/com/todoroo/astrid/subtasks/OrderedListFragmentHelperInterface.java @@ -10,7 +10,7 @@ import com.todoroo.astrid.data.Task; import java.util.concurrent.atomic.AtomicReference; -public interface OrderedListFragmentHelperInterface { +public interface OrderedListFragmentHelperInterface { void setUpUiComponents(); void beforeSetUpTaskList(Filter filter); diff --git a/src/main/java/com/todoroo/astrid/subtasks/SubtasksListFragment.java b/src/main/java/com/todoroo/astrid/subtasks/SubtasksListFragment.java index 4b9f8039a..c157f99fc 100644 --- a/src/main/java/com/todoroo/astrid/subtasks/SubtasksListFragment.java +++ b/src/main/java/com/todoroo/astrid/subtasks/SubtasksListFragment.java @@ -7,6 +7,8 @@ package com.todoroo.astrid.subtasks; import android.app.Activity; import android.content.Context; +import android.os.Bundle; +import android.text.TextUtils; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; @@ -14,7 +16,9 @@ import android.widget.ListView; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.adapter.TaskAdapter; +import com.todoroo.astrid.core.BuiltInFilterExposer; import com.todoroo.astrid.dao.TaskAttachmentDao; +import com.todoroo.astrid.dao.TaskListMetadataDao; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.TaskListMetadata; import com.todoroo.astrid.service.TaskService; @@ -34,7 +38,7 @@ import javax.inject.Inject; */ public class SubtasksListFragment extends TaskListFragment { - protected OrderedListFragmentHelperInterface helper; + protected OrderedListFragmentHelperInterface helper; private int lastVisibleIndex = -1; @@ -44,6 +48,7 @@ public class SubtasksListFragment extends TaskListFragment { @Inject ActivityPreferences preferences; @Inject @ForApplication Context context; @Inject DialogBuilder dialogBuilder; + @Inject TaskListMetadataDao taskListMetadataDao; @Override public void onAttach(Activity activity) { @@ -52,7 +57,7 @@ public class SubtasksListFragment extends TaskListFragment { helper = createFragmentHelper(); } - protected OrderedListFragmentHelperInterface createFragmentHelper() { + protected OrderedListFragmentHelperInterface createFragmentHelper() { return new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater, dialogBuilder); } @@ -62,20 +67,48 @@ public class SubtasksListFragment extends TaskListFragment { } @Override - protected void setUpUiComponents() { - super.setUpUiComponents(); + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); helper.setUpUiComponents(); } @Override - public void setUpTaskList() { + public void setTaskAdapter() { if (helper instanceof AstridOrderedListFragmentHelper) { - ((AstridOrderedListFragmentHelper) helper).setList(taskListMetadata); + ((AstridOrderedListFragmentHelper) helper).setList(initializeTaskListMetadata()); } 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 @@ -109,10 +142,4 @@ public class SubtasksListFragment extends TaskListFragment { protected TaskAdapter createTaskAdapter(TodorooCursor cursor) { return helper.createTaskAdapter(context, cursor, sqlQueryTemplate); } - - @Override - protected void refresh() { - super.refresh(); - initializeTaskListMetadata(); - } } diff --git a/src/main/java/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java b/src/main/java/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java index 56685705a..358602ab3 100644 --- a/src/main/java/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java +++ b/src/main/java/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java @@ -7,6 +7,7 @@ package com.todoroo.astrid.subtasks; import android.app.Activity; import android.content.Context; +import android.os.Bundle; import android.view.View; import android.view.ViewGroup; @@ -14,6 +15,9 @@ import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.astrid.actfm.TagViewFragment; import com.todoroo.astrid.adapter.TaskAdapter; 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.TaskListMetadata; import com.todoroo.astrid.service.TaskService; @@ -33,6 +37,7 @@ public class SubtasksTagListFragment extends TagViewFragment { @Inject ActivityPreferences preferences; @Inject @ForApplication Context context; @Inject DialogBuilder dialogBuilder; + @Inject TaskListMetadataDao taskListMetadataDao; private AstridOrderedListFragmentHelper helper; @@ -45,11 +50,6 @@ public class SubtasksTagListFragment extends TagViewFragment { helper = new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater, dialogBuilder); } - @Override - protected void postLoadTaskListMetadata() { - helper.setList(taskListMetadata); - } - @Override protected View getListBody(ViewGroup root) { return getActivity().getLayoutInflater().inflate( @@ -57,17 +57,30 @@ public class SubtasksTagListFragment extends TagViewFragment { } @Override - protected void setUpUiComponents() { - super.setUpUiComponents(); + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); helper.setUpUiComponents(); } @Override - public void setUpTaskList() { + public void setTaskAdapter() { + helper.setList(initializeTaskListMetadata()); 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 @@ -100,10 +113,4 @@ public class SubtasksTagListFragment extends TagViewFragment { protected TaskAdapter createTaskAdapter(TodorooCursor cursor) { return helper.createTaskAdapter(context, cursor, sqlQueryTemplate); } - - @Override - protected void refresh() { - super.refresh(); - initializeTaskListMetadata(); - } } diff --git a/src/main/java/org/tasks/activities/SortActivity.java b/src/main/java/org/tasks/activities/SortActivity.java index ff2e47e5b..bf8961889 100644 --- a/src/main/java/org/tasks/activities/SortActivity.java +++ b/src/main/java/org/tasks/activities/SortActivity.java @@ -1,7 +1,6 @@ package org.tasks.activities; import android.content.DialogInterface; -import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.view.View; @@ -27,7 +26,6 @@ import static com.todoroo.andlib.utility.AndroidUtilities.atLeastLollipop; public class SortActivity extends InjectingAppCompatActivity { public static final String EXTRA_MANUAL_ENABLED = "extra_manual_enabled"; - public static final String EXTRA_TOGGLE_MANUAL = "extra_toggle_manual"; @Inject Preferences preferences; @Inject DialogBuilder dialogBuilder; @@ -117,7 +115,6 @@ public class SortActivity extends InjectingAppCompatActivity { private void setSelection(boolean 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; preferences.setBoolean(R.string.p_manual_sort, isManual); @@ -126,11 +123,7 @@ public class SortActivity extends InjectingAppCompatActivity { preferences.setSortMode(getSortMode(manualEnabled ? selectedIndex : selectedIndex + 1)); } - setResult(RESULT_OK, new Intent() {{ - if (wasManual != isManual) { - putExtra(EXTRA_TOGGLE_MANUAL, isManual); - } - }}); + setResult(RESULT_OK); finish(); }