From d38f40ae86e2950d5436f3b6fe3a7fa007f61a86 Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sun, 26 Jun 2016 00:53:03 -0500 Subject: [PATCH] Update CheckBoxes injection --- .../astrid/gtasks/GtasksListFragment.java | 4 +- .../OrderedMetadataListFragmentHelper.java | 11 +++-- .../astrid/activity/TaskListFragment.java | 2 +- .../todoroo/astrid/adapter/TaskAdapter.java | 4 +- .../AstridOrderedListFragmentHelper.java | 11 +++-- .../astrid/subtasks/SubtasksListFragment.java | 4 +- .../subtasks/SubtasksTagListFragment.java | 4 +- .../astrid/ui/EditTitleControlSet.java | 10 +--- .../tasks/injection/ApplicationModule.java | 17 +++++++ src/main/java/org/tasks/ui/CheckBoxes.java | 47 ++++++++----------- .../java/org/tasks/ui/WidgetCheckBoxes.java | 31 +++++------- .../tasks/widget/ScrollableViewsFactory.java | 5 +- .../widget/ScrollableWidgetUpdateService.java | 4 +- 13 files changed, 82 insertions(+), 72 deletions(-) diff --git a/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java index a7858b82a..868636a15 100644 --- a/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java +++ b/src/googleplay/java/com/todoroo/astrid/gtasks/GtasksListFragment.java @@ -28,6 +28,7 @@ import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.Preferences; import org.tasks.sync.IndeterminateProgressBarSyncResultCallback; import org.tasks.sync.SyncThrottle; +import org.tasks.ui.CheckBoxes; import javax.inject.Inject; @@ -52,12 +53,13 @@ public class GtasksListFragment extends SubtasksListFragment { @Inject SyncThrottle syncThrottle; @Inject DialogBuilder dialogBuilder; @Inject Broadcaster broadcaster; + @Inject CheckBoxes checkBoxes; private GtasksList list; @Override protected OrderedListFragmentHelperInterface createFragmentHelper() { - return new OrderedMetadataListFragmentHelper<>(preferences, taskAttachmentDao, taskService, metadataDao, this, gtasksTaskListUpdater, dialogBuilder); + return new OrderedMetadataListFragmentHelper<>(preferences, taskAttachmentDao, taskService, metadataDao, this, gtasksTaskListUpdater, dialogBuilder, checkBoxes); } @Override diff --git a/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java b/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java index fe7d42008..6a81fa140 100644 --- a/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java +++ b/src/googleplay/java/com/todoroo/astrid/gtasks/OrderedMetadataListFragmentHelper.java @@ -35,6 +35,7 @@ import com.todoroo.astrid.ui.DraggableListView; import org.tasks.R; import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.Preferences; +import org.tasks.ui.CheckBoxes; import java.util.ArrayList; import java.util.Arrays; @@ -50,6 +51,7 @@ public class OrderedMetadataListFragmentHelper implements OrderedListFragm private final DisplayMetrics metrics = new DisplayMetrics(); private final OrderedMetadataListUpdater updater; private DialogBuilder dialogBuilder; + private CheckBoxes checkBoxes; private final TaskListFragment fragment; private final Preferences preferences; @@ -64,7 +66,7 @@ public class OrderedMetadataListFragmentHelper implements OrderedListFragm public OrderedMetadataListFragmentHelper(Preferences preferences, TaskAttachmentDao taskAttachmentDao, TaskService taskService, MetadataDao metadataDao, TaskListFragment fragment, OrderedMetadataListUpdater updater, - DialogBuilder dialogBuilder) { + DialogBuilder dialogBuilder, CheckBoxes checkBoxes) { this.preferences = preferences; this.taskAttachmentDao = taskAttachmentDao; this.taskService = taskService; @@ -72,6 +74,7 @@ public class OrderedMetadataListFragmentHelper implements OrderedListFragm this.fragment = fragment; this.updater = updater; this.dialogBuilder = dialogBuilder; + this.checkBoxes = checkBoxes; } // --- ui component setup @@ -186,7 +189,7 @@ public class OrderedMetadataListFragmentHelper implements OrderedListFragm public TaskAdapter createTaskAdapter(Context context, TodorooCursor cursor, AtomicReference sqlQueryTemplate) { - taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, sqlQueryTemplate, dialogBuilder); + taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, sqlQueryTemplate, dialogBuilder, checkBoxes); taskAdapter.addOnCompletedTaskListener(new OnCompletedTaskListener() { @Override @@ -201,8 +204,8 @@ public class OrderedMetadataListFragmentHelper implements OrderedListFragm private final class DraggableTaskAdapter extends TaskAdapter { private DraggableTaskAdapter(Context context, Preferences preferences, TaskListFragment activity, - Cursor c, AtomicReference query, DialogBuilder dialogBuilder) { - super(context, preferences, taskAttachmentDao, taskService, activity, c, query, null, dialogBuilder); + Cursor c, AtomicReference query, DialogBuilder dialogBuilder, CheckBoxes checkBoxes) { + super(context, preferences, taskAttachmentDao, taskService, activity, c, query, null, dialogBuilder, checkBoxes); } @Override diff --git a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java index a3befc53b..38de85a03 100644 --- a/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskListFragment.java @@ -560,7 +560,7 @@ public class TaskListFragment extends InjectingListFragment implements @Override public void onCompletedTask(Task item, boolean newState) { } - }, dialogBuilder); + }, dialogBuilder, checkBoxes); } public static final String TAGS_METADATA_JOIN = "for_tags"; //$NON-NLS-1$ diff --git a/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java b/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java index 6ec5ea23a..413a608ce 100644 --- a/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java +++ b/src/main/java/com/todoroo/astrid/adapter/TaskAdapter.java @@ -116,9 +116,9 @@ public class TaskAdapter extends CursorAdapter implements Filterable { public TaskAdapter(Context context, Preferences preferences, TaskAttachmentDao taskAttachmentDao, TaskService taskService, TaskListFragment fragment, Cursor c, AtomicReference query, OnCompletedTaskListener onCompletedTaskListener, - DialogBuilder dialogBuilder) { + DialogBuilder dialogBuilder, CheckBoxes checkBoxes) { super(context, c, false); - this.checkBoxes = new CheckBoxes(context); + this.checkBoxes = checkBoxes; this.preferences = preferences; this.taskAttachmentDao = taskAttachmentDao; this.taskService = taskService; diff --git a/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java b/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java index a4410de45..c4a344d40 100644 --- a/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java +++ b/src/main/java/com/todoroo/astrid/subtasks/AstridOrderedListFragmentHelper.java @@ -31,6 +31,7 @@ import com.todoroo.astrid.ui.DraggableListView; import org.tasks.R; import org.tasks.dialogs.DialogBuilder; import org.tasks.preferences.Preferences; +import org.tasks.ui.CheckBoxes; import java.util.ArrayList; import java.util.Collections; @@ -45,6 +46,7 @@ public class AstridOrderedListFragmentHelper implements OrderedListFragmen private final DisplayMetrics metrics = new DisplayMetrics(); private final AstridOrderedListUpdater updater; private DialogBuilder dialogBuilder; + private CheckBoxes checkBoxes; private final TaskListFragment fragment; private final Preferences preferences; private final TaskAttachmentDao taskAttachmentDao; @@ -56,13 +58,14 @@ public class AstridOrderedListFragmentHelper implements OrderedListFragmen public AstridOrderedListFragmentHelper(Preferences preferences, TaskAttachmentDao taskAttachmentDao, TaskService taskService, TaskListFragment fragment, - AstridOrderedListUpdater updater, DialogBuilder dialogBuilder) { + AstridOrderedListUpdater updater, DialogBuilder dialogBuilder, CheckBoxes checkBoxes) { this.preferences = preferences; this.taskAttachmentDao = taskAttachmentDao; this.taskService = taskService; this.fragment = fragment; this.updater = updater; this.dialogBuilder = dialogBuilder; + this.checkBoxes = checkBoxes; } // --- ui component setup @@ -174,7 +177,7 @@ public class AstridOrderedListFragmentHelper implements OrderedListFragmen public TaskAdapter createTaskAdapter(Context context, TodorooCursor cursor, AtomicReference sqlQueryTemplate) { - taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, sqlQueryTemplate, dialogBuilder); + taskAdapter = new DraggableTaskAdapter(context, preferences, fragment, cursor, sqlQueryTemplate, dialogBuilder, checkBoxes); taskAdapter.addOnCompletedTaskListener(new OnCompletedTaskListener() { @Override @@ -189,8 +192,8 @@ public class AstridOrderedListFragmentHelper implements OrderedListFragmen private final class DraggableTaskAdapter extends TaskAdapter { private DraggableTaskAdapter(Context context, Preferences preferences, TaskListFragment activity, - Cursor c, AtomicReference query, DialogBuilder dialogBuilder) { - super(context, preferences, taskAttachmentDao, taskService, activity, c, query, null, dialogBuilder); + Cursor c, AtomicReference query, DialogBuilder dialogBuilder, CheckBoxes checkBoxes) { + super(context, preferences, taskAttachmentDao, taskService, activity, c, query, null, dialogBuilder, checkBoxes); } @Override diff --git a/src/main/java/com/todoroo/astrid/subtasks/SubtasksListFragment.java b/src/main/java/com/todoroo/astrid/subtasks/SubtasksListFragment.java index a8d12dd3a..49a7725ad 100644 --- a/src/main/java/com/todoroo/astrid/subtasks/SubtasksListFragment.java +++ b/src/main/java/com/todoroo/astrid/subtasks/SubtasksListFragment.java @@ -29,6 +29,7 @@ import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.ForApplication; import org.tasks.injection.FragmentComponent; import org.tasks.preferences.Preferences; +import org.tasks.ui.CheckBoxes; import javax.inject.Inject; @@ -57,6 +58,7 @@ public class SubtasksListFragment extends TaskListFragment { @Inject @ForApplication Context context; @Inject DialogBuilder dialogBuilder; @Inject TaskListMetadataDao taskListMetadataDao; + @Inject CheckBoxes checkBoxes; @Override public void onAttach(Activity activity) { @@ -66,7 +68,7 @@ public class SubtasksListFragment extends TaskListFragment { } protected OrderedListFragmentHelperInterface createFragmentHelper() { - return new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater, dialogBuilder); + return new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater, dialogBuilder, checkBoxes); } @Override diff --git a/src/main/java/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java b/src/main/java/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java index a1020b44c..d80234a4f 100644 --- a/src/main/java/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java +++ b/src/main/java/com/todoroo/astrid/subtasks/SubtasksTagListFragment.java @@ -28,6 +28,7 @@ import org.tasks.dialogs.DialogBuilder; import org.tasks.injection.ForApplication; import org.tasks.injection.FragmentComponent; import org.tasks.preferences.Preferences; +import org.tasks.ui.CheckBoxes; import javax.inject.Inject; @@ -47,6 +48,7 @@ public class SubtasksTagListFragment extends TagViewFragment { @Inject @ForApplication Context context; @Inject DialogBuilder dialogBuilder; @Inject TaskListMetadataDao taskListMetadataDao; + @Inject CheckBoxes checkBoxes; private AstridOrderedListFragmentHelper helper; @@ -56,7 +58,7 @@ public class SubtasksTagListFragment extends TagViewFragment { public void onAttach(Activity activity) { super.onAttach(activity); - helper = new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater, dialogBuilder); + helper = new AstridOrderedListFragmentHelper<>(preferences, taskAttachmentDao, taskService, this, subtasksFilterUpdater, dialogBuilder, checkBoxes); } @Override diff --git a/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java b/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java index 1a075bc31..2cbd58b20 100644 --- a/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java +++ b/src/main/java/com/todoroo/astrid/ui/EditTitleControlSet.java @@ -5,7 +5,6 @@ */ package com.todoroo.astrid.ui; -import android.app.Activity; import android.content.Context; import android.graphics.Paint; import android.os.Bundle; @@ -48,24 +47,17 @@ public class EditTitleControlSet extends TaskEditControlFragment { private static final String EXTRA_PRIORITY = "extra_priority"; @Inject TaskService taskService; + @Inject CheckBoxes checkBoxes; @BindView(R.id.title) EditText editText; @BindView(R.id.completeBox) CheckableImageView completeBox; - private CheckBoxes checkBoxes; private boolean isComplete; private boolean isRepeating; private int importanceValue; private boolean isNewTask; private String title; - @Override - public void onAttach(Activity activity) { - super.onAttach(activity); - - checkBoxes = new CheckBoxes(activity); - } - @Override protected void inject(FragmentComponent component) { component.inject(this); diff --git a/src/main/java/org/tasks/injection/ApplicationModule.java b/src/main/java/org/tasks/injection/ApplicationModule.java index 89ade44a2..1ae4f2858 100644 --- a/src/main/java/org/tasks/injection/ApplicationModule.java +++ b/src/main/java/org/tasks/injection/ApplicationModule.java @@ -4,6 +4,8 @@ import android.content.Context; import org.tasks.ErrorReportingSingleThreadExecutor; import org.tasks.analytics.Tracker; +import org.tasks.ui.CheckBoxes; +import org.tasks.ui.WidgetCheckBoxes; import java.util.concurrent.Executor; @@ -13,6 +15,9 @@ import javax.inject.Singleton; import dagger.Module; import dagger.Provides; +import static org.tasks.ui.CheckBoxes.newCheckBoxes; +import static org.tasks.ui.WidgetCheckBoxes.newWidgetCheckBoxes; + @Module public class ApplicationModule { private Context context; @@ -33,4 +38,16 @@ public class ApplicationModule { public Executor getIabExecutor(Tracker tracker) { return new ErrorReportingSingleThreadExecutor("iab-executor", tracker); } + + @Provides + @Singleton + public CheckBoxes getCheckBoxes() { + return newCheckBoxes(context); + } + + @Provides + @Singleton + public WidgetCheckBoxes getWidgetCheckBoxes(CheckBoxes checkBoxes) { + return newWidgetCheckBoxes(checkBoxes); + } } diff --git a/src/main/java/org/tasks/ui/CheckBoxes.java b/src/main/java/org/tasks/ui/CheckBoxes.java index b44f91a45..130659ac6 100644 --- a/src/main/java/org/tasks/ui/CheckBoxes.java +++ b/src/main/java/org/tasks/ui/CheckBoxes.java @@ -9,40 +9,33 @@ import com.google.common.collect.ImmutableList; import com.google.common.primitives.Ints; import org.tasks.R; -import org.tasks.injection.ForApplication; import java.util.List; -import javax.inject.Inject; - -import timber.log.Timber; - public class CheckBoxes { + public static CheckBoxes newCheckBoxes(Context context) { + return new CheckBoxes(context); + } + private static final int MAX_IMPORTANCE_INDEX = 3; - private static boolean initialized; - private static List checkboxes; - private static List repeatingCheckboxes; - private static List completedCheckboxes; - private static List priorityColors; - private static int[] priorityColorsArray; - - @Inject - public CheckBoxes(@ForApplication Context context) { - if (!initialized) { - Timber.d("Initializing checkboxes"); - checkboxes = wrapDrawable(context, R.drawable.ic_check_box_outline_blank_24dp); - repeatingCheckboxes = wrapDrawable(context, R.drawable.ic_repeat_24dp); - completedCheckboxes = wrapDrawable(context, R.drawable.ic_check_box_24dp); - priorityColors = ImmutableList.of( - context.getResources().getColor(R.color.importance_1), - context.getResources().getColor(R.color.importance_2), - context.getResources().getColor(R.color.importance_3), - context.getResources().getColor(R.color.importance_4)); - priorityColorsArray = Ints.toArray(priorityColors); - initialized = true; - } + private List checkboxes; + private List repeatingCheckboxes; + private List completedCheckboxes; + private List priorityColors; + private int[] priorityColorsArray; + + private CheckBoxes(Context context) { + checkboxes = wrapDrawable(context, R.drawable.ic_check_box_outline_blank_24dp); + repeatingCheckboxes = wrapDrawable(context, R.drawable.ic_repeat_24dp); + completedCheckboxes = wrapDrawable(context, R.drawable.ic_check_box_24dp); + priorityColors = ImmutableList.of( + context.getResources().getColor(R.color.importance_1), + context.getResources().getColor(R.color.importance_2), + context.getResources().getColor(R.color.importance_3), + context.getResources().getColor(R.color.importance_4)); + priorityColorsArray = Ints.toArray(priorityColors); } public List getPriorityColors() { diff --git a/src/main/java/org/tasks/ui/WidgetCheckBoxes.java b/src/main/java/org/tasks/ui/WidgetCheckBoxes.java index 233c8e55b..c62070c31 100644 --- a/src/main/java/org/tasks/ui/WidgetCheckBoxes.java +++ b/src/main/java/org/tasks/ui/WidgetCheckBoxes.java @@ -1,6 +1,5 @@ package org.tasks.ui; -import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; @@ -8,12 +7,8 @@ import android.graphics.drawable.Drawable; import com.google.common.base.Function; -import org.tasks.injection.ForApplication; - import java.util.List; -import javax.inject.Inject; - import timber.log.Timber; import static com.google.common.collect.Lists.newArrayList; @@ -21,21 +16,19 @@ import static com.google.common.collect.Lists.transform; public class WidgetCheckBoxes { - private static boolean initialized; - private static List checkboxes; - private static List repeatingCheckboxes; - private static List completedCheckboxes; + public static WidgetCheckBoxes newWidgetCheckBoxes(CheckBoxes checkBoxes) { + return new WidgetCheckBoxes(checkBoxes); + } + + private List checkboxes; + private List repeatingCheckboxes; + private List completedCheckboxes; - @Inject - public WidgetCheckBoxes(@ForApplication Context context) { - if (!initialized) { - CheckBoxes checkBoxes = new CheckBoxes(context); - Timber.d("Initializing widget checkboxes"); - checkboxes = convertToBitmap(checkBoxes.getCheckBoxes()); - repeatingCheckboxes = convertToBitmap(checkBoxes.getRepeatingCheckBoxes()); - completedCheckboxes = convertToBitmap(checkBoxes.getCompletedCheckBoxes()); - initialized = true; - } + private WidgetCheckBoxes(CheckBoxes checkBoxes) { + Timber.d("Initializing widget checkboxes"); + checkboxes = convertToBitmap(checkBoxes.getCheckBoxes()); + repeatingCheckboxes = convertToBitmap(checkBoxes.getRepeatingCheckBoxes()); + completedCheckboxes = convertToBitmap(checkBoxes.getCompletedCheckBoxes()); } public Bitmap getCompletedCheckbox(int importance) { diff --git a/src/main/java/org/tasks/widget/ScrollableViewsFactory.java b/src/main/java/org/tasks/widget/ScrollableViewsFactory.java index a0a65fbfe..9c0e46f3e 100644 --- a/src/main/java/org/tasks/widget/ScrollableViewsFactory.java +++ b/src/main/java/org/tasks/widget/ScrollableViewsFactory.java @@ -55,7 +55,8 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac int widgetId, Database database, TaskService taskService, - DefaultFilterProvider defaultFilterProvider) { + DefaultFilterProvider defaultFilterProvider, + WidgetCheckBoxes checkBoxes) { this.subtasksHelper = subtasksHelper; this.preferences = preferences; this.context = context; @@ -64,9 +65,9 @@ public class ScrollableViewsFactory implements RemoteViewsService.RemoteViewsFac this.database = database; this.taskService = taskService; this.defaultFilterProvider = defaultFilterProvider; + this.checkBoxes = checkBoxes; themeTextColor = theme.getTextColor(); - checkBoxes = new WidgetCheckBoxes(context); showDueDates = preferences.getBoolean(WidgetConfigActivity.PREF_SHOW_DUE_DATE + widgetId, false); hideCheckboxes = preferences.getBoolean(WidgetConfigActivity.PREF_HIDE_CHECKBOXES + widgetId, false); } diff --git a/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java b/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java index 3b5694e35..e199fa538 100644 --- a/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java +++ b/src/main/java/org/tasks/widget/ScrollableWidgetUpdateService.java @@ -14,6 +14,7 @@ import org.tasks.preferences.DefaultFilterProvider; import org.tasks.preferences.Preferences; import org.tasks.preferences.Theme; import org.tasks.preferences.ThemeManager; +import org.tasks.ui.WidgetCheckBoxes; import javax.inject.Inject; @@ -27,6 +28,7 @@ public class ScrollableWidgetUpdateService extends InjectingRemoteViewsService { @Inject SubtasksHelper subtasksHelper; @Inject DefaultFilterProvider defaultFilterProvider; @Inject ThemeManager themeManager; + @Inject WidgetCheckBoxes widgetCheckBoxes; @Override public void onStart(Intent intent, int startId) { @@ -50,7 +52,7 @@ public class ScrollableWidgetUpdateService extends InjectingRemoteViewsService { int widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID); Theme theme = themeManager.getWidgetTheme(widgetId); return new ScrollableViewsFactory(subtasksHelper, preferences, this, filterId, - theme, widgetId, database, taskService, defaultFilterProvider); + theme, widgetId, database, taskService, defaultFilterProvider, widgetCheckBoxes); } @Override