Remove index from pickable interface

pull/935/head
Alex Baker 4 years ago
parent 4030312820
commit 1b3867598b

@ -8,6 +8,7 @@ import static org.tasks.db.DbUtils.batch;
import android.content.Context; import android.content.Context;
import android.os.Environment; import android.os.Environment;
import androidx.annotation.ColorRes;
import androidx.core.content.ContextCompat; 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;
@ -42,7 +43,6 @@ import org.tasks.data.UserActivityDao;
import org.tasks.injection.ForApplication; 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 {
@ -148,9 +148,35 @@ public class Upgrader {
} }
public static int getAndroidColor(Context context, int index) { public static int getAndroidColor(Context context, int index) {
return index >= 0 && index < ThemeColor.COLORS.length int legacyColor = getLegacyColor(index, 0);
? ContextCompat.getColor(context, ThemeColor.COLORS[index]) return legacyColor == 0 ? 0 : ContextCompat.getColor(context, legacyColor);
: 0; }
public static @ColorRes int getLegacyColor(int index, int def) {
switch (index) {
case 0: return R.color.blue_grey_500;
case 1: return R.color.grey_900;
case 2: return R.color.red_500;
case 3: return R.color.pink_500;
case 4: return R.color.purple_500;
case 5: return R.color.deep_purple_500;
case 6: return R.color.indigo_500;
case 7: return R.color.blue_500;
case 8: return R.color.light_blue_500;
case 9: return R.color.cyan_500;
case 10: return R.color.teal_500;
case 11: return R.color.green_500;
case 12: return R.color.light_green_500;
case 13: return R.color.lime_500;
case 14: return R.color.yellow_500;
case 15: return R.color.amber_500;
case 16: return R.color.orange_500;
case 17: return R.color.deep_orange_500;
case 18: return R.color.brown_500;
case 19: return R.color.grey_500;
case 20: return R.color.white_100;
default: return def;
}
} }
private void applyCaldavSubtasks() { private void applyCaldavSubtasks() {

@ -60,7 +60,6 @@ class ColorPalettePicker : InjectingDialogFragment() {
interface Pickable : Parcelable { interface Pickable : Parcelable {
val pickerColor: Int val pickerColor: Int
val isFree: Boolean val isFree: Boolean
val index: Int
} }
interface ColorPickedCallback { interface ColorPickedCallback {
@ -82,17 +81,17 @@ class ColorPalettePicker : InjectingDialogFragment() {
ButterKnife.bind(this, view) ButterKnife.bind(this, view)
palette = arguments!!.getSerializable(EXTRA_PALETTE) as Palette palette = arguments!!.getSerializable(EXTRA_PALETTE) as Palette
colors = when (palette) { colors = when (palette) {
Palette.COLORS -> ThemeColor.COLORS.mapIndexed { index, color -> Palette.COLORS -> ThemeColor.COLORS.map { color ->
ThemeColor(context, index, ContextCompat.getColor(context!!, color), true) ThemeColor(context, ContextCompat.getColor(context!!, color), true)
} }
Palette.ACCENTS -> ThemeAccent.ACCENTS.mapIndexed { index, _ -> Palette.ACCENTS -> ThemeAccent.ACCENTS.mapIndexed { index, _ ->
ThemeAccent(context, index) ThemeAccent(context, index)
} }
Palette.LAUNCHERS -> ThemeColor.LAUNCHER_COLORS.mapIndexed { index, color -> Palette.LAUNCHERS -> ThemeColor.LAUNCHER_COLORS.map { color ->
ThemeColor(context, index, ContextCompat.getColor(context!!, color), false) ThemeColor(context, ContextCompat.getColor(context!!, color), false)
} }
Palette.WIDGET -> ThemeColor.COLORS.mapIndexed { index, color -> Palette.WIDGET -> ThemeColor.COLORS.map { color ->
ThemeColor(context, index, ContextCompat.getColor(context!!, color), false) ThemeColor(context, ContextCompat.getColor(context!!, color), false)
} }
} }
@ -134,8 +133,7 @@ class ColorPalettePicker : InjectingDialogFragment() {
private fun onSelected(index: Int) { private fun onSelected(index: Int) {
val result = when (palette) { val result = when (palette) {
Palette.COLORS, Palette.WIDGET -> Palette.COLORS, Palette.WIDGET -> (colors[index] as ThemeColor).originalColor
(colors.find { it.index == index } as ThemeColor).originalColor
else -> index else -> index
} }
dialog?.dismiss() dialog?.dismiss()

@ -7,12 +7,13 @@ import androidx.recyclerview.widget.ListAdapter
import org.tasks.Callback import org.tasks.Callback
import org.tasks.R import org.tasks.R
import org.tasks.billing.Inventory import org.tasks.billing.Inventory
import org.tasks.dialogs.ColorPalettePicker.Pickable
class ColorPickerAdapter( class ColorPickerAdapter(
private val activity: Activity, private val activity: Activity,
private val inventory: Inventory, private val inventory: Inventory,
private val onSelected: Callback<Int> private val onSelected: Callback<Int>
) : ListAdapter<ColorPalettePicker.Pickable, IconPickerHolder>(DiffCallback()) { ) : ListAdapter<Pickable, IconPickerHolder>(DiffCallback()) {
enum class Palette { enum class Palette {
COLORS, COLORS,
@ -30,7 +31,7 @@ class ColorPickerAdapter(
val pickable = getItem(position) val pickable = getItem(position)
val available = inventory.purchasedThemes() || pickable.isFree val available = inventory.purchasedThemes() || pickable.isFree
holder.bind( holder.bind(
pickable.index, position,
if (available) R.drawable.color_picker else R.drawable.ic_outline_vpn_key_24px, if (available) R.drawable.color_picker else R.drawable.ic_outline_vpn_key_24px,
pickable.pickerColor, pickable.pickerColor,
1f, 1f,
@ -38,19 +39,13 @@ class ColorPickerAdapter(
) )
} }
private class DiffCallback : DiffUtil.ItemCallback<ColorPalettePicker.Pickable>() { private class DiffCallback : DiffUtil.ItemCallback<Pickable>() {
override fun areItemsTheSame( override fun areItemsTheSame(oldItem: Pickable, newItem: Pickable): Boolean {
oldItem: ColorPalettePicker.Pickable,
newItem: ColorPalettePicker.Pickable
): Boolean {
return oldItem == newItem return oldItem == newItem
} }
override fun areContentsTheSame( override fun areContentsTheSame(oldItem: Pickable, newItem: Pickable): Boolean {
oldItem: ColorPalettePicker.Pickable, return true
newItem: ColorPalettePicker.Pickable
): Boolean {
return oldItem.index == newItem.index
} }
} }
} }

@ -43,19 +43,16 @@ public class ThemeAccent implements Pickable {
return new ThemeAccent[size]; return new ThemeAccent[size];
} }
}; };
private final int index;
private final int style; private final int style;
@Deprecated private final int accentColor; @Deprecated private final int accentColor;
public ThemeAccent(Context context, int index) { public ThemeAccent(Context context, int index) {
this.index = index;
this.style = ACCENTS[index]; this.style = ACCENTS[index];
Resources.Theme theme = new ContextThemeWrapper(context, ThemeAccent.ACCENTS[index]).getTheme(); Resources.Theme theme = new ContextThemeWrapper(context, ThemeAccent.ACCENTS[index]).getTheme();
this.accentColor = resolveAttribute(theme, R.attr.colorSecondary); this.accentColor = resolveAttribute(theme, R.attr.colorSecondary);
} }
private ThemeAccent(Parcel source) { private ThemeAccent(Parcel source) {
index = source.readInt();
style = source.readInt(); style = source.readInt();
accentColor = source.readInt(); accentColor = source.readInt();
} }
@ -86,11 +83,6 @@ public class ThemeAccent implements Pickable {
} }
} }
@Override
public int getIndex() {
return index;
}
@Deprecated @Deprecated
public int getAccentColor() { public int getAccentColor() {
return accentColor; return accentColor;
@ -103,7 +95,6 @@ public class ThemeAccent implements Pickable {
@Override @Override
public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(index);
dest.writeInt(style); dest.writeInt(style);
dest.writeInt(accentColor); dest.writeInt(accentColor);
} }

@ -172,7 +172,6 @@ public class ThemeColor implements Pickable {
colorMap.put(-1, -16777216); // white & black colorMap.put(-1, -16777216); // white & black
} }
private final int index;
private final int original; private final int original;
private final int colorOnPrimary; private final int colorOnPrimary;
private final int colorPrimary; private final int colorPrimary;
@ -180,16 +179,14 @@ public class ThemeColor implements Pickable {
private final boolean isDark; private final boolean isDark;
public static ThemeColor getLauncherColor(Context context, int index) { public static ThemeColor getLauncherColor(Context context, int index) {
return new ThemeColor( return new ThemeColor(context, ContextCompat.getColor(context, LAUNCHER_COLORS[index]), false);
context, index, ContextCompat.getColor(context, LAUNCHER_COLORS[index]), false);
} }
public ThemeColor(Context context, int color) { public ThemeColor(Context context, int color) {
this(context, -1, color == 0 ? ContextCompat.getColor(context, R.color.blue_500) : color, true); this(context, color == 0 ? ContextCompat.getColor(context, R.color.blue_500) : color, true);
} }
public ThemeColor(Context context, int index, int color, boolean adjustColor) { public ThemeColor(Context context, int color, boolean adjustColor) {
this.index = index;
color |= 0xFF000000; // remove alpha color |= 0xFF000000; // remove alpha
original = color; original = color;
if (adjustColor && context.getResources().getBoolean(R.bool.is_dark)) { if (adjustColor && context.getResources().getBoolean(R.bool.is_dark)) {
@ -216,7 +213,6 @@ public class ThemeColor implements Pickable {
} }
private ThemeColor(Parcel source) { private ThemeColor(Parcel source) {
index = source.readInt();
colorOnPrimary = source.readInt(); colorOnPrimary = source.readInt();
colorPrimary = source.readInt(); colorPrimary = source.readInt();
colorPrimaryVariant = source.readInt(); colorPrimaryVariant = source.readInt();
@ -349,11 +345,6 @@ public class ThemeColor implements Pickable {
} }
} }
@Override
public int getIndex() {
return index;
}
public int getOriginalColor() { public int getOriginalColor() {
return original; return original;
} }
@ -381,7 +372,6 @@ public class ThemeColor implements Pickable {
@Override @Override
public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(index);
dest.writeInt(colorOnPrimary); dest.writeInt(colorOnPrimary);
dest.writeInt(colorPrimary); dest.writeInt(colorPrimary);
dest.writeInt(colorPrimaryVariant); dest.writeInt(colorPrimaryVariant);

@ -222,6 +222,6 @@ public class ChipProvider {
private static ThemeColor getUntaggedThemeColor(Context context) { private static ThemeColor getUntaggedThemeColor(Context context) {
return new ThemeColor( return new ThemeColor(
context, -1, ContextCompat.getColor(context, R.color.tag_color_none_background), false); context, ContextCompat.getColor(context, R.color.tag_color_none_background), false);
} }
} }

@ -73,7 +73,7 @@ public class TasksWidget extends InjectingAppWidgetProvider {
Intent rvIntent = new Intent(context, ScrollableWidgetUpdateService.class); Intent rvIntent = new Intent(context, ScrollableWidgetUpdateService.class);
rvIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id); rvIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, id);
rvIntent.setData(Uri.parse(rvIntent.toUri(Intent.URI_INTENT_SCHEME))); rvIntent.setData(Uri.parse(rvIntent.toUri(Intent.URI_INTENT_SCHEME)));
ThemeColor color = new ThemeColor(context, -1, widgetPreferences.getColor(), false); ThemeColor color = new ThemeColor(context, widgetPreferences.getColor(), false);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.scrollable_widget); RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.scrollable_widget);
if (atLeastJellybeanMR1()) { if (atLeastJellybeanMR1()) {
remoteViews.setInt(R.id.widget, "setLayoutDirection", locale.getDirectionality()); remoteViews.setInt(R.id.widget, "setLayoutDirection", locale.getDirectionality());

@ -2,9 +2,9 @@ package org.tasks.widget;
import android.content.Context; import android.content.Context;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
import com.todoroo.astrid.service.Upgrader;
import org.tasks.R; import org.tasks.R;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import org.tasks.themes.ThemeColor;
public class WidgetPreferences { public class WidgetPreferences {
@ -52,10 +52,7 @@ public class WidgetPreferences {
return color; return color;
} }
int index = preferences.getInt(getKey(R.string.p_widget_color), -1); int index = preferences.getInt(getKey(R.string.p_widget_color), -1);
if (index < 0 || index > ThemeColor.COLORS.length) { color = ContextCompat.getColor(context, Upgrader.getLegacyColor(index, R.color.blue_500));
index = 7;
}
color = ContextCompat.getColor(context, ThemeColor.COLORS[index]);
preferences.setInt(getKey(R.string.p_widget_color_v2), color); preferences.setInt(getKey(R.string.p_widget_color_v2), color);
return color; return color;
} }

Loading…
Cancel
Save