From 01d5e421f5380f0402f5bab96f78ace05424457a Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 7 Jul 2016 10:47:57 -0500 Subject: [PATCH] Only repopulate nav drawer when necessary --- .../todoroo/astrid/actfm/TagViewFragment.java | 3 +-- .../astrid/activity/TaskEditFragment.java | 5 +--- .../astrid/activity/TaskListActivity.java | 27 +++---------------- .../astrid/activity/TaskListFragment.java | 10 +------ .../todoroo/astrid/adapter/FilterAdapter.java | 2 -- .../todoroo/astrid/service/TaskService.java | 16 ++--------- src/main/java/org/tasks/Tasks.java | 1 - .../java/org/tasks/filters/FilterCounter.java | 6 ++--- .../tasks/ui/NavigationDrawerFragment.java | 25 +++++++---------- 9 files changed, 20 insertions(+), 75 deletions(-) diff --git a/src/main/java/com/todoroo/astrid/actfm/TagViewFragment.java b/src/main/java/com/todoroo/astrid/actfm/TagViewFragment.java index 45c6c7def..e1d11e263 100644 --- a/src/main/java/com/todoroo/astrid/actfm/TagViewFragment.java +++ b/src/main/java/com/todoroo/astrid/actfm/TagViewFragment.java @@ -92,11 +92,10 @@ public class TagViewFragment extends TaskListFragment { String activeUuid = tagData.getUuid(); if (activeUuid.equals(uuid)) { activity.onFilterItemClicked(null); - activity.clearNavigationDrawer(); // Should auto refresh } } - activity.refreshNavigationDrawer(); + activity.repopulateNavigationDrawer(); broadcaster.refresh(); } } else { diff --git a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index 9041ecccd..ecded7949 100755 --- a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -215,12 +215,9 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar boolean tagsChanged = Flags.check(Flags.TAGS_CHANGED); - // Notify task list fragment in multi-column case - // since the activity isn't actually finishing TaskListActivity tla = (TaskListActivity) getActivity(); - if (tagsChanged) { - tla.tagsChanged(); + tla.repopulateNavigationDrawer(); } if (isNewTask) { tla.getTaskListFragment().onTaskCreated(model.getId(), model.getUuid()); diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java index 7ad21d439..52e6c91b5 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListActivity.java @@ -372,10 +372,9 @@ public class TaskListActivity extends InjectingAppCompatActivity implements Filter newList = data.getParcelableExtra(TagSettingsActivity.TOKEN_NEW_FILTER); if (newList != null) { onFilterItemClicked(newList); - navigationDrawer.clear(); } - navigationDrawer.refresh(); + repopulateNavigationDrawer(); } else if (requestCode == REQUEST_UPGRADE) { if (resultCode == RESULT_OK) { if (data != null && data.getBooleanExtra(UpgradeActivity.EXTRA_RESTART, false)) { @@ -389,28 +388,8 @@ public class TaskListActivity extends InjectingAppCompatActivity implements } } - public void refreshNavigationDrawer() { - navigationDrawer.refresh(); - } - - public void clearNavigationDrawer() { - navigationDrawer.clear(); - } - - protected void tagsChanged() { - tagsChanged(false); - } - - private void tagsChanged(boolean onActivityResult) { - if (onActivityResult) { - navigationDrawer.clear(); - } else { - navigationDrawer.refresh(); - } - } - - public void refreshFilterCount() { - navigationDrawer.refreshFilterCount(); + public void repopulateNavigationDrawer() { + navigationDrawer.repopulateList(); } public TaskListFragment getTaskListFragment() { diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index c7edab030..1b6581979 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -470,8 +470,6 @@ public class TaskListFragment extends InjectingListFragment implements getActivity().registerReceiver(refreshReceiver, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_REFRESH)); - refreshFilterCount(); - initiateAutomaticSyncImpl(); refresh(); @@ -696,12 +694,6 @@ public class TaskListFragment extends InjectingListFragment implements TimerPlugin.stopTimer(notificationManager, taskService, context, task); } - public void refreshFilterCount() { - if (getActivity() instanceof TaskListActivity) { - ((TaskListActivity) getActivity()).refreshFilterCount(); - } - } - @Override public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); @@ -736,7 +728,7 @@ public class TaskListFragment extends InjectingListFragment implements ((TaskListActivity) getActivity()).onFilterItemClicked(null); } - ((TaskListActivity) getActivity()).refreshNavigationDrawer(); + ((TaskListActivity) getActivity()).repopulateNavigationDrawer(); broadcaster.refresh(); } } else { diff --git a/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.java b/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.java index 9a213500d..e1d8a2888 100644 --- a/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.java +++ b/src/main/java/com/todoroo/astrid/adapter/FilterAdapter.java @@ -301,8 +301,6 @@ public class FilterAdapter extends ArrayAdapter { activity.registerReceiver(filterListUpdateReceiver, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_REFRESH)); populateList(); - - refreshFilterCount(); } /** diff --git a/src/main/java/com/todoroo/astrid/service/TaskService.java b/src/main/java/com/todoroo/astrid/service/TaskService.java index 1e1df2a18..82fd423c2 100644 --- a/src/main/java/com/todoroo/astrid/service/TaskService.java +++ b/src/main/java/com/todoroo/astrid/service/TaskService.java @@ -27,7 +27,6 @@ import com.todoroo.astrid.tags.TaskToTagMetadata; import com.todoroo.astrid.utility.TitleParser; import org.tasks.Broadcaster; -import org.tasks.filters.FilterCounter; import org.tasks.scheduling.RefreshScheduler; import java.util.ArrayList; @@ -53,18 +52,16 @@ public class TaskService { private final TagDataDao tagDataDao; private final TaskDao taskDao; private final Broadcaster broadcaster; - private final FilterCounter filterCounter; private final RefreshScheduler refreshScheduler; private final TagService tagService; private final MetadataDao metadataDao; @Inject - public TaskService(TagDataDao tagDataDao, TaskDao taskDao, Broadcaster broadcaster, FilterCounter filterCounter, + public TaskService(TagDataDao tagDataDao, TaskDao taskDao, Broadcaster broadcaster, RefreshScheduler refreshScheduler, TagService tagService, MetadataDao metadataDao) { this.tagDataDao = tagDataDao; this.taskDao = taskDao; this.broadcaster = broadcaster; - this.filterCounter = filterCounter; this.refreshScheduler = refreshScheduler; this.tagService = tagService; this.metadataDao = metadataDao; @@ -104,7 +101,7 @@ public class TaskService { */ public boolean save(Task item) { boolean databaseChanged = taskDao.save(item); - broadcastFilterListUpdated(); + broadcaster.refresh(); refreshScheduler.scheduleRefresh(item); return databaseChanged; } @@ -202,15 +199,6 @@ public class TaskService { } } - private void broadcastFilterListUpdated() { - filterCounter.refreshFilterCounts(new Runnable() { - @Override - public void run() { - broadcaster.refresh(); - } - }); - } - /** * Parse quick add markup for the given task * @param tags an empty array to apply tags to diff --git a/src/main/java/org/tasks/Tasks.java b/src/main/java/org/tasks/Tasks.java index 47bf60ae9..3c7dacfa3 100644 --- a/src/main/java/org/tasks/Tasks.java +++ b/src/main/java/org/tasks/Tasks.java @@ -36,7 +36,6 @@ public class Tasks extends InjectingApplication { @Inject SyncV2Service syncV2Service; @Inject TagService tagService; @Inject Broadcaster broadcaster; - @Inject FilterCounter filterCounter; @Inject SyncThrottle syncThrottle; @Inject Preferences preferences; @Inject Tracker tracker; diff --git a/src/main/java/org/tasks/filters/FilterCounter.java b/src/main/java/org/tasks/filters/FilterCounter.java index 808a3d570..3b712c044 100644 --- a/src/main/java/org/tasks/filters/FilterCounter.java +++ b/src/main/java/org/tasks/filters/FilterCounter.java @@ -16,9 +16,7 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import javax.inject.Inject; -import javax.inject.Singleton; -@Singleton public class FilterCounter { // Previous solution involved a queue of filters and a filterSizeLoadingThread. The filterSizeLoadingThread had // a few problems: how to make sure that the thread is resumed when the controlling activity is resumed, and @@ -59,7 +57,9 @@ public class FilterCounter { } public void registerFilter(Filter filter) { - filterCounts.put(filter, 0); + if (!filterCounts.containsKey(filter)) { + filterCounts.put(filter, 0); + } } public boolean containsKey(FilterListItem filter) { diff --git a/src/main/java/org/tasks/ui/NavigationDrawerFragment.java b/src/main/java/org/tasks/ui/NavigationDrawerFragment.java index 8f7c4a096..c9d4342ba 100644 --- a/src/main/java/org/tasks/ui/NavigationDrawerFragment.java +++ b/src/main/java/org/tasks/ui/NavigationDrawerFragment.java @@ -89,7 +89,7 @@ public class NavigationDrawerFragment extends InjectingFragment { public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == FilterAdapter.REQUEST_SETTINGS && resultCode == Activity.RESULT_OK && data != null) { if (data.getBooleanExtra(AppearancePreferences.EXTRA_FILTERS_CHANGED, false)) { - refresh(); + repopulateList(); } if (data.getBooleanExtra(AppearancePreferences.EXTRA_RESTART, false)) { TaskListActivity activity = (TaskListActivity) getActivity(); @@ -97,7 +97,6 @@ public class NavigationDrawerFragment extends InjectingFragment { intent.putExtra(TaskListActivity.OPEN_FILTER, activity.getCurrentFilter()); activity.finish(); activity.startActivity(intent); - refresh(); } } else if ((requestCode == NavigationDrawerFragment.REQUEST_NEW_LIST || requestCode == TaskListFragment.ACTIVITY_REQUEST_NEW_FILTER) && @@ -243,10 +242,6 @@ public class NavigationDrawerFragment extends InjectingFragment { } } - public void refreshFilterCount() { - adapter.refreshFilterCount(); - } - public interface OnFilterItemClickedListener { void onFilterItemClicked(FilterListItem item); } @@ -255,10 +250,14 @@ public class NavigationDrawerFragment extends InjectingFragment { adapter.clear(); } - public void refresh() { + public void repopulateList() { adapter.populateList(); } + private void refreshFilterCount() { + adapter.refreshFilterCount(); + } + @Override public void onResume() { super.onResume(); @@ -269,6 +268,8 @@ public class NavigationDrawerFragment extends InjectingFragment { // also load sync actions getActivity().registerReceiver(refreshReceiver, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_REFRESH)); + + refreshFilterCount(); } /** @@ -284,15 +285,7 @@ public class NavigationDrawerFragment extends InjectingFragment { return; } - Activity activity = getActivity(); - if (activity != null) { - activity.runOnUiThread(new Runnable() { - @Override - public void run() { - refresh(); - } - }); - } + refreshFilterCount(); } } }