Only repopulate nav drawer when necessary

pull/437/head
Alex Baker 10 years ago
parent e952a29728
commit 01d5e421f5

@ -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 {

@ -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());

@ -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() {

@ -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 {

@ -301,8 +301,6 @@ public class FilterAdapter extends ArrayAdapter<FilterListItem> {
activity.registerReceiver(filterListUpdateReceiver, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_REFRESH));
populateList();
refreshFilterCount();
}
/**

@ -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

@ -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;

@ -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) {

@ -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();
}
}
}

Loading…
Cancel
Save