Store colors as android color ints

pull/935/head
Alex Baker 4 years ago
parent 5847170a8c
commit 236658e3d2

@ -34,7 +34,7 @@ android {
defaultConfig { defaultConfig {
testApplicationId = "org.tasks.test" testApplicationId = "org.tasks.test"
applicationId = "org.tasks" applicationId = "org.tasks"
versionCode = 674 versionCode = 675
versionName = "8.1" versionName = "8.1"
targetSdkVersion(Versions.targetSdk) targetSdkVersion(Versions.targetSdk)
minSdkVersion(Versions.minSdk) minSdkVersion(Versions.minSdk)

@ -13,6 +13,7 @@ import static com.todoroo.andlib.utility.AndroidUtilities.atLeastNougat;
import static com.todoroo.astrid.activity.TaskEditFragment.newTaskEditFragment; import static com.todoroo.astrid.activity.TaskEditFragment.newTaskEditFragment;
import static com.todoroo.astrid.activity.TaskListFragment.newTaskListFragment; import static com.todoroo.astrid.activity.TaskListFragment.newTaskListFragment;
import static org.tasks.tasklist.ActionUtils.applySupportActionModeColor; import static org.tasks.tasklist.ActionUtils.applySupportActionModeColor;
import static org.tasks.themes.ThemeColor.newThemeColor;
import static org.tasks.ui.NavigationDrawerFragment.REQUEST_NEW_LIST; import static org.tasks.ui.NavigationDrawerFragment.REQUEST_NEW_LIST;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
@ -302,8 +303,8 @@ public class MainActivity extends InjectingAppCompatActivity
} }
private ThemeColor getFilterColor() { private ThemeColor getFilterColor() {
return filter != null && filter.tint >= 0 return filter != null && filter.tint != 0
? themeCache.getThemeColor(filter.tint) ? newThemeColor(this, filter.tint)
: theme.getThemeColor(); : theme.getThemeColor();
} }

@ -12,6 +12,7 @@ import static com.google.common.collect.Lists.newArrayList;
import static com.todoroo.andlib.utility.AndroidUtilities.assertMainThread; import static com.todoroo.andlib.utility.AndroidUtilities.assertMainThread;
import static org.tasks.activities.RemoteListPicker.newRemoteListSupportPicker; import static org.tasks.activities.RemoteListPicker.newRemoteListSupportPicker;
import static org.tasks.caldav.CaldavCalendarSettingsActivity.EXTRA_CALDAV_CALENDAR; import static org.tasks.caldav.CaldavCalendarSettingsActivity.EXTRA_CALDAV_CALENDAR;
import static org.tasks.themes.ThemeColor.newThemeColor;
import static org.tasks.ui.CheckBoxes.getPriorityColor; import static org.tasks.ui.CheckBoxes.getPriorityColor;
import android.app.Activity; import android.app.Activity;
@ -264,7 +265,7 @@ public final class TaskListFragment extends InjectingFragment
filter = getFilter(); filter = getFilter();
themeColor = filter.tint >= 0 ? themeCache.getThemeColor(filter.tint) : defaultThemeColor; themeColor = filter.tint != 0 ? newThemeColor(context, filter.tint) : defaultThemeColor;
filter.setFilterQueryOverride(null); filter.setFilterQueryOverride(null);

@ -27,7 +27,6 @@ import org.tasks.filters.NavigationDrawerSubheader;
import org.tasks.locale.Locale; import org.tasks.locale.Locale;
import org.tasks.themes.Theme; import org.tasks.themes.Theme;
import org.tasks.themes.ThemeAccent; import org.tasks.themes.ThemeAccent;
import org.tasks.themes.ThemeCache;
public class FilterAdapter extends BaseAdapter { public class FilterAdapter extends BaseAdapter {
@ -39,19 +38,16 @@ public class FilterAdapter extends BaseAdapter {
private final Locale locale; private final Locale locale;
private final Inventory inventory; private final Inventory inventory;
private final LayoutInflater inflater; private final LayoutInflater inflater;
private final ThemeCache themeCache;
private Filter selected = null; private Filter selected = null;
private List<FilterListItem> items = new ArrayList<>(); private List<FilterListItem> items = new ArrayList<>();
@Inject @Inject
public FilterAdapter( public FilterAdapter(Activity activity, Theme theme, Locale locale, Inventory inventory) {
Activity activity, Theme theme, ThemeCache themeCache, Locale locale, Inventory inventory) {
this.activity = activity; this.activity = activity;
this.accent = theme.getThemeAccent(); this.accent = theme.getThemeAccent();
this.locale = locale; this.locale = locale;
this.inventory = inventory; this.inventory = inventory;
this.inflater = theme.getLayoutInflater(activity); this.inflater = theme.getLayoutInflater(activity);
this.themeCache = themeCache;
} }
public void save(Bundle outState) { public void save(Bundle outState) {
@ -105,8 +101,7 @@ public class FilterAdapter extends BaseAdapter {
switch (viewType) { switch (viewType) {
case ITEM: case ITEM:
viewHolder = viewHolder =
new FilterViewHolder( new FilterViewHolder(convertView, accent, false, locale, activity, inventory, null);
convertView, accent, themeCache, false, locale, activity, inventory, null);
break; break;
case SEPARATOR: case SEPARATOR:
viewHolder = new FilterViewHolder(convertView); viewHolder = new FilterViewHolder(convertView);

@ -1,6 +1,7 @@
package com.todoroo.astrid.adapter; package com.todoroo.astrid.adapter;
import static com.todoroo.andlib.utility.AndroidUtilities.preLollipop; import static com.todoroo.andlib.utility.AndroidUtilities.preLollipop;
import static org.tasks.themes.ThemeColor.newThemeColor;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
@ -30,7 +31,6 @@ import org.tasks.locale.Locale;
import org.tasks.preferences.SyncPreferences; import org.tasks.preferences.SyncPreferences;
import org.tasks.themes.CustomIcons; import org.tasks.themes.CustomIcons;
import org.tasks.themes.ThemeAccent; import org.tasks.themes.ThemeAccent;
import org.tasks.themes.ThemeCache;
import org.tasks.themes.ThemeColor; import org.tasks.themes.ThemeColor;
public class FilterViewHolder extends RecyclerView.ViewHolder { public class FilterViewHolder extends RecyclerView.ViewHolder {
@ -50,7 +50,6 @@ public class FilterViewHolder extends RecyclerView.ViewHolder {
TextView size; TextView size;
private OnClick onClick; private OnClick onClick;
private ThemeCache themeCache;
private boolean navigationDrawer; private boolean navigationDrawer;
private Locale locale; private Locale locale;
private Activity activity; private Activity activity;
@ -60,7 +59,6 @@ public class FilterViewHolder extends RecyclerView.ViewHolder {
FilterViewHolder( FilterViewHolder(
@NonNull View itemView, @NonNull View itemView,
ThemeAccent accent, ThemeAccent accent,
ThemeCache themeCache,
boolean navigationDrawer, boolean navigationDrawer,
Locale locale, Locale locale,
Activity activity, Activity activity,
@ -72,7 +70,6 @@ public class FilterViewHolder extends RecyclerView.ViewHolder {
ButterKnife.bind(this, itemView); ButterKnife.bind(this, itemView);
this.itemView = itemView; this.itemView = itemView;
this.themeCache = themeCache;
this.navigationDrawer = navigationDrawer; this.navigationDrawer = navigationDrawer;
this.locale = locale; this.locale = locale;
this.activity = activity; this.activity = activity;
@ -135,8 +132,8 @@ public class FilterViewHolder extends RecyclerView.ViewHolder {
} }
private int getColor(FilterListItem filter) { private int getColor(FilterListItem filter) {
if (filter.tint >= 0) { if (filter.tint != 0) {
ThemeColor color = themeCache.getThemeColor(filter.tint); ThemeColor color = newThemeColor(activity, filter.tint);
if (color.isFree() || inventory.purchasedThemes()) { if (color.isFree() || inventory.purchasedThemes()) {
return color.getPrimaryColor(); return color.getPrimaryColor();
} }

@ -32,7 +32,6 @@ import org.tasks.filters.NavigationDrawerSubheader;
import org.tasks.locale.Locale; import org.tasks.locale.Locale;
import org.tasks.themes.Theme; import org.tasks.themes.Theme;
import org.tasks.themes.ThemeAccent; import org.tasks.themes.ThemeAccent;
import org.tasks.themes.ThemeCache;
public class NavigationDrawerAdapter extends ListAdapter<FilterListItem, FilterViewHolder> { public class NavigationDrawerAdapter extends ListAdapter<FilterListItem, FilterViewHolder> {
@ -42,21 +41,19 @@ public class NavigationDrawerAdapter extends ListAdapter<FilterListItem, FilterV
private final Locale locale; private final Locale locale;
private final Inventory inventory; private final Inventory inventory;
private final LayoutInflater inflater; private final LayoutInflater inflater;
private final ThemeCache themeCache;
private OnClick onClick; private OnClick onClick;
private Filter selected = null; private Filter selected = null;
private Map<Filter, Integer> counts = new HashMap<>(); private Map<Filter, Integer> counts = new HashMap<>();
@Inject @Inject
public NavigationDrawerAdapter( public NavigationDrawerAdapter(
Activity activity, Theme theme, ThemeCache themeCache, Locale locale, Inventory inventory) { Activity activity, Theme theme, Locale locale, Inventory inventory) {
super(new DiffCallback()); super(new DiffCallback());
this.activity = activity; this.activity = activity;
this.accent = theme.getThemeAccent(); this.accent = theme.getThemeAccent();
this.locale = locale; this.locale = locale;
this.inventory = inventory; this.inventory = inventory;
this.inflater = theme.getLayoutInflater(activity); this.inflater = theme.getLayoutInflater(activity);
this.themeCache = themeCache;
} }
public void setOnClick(OnClick onClick) { public void setOnClick(OnClick onClick) {
@ -98,7 +95,7 @@ public class NavigationDrawerAdapter extends ListAdapter<FilterListItem, FilterV
View view = inflater.inflate(type.layout, parent, false); View view = inflater.inflate(type.layout, parent, false);
if (type == ITEM) { if (type == ITEM) {
return new FilterViewHolder( return new FilterViewHolder(
view, accent, themeCache, true, locale, activity, inventory, this::onClickFilter); view, accent, true, locale, activity, inventory, this::onClickFilter);
} else if (type == SUBHEADER) { } else if (type == SUBHEADER) {
return new FilterViewHolder(view, activity); return new FilterViewHolder(view, activity);
} else { } else {

@ -24,7 +24,7 @@ public abstract class FilterListItem implements Parcelable {
public String listingTitle = null; public String listingTitle = null;
public int icon = -1; public int icon = -1;
public int tint = -1; public int tint = 0;
public int count = -1; public int count = -1;
public abstract Type getItemType(); public abstract Type getItemType();

@ -6,7 +6,9 @@ import static com.google.common.collect.Lists.newArrayList;
import static org.tasks.caldav.CaldavUtils.getParent; import static org.tasks.caldav.CaldavUtils.getParent;
import static org.tasks.db.DbUtils.batch; import static org.tasks.db.DbUtils.batch;
import android.content.Context;
import android.os.Environment; import android.os.Environment;
import androidx.core.content.ContextCompat;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableListMultimap; import com.google.common.collect.ImmutableListMultimap;
@ -20,6 +22,7 @@ import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.analytics.Tracker; import org.tasks.analytics.Tracker;
import org.tasks.caldav.CaldavUtils; import org.tasks.caldav.CaldavUtils;
import org.tasks.data.CaldavCalendar;
import org.tasks.data.CaldavDao; import org.tasks.data.CaldavDao;
import org.tasks.data.CaldavTask; import org.tasks.data.CaldavTask;
import org.tasks.data.CaldavTaskContainer; import org.tasks.data.CaldavTaskContainer;
@ -36,8 +39,10 @@ import org.tasks.data.TaskAttachment;
import org.tasks.data.TaskAttachmentDao; import org.tasks.data.TaskAttachmentDao;
import org.tasks.data.UserActivity; import org.tasks.data.UserActivity;
import org.tasks.data.UserActivityDao; import org.tasks.data.UserActivityDao;
import org.tasks.injection.ForApplication;
import org.tasks.preferences.DefaultFilterProvider; import org.tasks.preferences.DefaultFilterProvider;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.themes.ThemeColor;
public class Upgrader { public class Upgrader {
@ -51,6 +56,8 @@ public class Upgrader {
private static final int V6_8_1 = 607; private static final int V6_8_1 = 607;
private static final int V6_9 = 608; private static final int V6_9 = 608;
private static final int V7_0 = 617; private static final int V7_0 = 617;
private static final int V8_2 = 675;
private final Context context;
private final Preferences preferences; private final Preferences preferences;
private final Tracker tracker; private final Tracker tracker;
private final TagDataDao tagDataDao; private final TagDataDao tagDataDao;
@ -65,6 +72,7 @@ public class Upgrader {
@Inject @Inject
public Upgrader( public Upgrader(
@ForApplication Context context,
Preferences preferences, Preferences preferences,
Tracker tracker, Tracker tracker,
TagDataDao tagDataDao, TagDataDao tagDataDao,
@ -76,6 +84,7 @@ public class Upgrader {
TaskAttachmentDao taskAttachmentDao, TaskAttachmentDao taskAttachmentDao,
CaldavDao caldavDao, CaldavDao caldavDao,
TaskDao taskDao) { TaskDao taskDao) {
this.context = context;
this.preferences = preferences; this.preferences = preferences;
this.tracker = tracker; this.tracker = tracker;
this.tagDataDao = tagDataDao; this.tagDataDao = tagDataDao;
@ -101,6 +110,7 @@ public class Upgrader {
run(from, V6_8_1, this::migrateCaldavFilters); run(from, V6_8_1, this::migrateCaldavFilters);
run(from, V6_9, this::applyCaldavCategories); run(from, V6_9, this::applyCaldavCategories);
run(from, V7_0, this::applyCaldavSubtasks); run(from, V7_0, this::applyCaldavSubtasks);
run(from, V8_2, this::migrateColors);
} }
preferences.setCurrentVersion(to); preferences.setCurrentVersion(to);
} }
@ -112,6 +122,33 @@ public class Upgrader {
} }
} }
private void migrateColors() {
preferences.setInt(
R.string.p_theme_color, getAndroidColor(preferences.getInt(R.string.p_theme_color, 7)));
for (CaldavCalendar calendar : caldavDao.getCalendars()) {
calendar.setColor(getAndroidColor(calendar.getColor()));
caldavDao.update(calendar);
}
for (GoogleTaskList list : googleTaskListDao.getAllLists()) {
list.setColor(getAndroidColor(list.getColor()));
googleTaskListDao.update(list);
}
for (TagData tagData : tagDataDao.getAll()) {
tagData.setColor(getAndroidColor(tagData.getColor()));
tagDataDao.update(tagData);
}
for (Filter filter : filterDao.getFilters()) {
filter.setColor(getAndroidColor(filter.getColor()));
filterDao.update(filter);
}
}
private int getAndroidColor(int index) {
return index >= 0 && index < ThemeColor.COLORS.length
? ContextCompat.getColor(context, ThemeColor.COLORS[index])
: 0;
}
private void applyCaldavSubtasks() { private void applyCaldavSubtasks() {
List<CaldavTask> updated = newArrayList(); List<CaldavTask> updated = newArrayList();

@ -1,6 +1,7 @@
package org.tasks.activities; package org.tasks.activities;
import static org.tasks.dialogs.IconPickerDialog.newIconPicker; import static org.tasks.dialogs.IconPickerDialog.newIconPicker;
import static org.tasks.themes.ThemeColor.newThemeColor;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
@ -22,7 +23,6 @@ import org.tasks.dialogs.DialogBuilder;
import org.tasks.dialogs.IconPickerDialog.IconPickerCallback; import org.tasks.dialogs.IconPickerDialog.IconPickerCallback;
import org.tasks.injection.ThemedInjectingAppCompatActivity; import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.themes.CustomIcons; import org.tasks.themes.CustomIcons;
import org.tasks.themes.ThemeCache;
import org.tasks.themes.ThemeColor; import org.tasks.themes.ThemeColor;
public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatActivity public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatActivity
@ -42,11 +42,10 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
@BindView(R.id.toolbar) @BindView(R.id.toolbar)
Toolbar toolbar; Toolbar toolbar;
@Inject ThemeCache themeCache;
@Inject ThemeColor themeColor; @Inject ThemeColor themeColor;
@Inject DialogBuilder dialogBuilder; @Inject DialogBuilder dialogBuilder;
protected int selectedTheme = -1; protected int selectedColor = -1;
protected int selectedIcon = -1; protected int selectedIcon = -1;
@Override @Override
@ -58,7 +57,7 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
ButterKnife.bind(this); ButterKnife.bind(this);
if (savedInstanceState != null) { if (savedInstanceState != null) {
selectedTheme = savedInstanceState.getInt(EXTRA_SELECTED_THEME); selectedColor = savedInstanceState.getInt(EXTRA_SELECTED_THEME);
selectedIcon = savedInstanceState.getInt(EXTRA_SELECTED_ICON); selectedIcon = savedInstanceState.getInt(EXTRA_SELECTED_ICON);
} }
@ -69,14 +68,13 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
toolbar.inflateMenu(R.menu.menu_tag_settings); toolbar.inflateMenu(R.menu.menu_tag_settings);
} }
toolbar.setOnMenuItemClickListener(this); toolbar.setOnMenuItemClickListener(this);
themeColor.apply(toolbar);
} }
@Override @Override
protected void onSaveInstanceState(Bundle outState) { protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState); super.onSaveInstanceState(outState);
outState.putInt(EXTRA_SELECTED_THEME, selectedTheme); outState.putInt(EXTRA_SELECTED_THEME, selectedColor);
outState.putInt(EXTRA_SELECTED_ICON, selectedIcon); outState.putInt(EXTRA_SELECTED_ICON, selectedIcon);
} }
@ -114,7 +112,7 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
Intent intent = new Intent(BaseListSettingsActivity.this, ColorPickerActivity.class); Intent intent = new Intent(BaseListSettingsActivity.this, ColorPickerActivity.class);
intent.putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerActivity.ColorPalette.COLORS); intent.putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPickerActivity.ColorPalette.COLORS);
intent.putExtra(ColorPickerActivity.EXTRA_SHOW_NONE, true); intent.putExtra(ColorPickerActivity.EXTRA_SHOW_NONE, true);
intent.putExtra(ColorPickerActivity.EXTRA_THEME_INDEX, selectedTheme); intent.putExtra(ColorPickerActivity.EXTRA_COLOR, selectedColor);
startActivityForResult(intent, REQUEST_COLOR_PICKER); startActivityForResult(intent, REQUEST_COLOR_PICKER);
} }
@ -134,7 +132,8 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_COLOR_PICKER) { if (requestCode == REQUEST_COLOR_PICKER) {
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
selectedTheme = data.getIntExtra(ColorPickerActivity.EXTRA_THEME_INDEX, 0); int index = data.getIntExtra(ColorPickerActivity.EXTRA_COLOR, -1);
selectedColor = index < 0 ? 0 : ContextCompat.getColor(this, ThemeColor.COLORS[index]);
updateTheme(); updateTheme();
} }
} else { } else {
@ -163,11 +162,11 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
protected void updateTheme() { protected void updateTheme() {
ThemeColor themeColor; ThemeColor themeColor;
if (selectedTheme < 0) { if (selectedColor == 0) {
themeColor = this.themeColor; themeColor = this.themeColor;
color.setVisibility(View.GONE); color.setVisibility(View.GONE);
} else { } else {
themeColor = themeCache.getThemeColor(selectedTheme); themeColor = newThemeColor(this, selectedColor);
Drawable colorIcon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_lens_24px); Drawable colorIcon = ContextCompat.getDrawable(this, R.drawable.ic_baseline_lens_24px);
Drawable wrappedColorIcon = DrawableCompat.wrap(colorIcon.mutate()); Drawable wrappedColorIcon = DrawableCompat.wrap(colorIcon.mutate());
DrawableCompat.setTint(wrappedColorIcon, themeColor.getPrimaryColor()); DrawableCompat.setTint(wrappedColorIcon, themeColor.getPrimaryColor());

@ -2,6 +2,7 @@ package org.tasks.activities;
import static org.tasks.billing.PurchaseDialog.newPurchaseDialog; import static org.tasks.billing.PurchaseDialog.newPurchaseDialog;
import static org.tasks.dialogs.ColorPickerDialog.newColorPickerDialog; import static org.tasks.dialogs.ColorPickerDialog.newColorPickerDialog;
import static org.tasks.themes.ThemeColor.newThemeColor;
import android.content.Intent; import android.content.Intent;
import java.util.List; import java.util.List;
@ -9,6 +10,7 @@ import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.billing.Inventory; import org.tasks.billing.Inventory;
import org.tasks.dialogs.ColorPickerDialog; import org.tasks.dialogs.ColorPickerDialog;
import org.tasks.dialogs.ColorPickerDialog.Pickable;
import org.tasks.injection.ActivityComponent; import org.tasks.injection.ActivityComponent;
import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
@ -20,7 +22,7 @@ public class ColorPickerActivity extends InjectingAppCompatActivity
public static final String EXTRA_PALETTE = "extra_palette"; public static final String EXTRA_PALETTE = "extra_palette";
public static final String EXTRA_SHOW_NONE = "extra_show_none"; public static final String EXTRA_SHOW_NONE = "extra_show_none";
public static final String EXTRA_THEME_INDEX = "extra_index"; public static final String EXTRA_COLOR = "extra_index";
private static final String FRAG_TAG_COLOR_PICKER = "frag_tag_color_picker"; private static final String FRAG_TAG_COLOR_PICKER = "frag_tag_color_picker";
private static final String FRAG_TAG_PURCHASE = "frag_tag_purchase"; private static final String FRAG_TAG_PURCHASE = "frag_tag_purchase";
@Inject Theme theme; @Inject Theme theme;
@ -37,11 +39,22 @@ public class ColorPickerActivity extends InjectingAppCompatActivity
Intent intent = getIntent(); Intent intent = getIntent();
palette = (ColorPalette) intent.getSerializableExtra(EXTRA_PALETTE); palette = (ColorPalette) intent.getSerializableExtra(EXTRA_PALETTE);
boolean showNone = intent.getBooleanExtra(EXTRA_SHOW_NONE, false); boolean showNone = intent.getBooleanExtra(EXTRA_SHOW_NONE, false);
int selected = List<? extends Pickable> items = getItems(palette);
intent.hasExtra(EXTRA_THEME_INDEX) int selected;
? intent.getIntExtra(EXTRA_THEME_INDEX, -1) if (palette == ColorPalette.COLORS) {
: getCurrentSelection(palette); selected =
newColorPickerDialog(getItems(palette), showNone, selected) items.indexOf(
intent.hasExtra(EXTRA_COLOR)
? newThemeColor(this, intent.getIntExtra(EXTRA_COLOR, 0))
: theme.getThemeColor());
} else {
selected =
intent.hasExtra(EXTRA_COLOR)
? intent.getIntExtra(EXTRA_COLOR, -1)
: getCurrentSelection(palette);
}
newColorPickerDialog(items, showNone, selected)
.show(getSupportFragmentManager(), FRAG_TAG_COLOR_PICKER); .show(getSupportFragmentManager(), FRAG_TAG_COLOR_PICKER);
} }
@ -71,7 +84,7 @@ public class ColorPickerActivity extends InjectingAppCompatActivity
public void themePicked(ColorPickerDialog.Pickable picked) { public void themePicked(ColorPickerDialog.Pickable picked) {
Intent data = new Intent(); Intent data = new Intent();
data.putExtra(EXTRA_PALETTE, palette); data.putExtra(EXTRA_PALETTE, palette);
data.putExtra(EXTRA_THEME_INDEX, picked == null ? -1 : picked.getIndex()); data.putExtra(EXTRA_COLOR, picked == null ? -1 : picked.getIndex());
setResult(RESULT_OK, data); setResult(RESULT_OK, data);
finish(); finish();
} }

@ -45,7 +45,7 @@ public class FilterSettingsActivity extends BaseListSettingsActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
if (savedInstanceState == null) { if (savedInstanceState == null) {
selectedTheme = filter.tint; selectedColor = filter.tint;
selectedIcon = filter.icon; selectedIcon = filter.icon;
} }
@ -85,7 +85,7 @@ public class FilterSettingsActivity extends BaseListSettingsActivity {
if (hasChanges()) { if (hasChanges()) {
filter.listingTitle = newName; filter.listingTitle = newName;
filter.tint = selectedTheme; filter.tint = selectedColor;
filter.icon = selectedIcon; filter.icon = selectedIcon;
filterDao.update(filter.toStoreObject()); filterDao.update(filter.toStoreObject());
setResult( setResult(
@ -103,7 +103,7 @@ public class FilterSettingsActivity extends BaseListSettingsActivity {
@Override @Override
protected boolean hasChanges() { protected boolean hasChanges() {
return !(getNewName().equals(filter.listingTitle) return !(getNewName().equals(filter.listingTitle)
&& selectedTheme == filter.tint && selectedColor == filter.tint
&& selectedIcon == filter.icon); && selectedIcon == filter.icon);
} }

@ -69,7 +69,7 @@ public class GoogleTaskListSettingsActivity extends BaseListSettingsActivity {
} }
if (savedInstanceState == null) { if (savedInstanceState == null) {
selectedTheme = gtasksList.getColor(); selectedColor = gtasksList.getColor();
selectedIcon = gtasksList.getIcon(); selectedIcon = gtasksList.getIcon();
} }
@ -141,7 +141,7 @@ public class GoogleTaskListSettingsActivity extends BaseListSettingsActivity {
renameListViewModel.renameList(gtasksInvoker, gtasksList, newName); renameListViewModel.renameList(gtasksInvoker, gtasksList, newName);
} else { } else {
if (colorChanged() || iconChanged()) { if (colorChanged() || iconChanged()) {
gtasksList.setColor(selectedTheme); gtasksList.setColor(selectedColor);
gtasksList.setIcon(selectedIcon); gtasksList.setIcon(selectedIcon);
googleTaskListDao.insertOrReplace(gtasksList); googleTaskListDao.insertOrReplace(gtasksList);
setResult( setResult(
@ -192,13 +192,13 @@ public class GoogleTaskListSettingsActivity extends BaseListSettingsActivity {
@Override @Override
protected boolean hasChanges() { protected boolean hasChanges() {
if (isNewList) { if (isNewList) {
return selectedTheme >= 0 || !isEmpty(getNewName()); return selectedColor >= 0 || !isEmpty(getNewName());
} }
return colorChanged() || nameChanged() || iconChanged(); return colorChanged() || nameChanged() || iconChanged();
} }
private boolean colorChanged() { private boolean colorChanged() {
return selectedTheme != gtasksList.getColor(); return selectedColor != gtasksList.getColor();
} }
private boolean iconChanged() { private boolean iconChanged() {
@ -212,7 +212,7 @@ public class GoogleTaskListSettingsActivity extends BaseListSettingsActivity {
private void onListCreated(TaskList taskList) { private void onListCreated(TaskList taskList) {
gtasksList.setRemoteId(taskList.getId()); gtasksList.setRemoteId(taskList.getId());
gtasksList.setTitle(taskList.getTitle()); gtasksList.setTitle(taskList.getTitle());
gtasksList.setColor(selectedTheme); gtasksList.setColor(selectedColor);
gtasksList.setIcon(selectedIcon); gtasksList.setIcon(selectedIcon);
gtasksList.setId(googleTaskListDao.insertOrReplace(gtasksList)); gtasksList.setId(googleTaskListDao.insertOrReplace(gtasksList));
setResult( setResult(
@ -230,7 +230,7 @@ public class GoogleTaskListSettingsActivity extends BaseListSettingsActivity {
private void onListRenamed(TaskList taskList) { private void onListRenamed(TaskList taskList) {
gtasksList.setTitle(taskList.getTitle()); gtasksList.setTitle(taskList.getTitle());
gtasksList.setColor(selectedTheme); gtasksList.setColor(selectedColor);
gtasksList.setIcon(selectedIcon); gtasksList.setIcon(selectedIcon);
googleTaskListDao.insertOrReplace(gtasksList); googleTaskListDao.insertOrReplace(gtasksList);
setResult( setResult(

@ -56,7 +56,7 @@ public class TagSettingsActivity extends BaseListSettingsActivity {
tagData.setRemoteId(UUIDHelper.newUUID()); tagData.setRemoteId(UUIDHelper.newUUID());
} }
if (savedInstanceState == null) { if (savedInstanceState == null) {
selectedTheme = tagData.getColor(); selectedColor = tagData.getColor();
selectedIcon = tagData.getIcon(); selectedIcon = tagData.getIcon();
} }
@ -120,13 +120,13 @@ public class TagSettingsActivity extends BaseListSettingsActivity {
if (isNewTag) { if (isNewTag) {
tagData.setName(newName); tagData.setName(newName);
tagData.setColor(selectedTheme); tagData.setColor(selectedColor);
tagData.setIcon(selectedIcon); tagData.setIcon(selectedIcon);
tagDataDao.createNew(tagData); tagDataDao.createNew(tagData);
setResult(RESULT_OK, new Intent().putExtra(MainActivity.OPEN_FILTER, new TagFilter(tagData))); setResult(RESULT_OK, new Intent().putExtra(MainActivity.OPEN_FILTER, new TagFilter(tagData)));
} else if (hasChanges()) { } else if (hasChanges()) {
tagData.setName(newName); tagData.setName(newName);
tagData.setColor(selectedTheme); tagData.setColor(selectedColor);
tagData.setIcon(selectedIcon); tagData.setIcon(selectedIcon);
tagDataDao.update(tagData); tagDataDao.update(tagData);
tagDao.rename(tagData.getRemoteId(), newName); tagDao.rename(tagData.getRemoteId(), newName);
@ -142,9 +142,9 @@ public class TagSettingsActivity extends BaseListSettingsActivity {
@Override @Override
protected boolean hasChanges() { protected boolean hasChanges() {
if (isNewTag) { if (isNewTag) {
return selectedTheme >= 0 || selectedIcon >= 0 || !isEmpty(getNewName()); return selectedColor >= 0 || selectedIcon >= 0 || !isEmpty(getNewName());
} }
return !(selectedTheme == tagData.getColor() return !(selectedColor == tagData.getColor()
&& selectedIcon == tagData.getIcon() && selectedIcon == tagData.getIcon()
&& getNewName().equals(tagData.getName())); && getNewName().equals(tagData.getName()));
} }

@ -79,7 +79,7 @@ public abstract class BaseCaldavCalendarSettingsActivity extends BaseListSetting
if (savedInstanceState == null) { if (savedInstanceState == null) {
if (caldavCalendar != null) { if (caldavCalendar != null) {
name.setText(caldavCalendar.getName()); name.setText(caldavCalendar.getName());
selectedTheme = caldavCalendar.getColor(); selectedColor = caldavCalendar.getColor();
selectedIcon = caldavCalendar.getIcon(); selectedIcon = caldavCalendar.getIcon();
} }
} }
@ -183,7 +183,7 @@ public abstract class BaseCaldavCalendarSettingsActivity extends BaseListSetting
caldavCalendar.setAccount(caldavAccount.getUuid()); caldavCalendar.setAccount(caldavAccount.getUuid());
caldavCalendar.setUrl(url); caldavCalendar.setUrl(url);
caldavCalendar.setName(getNewName()); caldavCalendar.setName(getNewName());
caldavCalendar.setColor(selectedTheme); caldavCalendar.setColor(selectedColor);
caldavCalendar.setIcon(selectedIcon); caldavCalendar.setIcon(selectedIcon);
caldavDao.insert(caldavCalendar); caldavDao.insert(caldavCalendar);
setResult( setResult(
@ -194,7 +194,7 @@ public abstract class BaseCaldavCalendarSettingsActivity extends BaseListSetting
private void updateAccount() { private void updateAccount() {
caldavCalendar.setName(getNewName()); caldavCalendar.setName(getNewName());
caldavCalendar.setColor(selectedTheme); caldavCalendar.setColor(selectedColor);
caldavCalendar.setIcon(selectedIcon); caldavCalendar.setIcon(selectedIcon);
caldavDao.update(caldavCalendar); caldavDao.update(caldavCalendar);
setResult( setResult(
@ -207,11 +207,11 @@ public abstract class BaseCaldavCalendarSettingsActivity extends BaseListSetting
@Override @Override
protected boolean hasChanges() { protected boolean hasChanges() {
if (caldavCalendar == null) { if (caldavCalendar == null) {
return !isEmpty(getNewName()) || selectedTheme != -1 || selectedIcon != -1; return !isEmpty(getNewName()) || selectedColor != -1 || selectedIcon != -1;
} }
return !caldavCalendar.getName().equals(getNewName()) return !caldavCalendar.getName().equals(getNewName())
|| selectedIcon != caldavCalendar.getIcon() || selectedIcon != caldavCalendar.getIcon()
|| selectedTheme != caldavCalendar.getColor(); || selectedColor != caldavCalendar.getColor();
} }
private String getNewName() { private String getNewName() {

@ -59,6 +59,9 @@ public abstract class GoogleTaskListDao {
@Update @Update
public abstract void update(GoogleTaskAccount account); public abstract void update(GoogleTaskAccount account);
@Update
public abstract void update(GoogleTaskList list);
@Query( @Query(
"SELECT google_task_lists.*, google_task_accounts.*, COUNT(tasks._id) AS count" "SELECT google_task_lists.*, google_task_accounts.*, COUNT(tasks._id) AS count"
+ " FROM google_task_accounts " + " FROM google_task_accounts "

@ -41,8 +41,8 @@ public class ActivityModule {
@Provides @Provides
@ActivityScope @ActivityScope
public ThemeColor getThemeColor(ThemeCache themeCache, Preferences preferences) { public ThemeColor getThemeColor(Preferences preferences) {
return themeCache.getThemeColor(preferences.getInt(R.string.p_theme_color, 7)); return ThemeColor.newThemeColor(activity, preferences.getInt(R.string.p_theme_color, 0));
} }
@Provides @Provides

@ -9,6 +9,7 @@ import android.os.Bundle
import android.os.Handler import android.os.Handler
import android.widget.Toast import android.widget.Toast
import androidx.annotation.StringRes import androidx.annotation.StringRes
import androidx.core.content.ContextCompat
import androidx.preference.ListPreference import androidx.preference.ListPreference
import androidx.preference.Preference import androidx.preference.Preference
import com.google.common.base.Strings import com.google.common.base.Strings
@ -228,7 +229,7 @@ class LookAndFeel : InjectingPreferenceFragment(), Preference.OnPreferenceChange
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REQUEST_THEME_PICKER) { if (requestCode == REQUEST_THEME_PICKER) {
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
val index = data!!.getIntExtra(ColorPickerActivity.EXTRA_THEME_INDEX, 0) val index = data!!.getIntExtra(ColorPickerActivity.EXTRA_COLOR, 0)
preferences.setInt(R.string.p_theme, index) preferences.setInt(R.string.p_theme, index)
Handler().post { Handler().post {
themeCache.getThemeBase(index).setDefaultNightMode() themeCache.getThemeBase(index).setDefaultNightMode()
@ -237,19 +238,20 @@ class LookAndFeel : InjectingPreferenceFragment(), Preference.OnPreferenceChange
} }
} else if (requestCode == REQUEST_COLOR_PICKER) { } else if (requestCode == REQUEST_COLOR_PICKER) {
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
val index = data!!.getIntExtra(ColorPickerActivity.EXTRA_THEME_INDEX, 0) val index = data!!.getIntExtra(ColorPickerActivity.EXTRA_COLOR, 0)
preferences.setInt(R.string.p_theme_color, index) val color = ThemeColor.COLORS[index]
preferences.setInt(R.string.p_theme_color, ContextCompat.getColor(context!!, color))
recreate() recreate()
} }
} else if (requestCode == REQUEST_ACCENT_PICKER) { } else if (requestCode == REQUEST_ACCENT_PICKER) {
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
val index = data!!.getIntExtra(ColorPickerActivity.EXTRA_THEME_INDEX, 0) val index = data!!.getIntExtra(ColorPickerActivity.EXTRA_COLOR, 0)
preferences.setInt(R.string.p_theme_accent, index) preferences.setInt(R.string.p_theme_accent, index)
recreate() recreate()
} }
} else if (requestCode == REQUEST_LAUNCHER_PICKER) { } else if (requestCode == REQUEST_LAUNCHER_PICKER) {
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
val index = data!!.getIntExtra(ColorPickerActivity.EXTRA_THEME_INDEX, 0) val index = data!!.getIntExtra(ColorPickerActivity.EXTRA_COLOR, 0)
setLauncherIcon(index) setLauncherIcon(index)
preferences.setInt(R.string.p_theme_launcher, index) preferences.setInt(R.string.p_theme_launcher, index)
updateLauncherPreference() updateLauncherPreference()
@ -324,7 +326,7 @@ class LookAndFeel : InjectingPreferenceFragment(), Preference.OnPreferenceChange
} }
private fun setupColorPreference( private fun setupColorPreference(
@StringRes prefId: Int, summary: String, @StringRes prefId: Int, summary: String?,
palette: ColorPickerActivity.ColorPalette, palette: ColorPickerActivity.ColorPalette,
requestCode: Int requestCode: Int
) { ) {

@ -82,7 +82,7 @@ class ScrollableWidget : InjectingPreferenceFragment() {
ColorPickerActivity.ColorPalette.WIDGET_BACKGROUND ColorPickerActivity.ColorPalette.WIDGET_BACKGROUND
) )
intent.putExtra( intent.putExtra(
ColorPickerActivity.EXTRA_THEME_INDEX, widgetPreferences.themeIndex ColorPickerActivity.EXTRA_COLOR, widgetPreferences.themeIndex
) )
startActivityForResult(intent, REQUEST_THEME_SELECTION) startActivityForResult(intent, REQUEST_THEME_SELECTION)
false false
@ -93,9 +93,10 @@ class ScrollableWidget : InjectingPreferenceFragment() {
colorPreference.onPreferenceClickListener = Preference.OnPreferenceClickListener { colorPreference.onPreferenceClickListener = Preference.OnPreferenceClickListener {
val intent = Intent(context, ColorPickerActivity::class.java) val intent = Intent(context, ColorPickerActivity::class.java)
intent.putExtra( intent.putExtra(
ColorPickerActivity.EXTRA_PALETTE, ColorPickerActivity.ColorPalette.COLORS ColorPickerActivity.EXTRA_PALETTE, ColorPickerActivity.ColorPalette.COLORS
) )
intent.putExtra(ColorPickerActivity.EXTRA_THEME_INDEX, widgetPreferences.colorIndex) val color = ThemeColor.COLORS[widgetPreferences.colorIndex]
intent.putExtra(ColorPickerActivity.EXTRA_COLOR, color)
startActivityForResult(intent, REQUEST_COLOR_SELECTION) startActivityForResult(intent, REQUEST_COLOR_SELECTION)
false false
} }
@ -117,7 +118,7 @@ class ScrollableWidget : InjectingPreferenceFragment() {
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
widgetPreferences.setTheme( widgetPreferences.setTheme(
data!!.getIntExtra( data!!.getIntExtra(
ColorPickerActivity.EXTRA_THEME_INDEX, ColorPickerActivity.EXTRA_COLOR,
0 0
) )
) )
@ -127,7 +128,7 @@ class ScrollableWidget : InjectingPreferenceFragment() {
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
widgetPreferences.setColor( widgetPreferences.setColor(
data!!.getIntExtra( data!!.getIntExtra(
ColorPickerActivity.EXTRA_THEME_INDEX, ColorPickerActivity.EXTRA_COLOR,
0 0
) )
) )

@ -1,5 +1,7 @@
package org.tasks.tags; package org.tasks.tags;
import static org.tasks.themes.ThemeColor.newThemeColor;
import android.content.Context; import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -16,6 +18,7 @@ import org.tasks.data.TagData;
import org.tasks.tags.CheckBoxTriStates.State; import org.tasks.tags.CheckBoxTriStates.State;
import org.tasks.themes.CustomIcons; import org.tasks.themes.CustomIcons;
import org.tasks.themes.ThemeCache; import org.tasks.themes.ThemeCache;
import org.tasks.themes.ThemeColor;
public class TagRecyclerAdapter extends RecyclerView.Adapter<TagPickerViewHolder> { public class TagRecyclerAdapter extends RecyclerView.Adapter<TagPickerViewHolder> {
@ -59,9 +62,11 @@ public class TagRecyclerAdapter extends RecyclerView.Adapter<TagPickerViewHolder
} }
private int getColor(TagData tagData) { private int getColor(TagData tagData) {
return themeCache ThemeColor themeColor =
.getThemeColor(tagData.getColor() >= 0 ? tagData.getColor() : 19) tagData.getColor() > 0
.getPrimaryColor(); ? newThemeColor(context, tagData.getColor())
: themeCache.getThemeColor(19);
return themeColor.getPrimaryColor();
} }
private @Nullable Integer getIcon(TagData tagData) { private @Nullable Integer getIcon(TagData tagData) {

@ -19,11 +19,13 @@ import android.view.SubMenu;
import android.view.View; import android.view.View;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.ColorUtils; import androidx.core.graphics.ColorUtils;
import androidx.drawerlayout.widget.DrawerLayout; import androidx.drawerlayout.widget.DrawerLayout;
import com.google.android.material.appbar.CollapsingToolbarLayout; import com.google.android.material.appbar.CollapsingToolbarLayout;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.ColorPickerDialog; import org.tasks.dialogs.ColorPickerDialog;
import timber.log.Timber;
public class ThemeColor implements ColorPickerDialog.Pickable { public class ThemeColor implements ColorPickerDialog.Pickable {
@ -75,7 +77,7 @@ public class ThemeColor implements ColorPickerDialog.Pickable {
".Grey" ".Grey"
}; };
static final int[] COLORS = public static final int[] COLORS =
new int[] { new int[] {
R.color.blue_grey_500, R.color.blue_grey_500,
R.color.grey_900, R.color.grey_900,
@ -120,17 +122,17 @@ public class ThemeColor implements ColorPickerDialog.Pickable {
private final int colorPrimaryVariant; private final int colorPrimaryVariant;
private final boolean isDark; private final boolean isDark;
public ThemeColor(Context context, int color) { public static ThemeColor newThemeColor(Context context, int color) {
name = null; try {
index = -1; return new ThemeColor(context, color);
this.color = -1; } catch (Exception e) {
colorPrimary = color; Timber.e(e);
colorPrimaryVariant = ColorUtil.darken(colorPrimary, 12); return new ThemeColor(context, 0);
}
}
int whiteText = context.getResources().getColor(R.color.white_100); public ThemeColor(Context context, int color) {
double contrast = ColorUtils.calculateContrast(whiteText, colorPrimary); this(context, null, -1, color == 0 ? ContextCompat.getColor(context, R.color.blue_500) : color);
this.isDark = contrast < 3;
colorOnPrimary = isDark ? context.getResources().getColor(R.color.black_87) : whiteText;
} }
public ThemeColor( public ThemeColor(
@ -140,7 +142,8 @@ public class ThemeColor implements ColorPickerDialog.Pickable {
int colorPrimary) { int colorPrimary) {
this.name = name; this.name = name;
this.index = index; this.index = index;
this.color = COLORS[index]; this.color = index >= 0 ? COLORS[index] : -1;
colorPrimary |= 0xFF000000; // remove alpha
this.colorPrimary = colorPrimary; this.colorPrimary = colorPrimary;
this.colorPrimaryVariant = ColorUtil.darken(colorPrimary, 12); this.colorPrimaryVariant = ColorUtil.darken(colorPrimary, 12);
@ -320,4 +323,23 @@ public class ThemeColor implements ColorPickerDialog.Pickable {
} }
return drawable; return drawable;
} }
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof ThemeColor)) {
return false;
}
ThemeColor that = (ThemeColor) o;
return colorPrimary == that.colorPrimary;
}
@Override
public int hashCode() {
return colorPrimary;
}
} }

@ -6,6 +6,7 @@ import static com.google.common.collect.Iterables.transform;
import static com.google.common.collect.Lists.transform; import static com.google.common.collect.Lists.transform;
import static com.google.common.collect.Sets.newHashSet; import static com.google.common.collect.Sets.newHashSet;
import static com.todoroo.andlib.utility.AndroidUtilities.assertMainThread; import static com.todoroo.andlib.utility.AndroidUtilities.assertMainThread;
import static org.tasks.themes.ThemeColor.newThemeColor;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
@ -49,6 +50,7 @@ public class ChipProvider {
private final Map<String, GtasksFilter> googleTaskLists = new HashMap<>(); private final Map<String, GtasksFilter> googleTaskLists = new HashMap<>();
private final Map<String, CaldavFilter> caldavCalendars = new HashMap<>(); private final Map<String, CaldavFilter> caldavCalendars = new HashMap<>();
private final Map<String, TagFilter> tagDatas = new HashMap<>(); private final Map<String, TagFilter> tagDatas = new HashMap<>();
private final Context context;
private final Inventory inventory; private final Inventory inventory;
private final ThemeCache themeCache; private final ThemeCache themeCache;
private final int iconAlpha; private final int iconAlpha;
@ -70,6 +72,7 @@ public class ChipProvider {
CaldavDao caldavDao, CaldavDao caldavDao,
TagDataDao tagDataDao, TagDataDao tagDataDao,
LocalBroadcastManager localBroadcastManager) { LocalBroadcastManager localBroadcastManager) {
this.context = context;
this.inventory = inventory; this.inventory = inventory;
this.themeCache = themeCache; this.themeCache = themeCache;
this.localBroadcastManager = localBroadcastManager; this.localBroadcastManager = localBroadcastManager;
@ -209,8 +212,8 @@ public class ChipProvider {
} }
private ThemeColor getColor(int theme) { private ThemeColor getColor(int theme) {
if (theme >= 0) { if (theme != 0) {
ThemeColor color = themeCache.getThemeColor(theme); ThemeColor color = newThemeColor(context, theme);
if (color.isFree() || inventory.purchasedThemes()) { if (color.isFree() || inventory.purchasedThemes()) {
return color; return color;
} }

@ -91,7 +91,7 @@ public class ShortcutConfigActivity extends InjectingAppCompatActivity {
} }
} else if (requestCode == REQUEST_COLOR_PICKER) { } else if (requestCode == REQUEST_COLOR_PICKER) {
if (resultCode == RESULT_OK) { if (resultCode == RESULT_OK) {
selectedTheme = data.getIntExtra(ColorPickerActivity.EXTRA_THEME_INDEX, 0); selectedTheme = data.getIntExtra(ColorPickerActivity.EXTRA_COLOR, 0);
updateTheme(); updateTheme();
} }
} else { } else {
@ -136,7 +136,7 @@ public class ShortcutConfigActivity extends InjectingAppCompatActivity {
Intent intent = new Intent(this, ColorPickerActivity.class); Intent intent = new Intent(this, ColorPickerActivity.class);
intent.putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPalette.LAUNCHER); intent.putExtra(ColorPickerActivity.EXTRA_PALETTE, ColorPalette.LAUNCHER);
intent.putExtra(ColorPickerActivity.EXTRA_SHOW_NONE, false); intent.putExtra(ColorPickerActivity.EXTRA_SHOW_NONE, false);
intent.putExtra(ColorPickerActivity.EXTRA_THEME_INDEX, selectedTheme); intent.putExtra(ColorPickerActivity.EXTRA_COLOR, selectedTheme);
startActivityForResult(intent, REQUEST_COLOR_PICKER); startActivityForResult(intent, REQUEST_COLOR_PICKER);
} }
@ -162,7 +162,7 @@ public class ShortcutConfigActivity extends InjectingAppCompatActivity {
return selectedTheme; return selectedTheme;
} }
int index = int index =
selectedFilter == null || selectedFilter.tint == -1 selectedFilter == null || selectedFilter.tint == 0
? themeColor.getIndex() ? themeColor.getIndex()
: selectedFilter.tint; : selectedFilter.tint;
if (index >= ThemeColor.ICONS.length - 1) { if (index >= ThemeColor.ICONS.length - 1) {

Loading…
Cancel
Save