diff --git a/app/src/main/java/org/isoron/uhabits/activities/common/dialogs/ColorPickerDialog.java b/app/src/main/java/org/isoron/uhabits/activities/common/dialogs/ColorPickerDialog.java index c4ab3022c..796b8312f 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/common/dialogs/ColorPickerDialog.java +++ b/app/src/main/java/org/isoron/uhabits/activities/common/dialogs/ColorPickerDialog.java @@ -30,6 +30,7 @@ public class ColorPickerDialog extends com.android.colorpicker.ColorPickerDialog { super.setOnColorSelectedListener(c -> { c = ColorUtils.colorToPaletteIndex(getContext(), c); + c = ColorUtils.StaticColor.getColorByXmlIndex(c).dbIndex; listener.onColorSelected(c); }); } diff --git a/app/src/main/java/org/isoron/uhabits/models/HabitList.java b/app/src/main/java/org/isoron/uhabits/models/HabitList.java index 2892a2c30..50997003d 100644 --- a/app/src/main/java/org/isoron/uhabits/models/HabitList.java +++ b/app/src/main/java/org/isoron/uhabits/models/HabitList.java @@ -230,7 +230,7 @@ public abstract class HabitList implements Iterable habit.getDescription(), Integer.toString(freq.getNumerator()), Integer.toString(freq.getDenominator()), - ColorUtils.CSV_PALETTE[habit.getColor()] + ColorUtils.StaticColor.getColorByDbIndex(habit.getColor()).name() }; csv.writeNext(cols, false); diff --git a/app/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java b/app/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java index facc8cc4b..e71b031c0 100644 --- a/app/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java +++ b/app/src/main/java/org/isoron/uhabits/models/HabitMatcherBuilder.java @@ -36,7 +36,7 @@ public class HabitMatcherBuilder private static List allColors() { List colors = new ArrayList<>(); - for(int i = 0; i < ColorUtils.CSV_PALETTE.length; i++) + for(int i = 0; i < ColorUtils.StaticColor.values().length; i++) colors.add(i); return colors; } diff --git a/app/src/main/java/org/isoron/uhabits/models/memory/MemoryHabitList.java b/app/src/main/java/org/isoron/uhabits/models/memory/MemoryHabitList.java index 32f1982c4..55b2726c0 100644 --- a/app/src/main/java/org/isoron/uhabits/models/memory/MemoryHabitList.java +++ b/app/src/main/java/org/isoron/uhabits/models/memory/MemoryHabitList.java @@ -22,6 +22,7 @@ package org.isoron.uhabits.models.memory; import android.support.annotation.*; import org.isoron.uhabits.models.*; +import org.isoron.uhabits.utils.ColorUtils; import java.util.*; @@ -155,8 +156,8 @@ public class MemoryHabitList extends HabitList (h1, h2) -> h1.getName().compareTo(h2.getName()); Comparator colorComparator = (h1, h2) -> { - Integer c1 = h1.getColor(); - Integer c2 = h2.getColor(); + Integer c1 = ColorUtils.StaticColor.getColorByDbIndex(h1.getColor()).xmlIndex; + Integer c2 = ColorUtils.StaticColor.getColorByDbIndex(h2.getColor()).xmlIndex; if (c1.equals(c2)) return nameComparator.compare(h1, h2); else return c1.compareTo(c2); }; diff --git a/app/src/main/java/org/isoron/uhabits/utils/ColorUtils.java b/app/src/main/java/org/isoron/uhabits/utils/ColorUtils.java index 25434bacc..a259244b6 100644 --- a/app/src/main/java/org/isoron/uhabits/utils/ColorUtils.java +++ b/app/src/main/java/org/isoron/uhabits/utils/ColorUtils.java @@ -25,21 +25,55 @@ import android.util.*; public abstract class ColorUtils { - public static String CSV_PALETTE[] = { - "#D32F2F", // 0 red - "#E64A19", // 1 orange - "#F9A825", // 2 yellow - "#AFB42B", // 3 light green - "#388E3C", // 4 dark green - "#00897B", // 5 teal - "#00ACC1", // 6 cyan - "#039BE5", // 7 blue - "#5E35B1", // 8 deep purple - "#8E24AA", // 9 purple - "#D81B60", // 10 pink - "#303030", // 11 dark grey - "#aaaaaa" // 12 light grey - }; + + public enum StaticColor + { + RED ( 0, 0), + DEEP_ORANGE ( 1, 1), + ORANGE ( 2,13), + YELLOW ( 3, 2), + LIGHT_GREEN ( 4, 3), + DARK_GREEN ( 5, 4), + TEAL ( 6, 5), + CYAN ( 7, 6), + BLUE ( 8, 7), + DEEP_PURPLE ( 9, 8), + PURPLE (10, 9), + PINK (11,10), + BROWN (12,14), + DARK_GREY (13,11), + GREY (14,15), + LIGHT_GREY (15,12); + + public final int xmlIndex; + public final int dbIndex; + + StaticColor(int xmlIndex, int dbIndex) + { + this.xmlIndex = xmlIndex; + this.dbIndex = dbIndex; + } + + public static StaticColor getColorByDbIndex(int dbIndex) + { + for(StaticColor c : StaticColor.values()) + if (c.dbIndex == dbIndex) return c; + + Log.w("ColorHelper", + String.format("Invalid color db index: %d. Returning default.", dbIndex)); + return RED; + } + + public static StaticColor getColorByXmlIndex(int xmlIndex) + { + for(StaticColor c : StaticColor.values()) + if (c.xmlIndex == xmlIndex) return c; + + Log.w("ColorHelper", + String.format("Invalid color xml index: %d. Returning default.", xmlIndex)); + return RED; + } + } public static int colorToPaletteIndex(Context context, int color) { @@ -78,6 +112,8 @@ public abstract class ColorUtils if (context == null) throw new IllegalArgumentException("Context is null"); + paletteColor = ColorUtils.StaticColor.getColorByDbIndex(paletteColor).xmlIndex; + StyledResources res = new StyledResources(context); int palette[] = res.getPalette(); if (paletteColor < 0 || paletteColor >= palette.length) diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 29616a09e..4138ed7e5 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -19,6 +19,7 @@ @color/red_700 @color/deep_orange_700 + @color/orange_700 @color/yellow_800 @color/lime_700 @color/green_700 @@ -28,13 +29,16 @@ @color/deep_purple_600 @color/purple_600 @color/pink_600 + @color/brown_700 @color/grey_800 + @color/grey_600 @color/grey_500 @color/red_200 @color/deep_orange_200 + @color/orange_200 @color/yellow_200 @color/lime_200 @color/green_A200 @@ -44,13 +48,16 @@ @color/deep_purple_200 @color/purple_200 @color/pink_200 + @color/brown_200 @color/grey_100 + @color/grey_300 @color/grey_500 @color/red_800 @color/deep_orange_800 + @color/orange_800 @color/yellow_800 @color/lime_800 @color/green_700 @@ -60,6 +67,8 @@ @color/deep_purple_700 @color/purple_700 @color/pink_700 + @color/brown_800 + @color/black_aa @color/black_aa @color/black_aa diff --git a/app/src/test/java/org/isoron/uhabits/models/HabitListTest.java b/app/src/test/java/org/isoron/uhabits/models/HabitListTest.java index 961e1536c..f37a207b9 100644 --- a/app/src/test/java/org/isoron/uhabits/models/HabitListTest.java +++ b/app/src/test/java/org/isoron/uhabits/models/HabitListTest.java @@ -172,8 +172,8 @@ public class HabitListTest extends BaseUnitTest String expectedCSV = "Position,Name,Description,NumRepetitions,Interval,Color\n" + - "001,Meditate,Did you meditate this morning?,1,1,#AFB42B\n" + - "002,Wake up early,Did you wake up before 6am?,2,3,#00897B\n"; + "001,Meditate,Did you meditate this morning?,1,1,LIGHT_GREEN\n" + + "002,Wake up early,Did you wake up before 6am?,2,3,TEAL\n"; StringWriter writer = new StringWriter(); list.writeCSV(writer);