Update CheckBoxes injection

pull/413/head
Alex Baker 10 years ago
parent 1080ce7da8
commit d38f40ae86

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

@ -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<LIST> implements OrderedListFragm
private final DisplayMetrics metrics = new DisplayMetrics();
private final OrderedMetadataListUpdater<LIST> updater;
private DialogBuilder dialogBuilder;
private CheckBoxes checkBoxes;
private final TaskListFragment fragment;
private final Preferences preferences;
@ -64,7 +66,7 @@ public class OrderedMetadataListFragmentHelper<LIST> implements OrderedListFragm
public OrderedMetadataListFragmentHelper(Preferences preferences, TaskAttachmentDao taskAttachmentDao,
TaskService taskService, MetadataDao metadataDao,
TaskListFragment fragment, OrderedMetadataListUpdater<LIST> updater,
DialogBuilder dialogBuilder) {
DialogBuilder dialogBuilder, CheckBoxes checkBoxes) {
this.preferences = preferences;
this.taskAttachmentDao = taskAttachmentDao;
this.taskService = taskService;
@ -72,6 +74,7 @@ public class OrderedMetadataListFragmentHelper<LIST> implements OrderedListFragm
this.fragment = fragment;
this.updater = updater;
this.dialogBuilder = dialogBuilder;
this.checkBoxes = checkBoxes;
}
// --- ui component setup
@ -186,7 +189,7 @@ public class OrderedMetadataListFragmentHelper<LIST> implements OrderedListFragm
public TaskAdapter createTaskAdapter(Context context, TodorooCursor<Task> cursor,
AtomicReference<String> 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<LIST> implements OrderedListFragm
private final class DraggableTaskAdapter extends TaskAdapter {
private DraggableTaskAdapter(Context context, Preferences preferences, TaskListFragment activity,
Cursor c, AtomicReference<String> query, DialogBuilder dialogBuilder) {
super(context, preferences, taskAttachmentDao, taskService, activity, c, query, null, dialogBuilder);
Cursor c, AtomicReference<String> query, DialogBuilder dialogBuilder, CheckBoxes checkBoxes) {
super(context, preferences, taskAttachmentDao, taskService, activity, c, query, null, dialogBuilder, checkBoxes);
}
@Override

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

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

@ -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<LIST> implements OrderedListFragmen
private final DisplayMetrics metrics = new DisplayMetrics();
private final AstridOrderedListUpdater<LIST> 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<LIST> implements OrderedListFragmen
public AstridOrderedListFragmentHelper(Preferences preferences, TaskAttachmentDao taskAttachmentDao,
TaskService taskService, TaskListFragment fragment,
AstridOrderedListUpdater<LIST> updater, DialogBuilder dialogBuilder) {
AstridOrderedListUpdater<LIST> 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<LIST> implements OrderedListFragmen
public TaskAdapter createTaskAdapter(Context context, TodorooCursor<Task> cursor,
AtomicReference<String> 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<LIST> implements OrderedListFragmen
private final class DraggableTaskAdapter extends TaskAdapter {
private DraggableTaskAdapter(Context context, Preferences preferences, TaskListFragment activity,
Cursor c, AtomicReference<String> query, DialogBuilder dialogBuilder) {
super(context, preferences, taskAttachmentDao, taskService, activity, c, query, null, dialogBuilder);
Cursor c, AtomicReference<String> query, DialogBuilder dialogBuilder, CheckBoxes checkBoxes) {
super(context, preferences, taskAttachmentDao, taskService, activity, c, query, null, dialogBuilder, checkBoxes);
}
@Override

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

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

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

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

@ -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<Drawable> checkboxes;
private static List<Drawable> repeatingCheckboxes;
private static List<Drawable> completedCheckboxes;
private static List<Integer> 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<Drawable> checkboxes;
private List<Drawable> repeatingCheckboxes;
private List<Drawable> completedCheckboxes;
private List<Integer> 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<Integer> getPriorityColors() {

@ -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<Bitmap> checkboxes;
private static List<Bitmap> repeatingCheckboxes;
private static List<Bitmap> completedCheckboxes;
public static WidgetCheckBoxes newWidgetCheckBoxes(CheckBoxes checkBoxes) {
return new WidgetCheckBoxes(checkBoxes);
}
private List<Bitmap> checkboxes;
private List<Bitmap> repeatingCheckboxes;
private List<Bitmap> 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) {

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

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

Loading…
Cancel
Save