From dd1f6c9efcdffc044dea480b4c2e6ab487684b11 Mon Sep 17 00:00:00 2001 From: Alinson Xavier Date: Sat, 9 Apr 2016 20:00:21 -0400 Subject: [PATCH] Change habit.color palette according to current theme --- .../isoron/uhabits/unit/HabitFixtures.java | 5 +- .../commands/ChangeHabitColorCommandTest.java | 9 +- .../isoron/uhabits/unit/models/HabitTest.java | 3 +- .../uhabits/unit/views/NumberViewTest.java | 5 +- .../uhabits/unit/views/RingViewTest.java | 5 +- app/src/main/AndroidManifest.xml | 2 +- .../org/isoron/uhabits/ShowHabitActivity.java | 7 +- .../uhabits/fragments/EditHabitFragment.java | 27 +- .../fragments/HabitSelectionCallback.java | 17 +- .../uhabits/fragments/ShowHabitFragment.java | 9 +- .../isoron/uhabits/helpers/ColorHelper.java | 92 +++- .../uhabits/helpers/ListHabitsHelper.java | 8 +- .../java/org/isoron/uhabits/models/Habit.java | 19 +- .../isoron/uhabits/views/CheckmarkView.java | 7 +- .../uhabits/views/HabitFrequencyView.java | 6 +- .../uhabits/views/HabitHistoryView.java | 4 +- .../isoron/uhabits/views/HabitScoreView.java | 4 +- .../isoron/uhabits/views/HabitStreakView.java | 4 +- .../org/isoron/uhabits/views/NumberView.java | 2 +- .../uhabits/views/RepetitionCountView.java | 3 +- app/src/main/res/values-v21/styles.xml | 8 +- app/src/main/res/values/attrs.xml | 2 + app/src/main/res/values/colors.xml | 513 ++++++++++-------- 23 files changed, 446 insertions(+), 315 deletions(-) diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/HabitFixtures.java b/app/src/androidTest/java/org/isoron/uhabits/unit/HabitFixtures.java index 22a425266..09298bb08 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/HabitFixtures.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/HabitFixtures.java @@ -23,7 +23,6 @@ import android.content.Context; import android.support.annotation.Nullable; import android.util.Log; -import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.helpers.DatabaseHelper; import org.isoron.uhabits.helpers.DateHelper; import org.isoron.uhabits.models.Habit; @@ -66,7 +65,7 @@ public class HabitFixtures Habit habit = new Habit(); habit.name = "Meditate"; habit.description = "Did you meditate this morning?"; - habit.color = ColorHelper.palette[3]; + habit.color = 3; habit.freqNum = 1; habit.freqDen = 1; habit.save(); @@ -78,7 +77,7 @@ public class HabitFixtures Habit habit = createEmptyHabit(); habit.freqNum = 3; habit.freqDen = 7; - habit.color = ColorHelper.palette[4]; + habit.color = 4; habit.save(); long day = DateHelper.millisecondsInOneDay; diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/commands/ChangeHabitColorCommandTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/commands/ChangeHabitColorCommandTest.java index 54fd200fa..cc6c886d1 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/commands/ChangeHabitColorCommandTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/commands/ChangeHabitColorCommandTest.java @@ -24,7 +24,6 @@ import android.test.suitebuilder.annotation.SmallTest; import org.isoron.uhabits.BaseTest; import org.isoron.uhabits.commands.ChangeHabitColorCommand; -import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.models.Habit; import org.isoron.uhabits.unit.HabitFixtures; import org.junit.Before; @@ -53,12 +52,12 @@ public class ChangeHabitColorCommandTest extends BaseTest for(int i = 0; i < 3; i ++) { Habit habit = HabitFixtures.createShortHabit(); - habit.color = ColorHelper.palette[i+1]; + habit.color = i+1; habit.save(); habits.add(habit); } - command = new ChangeHabitColorCommand(habits, ColorHelper.palette[0]); + command = new ChangeHabitColorCommand(habits, 0); } @Test @@ -80,12 +79,12 @@ public class ChangeHabitColorCommandTest extends BaseTest { int k = 0; for(Habit h : habits) - assertThat(h.color, equalTo(ColorHelper.palette[++k])); + assertThat(h.color, equalTo(++k)); } private void checkNewColors() { for(Habit h : habits) - assertThat(h.color, equalTo(ColorHelper.palette[0])); + assertThat(h.color, equalTo(0)); } } diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/models/HabitTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/models/HabitTest.java index a71a0bac3..f09664031 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/models/HabitTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/models/HabitTest.java @@ -19,7 +19,6 @@ package org.isoron.uhabits.unit.models; -import android.graphics.Color; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.SmallTest; @@ -78,7 +77,7 @@ public class HabitTest extends BaseTest Habit model = new Habit(); model.archived = 1; model.highlight = 1; - model.color = Color.BLACK; + model.color = 0; model.freqNum = 10; model.freqDen = 20; model.reminderDays = 1; diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/views/NumberViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/views/NumberViewTest.java index 93269befa..e610bd7a7 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/views/NumberViewTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/views/NumberViewTest.java @@ -23,7 +23,6 @@ import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.SmallTest; import org.isoron.uhabits.R; -import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.views.NumberView; import org.junit.Before; import org.junit.Test; @@ -45,7 +44,7 @@ public class NumberViewTest extends ViewTest view = new NumberView(targetContext); view.setLabel("Hello world"); view.setNumber(31); - view.setColor(ColorHelper.palette[0]); + view.setColor(0); measureView(dpToPixels(100), dpToPixels(100), view); } @@ -68,7 +67,7 @@ public class NumberViewTest extends ViewTest public void testRender_withDifferentParams() throws IOException { view.setNumber(500); - view.setColor(ColorHelper.palette[5]); + view.setColor(5); view.setTextSize(targetContext.getResources().getDimension(R.dimen.tinyTextSize)); measureView(dpToPixels(200), dpToPixels(200), view); diff --git a/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java b/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java index d7fcb48d6..4d92bb40c 100644 --- a/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java +++ b/app/src/androidTest/java/org/isoron/uhabits/unit/views/RingViewTest.java @@ -22,7 +22,6 @@ package org.isoron.uhabits.unit.views; import android.support.test.runner.AndroidJUnit4; import android.test.suitebuilder.annotation.SmallTest; -import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.views.RingView; import org.junit.Before; import org.junit.Test; @@ -44,7 +43,7 @@ public class RingViewTest extends ViewTest view = new RingView(targetContext); view.setLabel("Hello world"); view.setPercentage(0.6f); - view.setColor(ColorHelper.palette[0]); + view.setColor(0); view.setMaxDiameter(dpToPixels(100)); } @@ -70,7 +69,7 @@ public class RingViewTest extends ViewTest view.setLabel("Habit Strength"); view.setPercentage(0.25f); view.setMaxDiameter(dpToPixels(50)); - view.setColor(ColorHelper.palette[5]); + view.setColor(5); measureView(dpToPixels(200), dpToPixels(200), view); assertRenders(view, "RingView/renderDifferentParams.png"); diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 18e1367b6..f04101065 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,7 +40,7 @@ android:backupAgent=".HabitsBackupAgent" android:icon="@mipmap/ic_launcher" android:label="@string/main_activity_title" - android:theme="@style/AppBaseTheme" + android:theme="@style/AppBaseThemeDark" android:supportsRtl="true"> = 21) - actionBar.setBackgroundDrawable(new ColorDrawable(getHabit().color)); + { + int androidColor = ColorHelper.getColor(this, getHabit().color); + ColorDrawable drawable = new ColorDrawable(androidColor); + actionBar.setBackgroundDrawable(drawable); + } } setContentView(R.layout.show_habit_activity); diff --git a/app/src/main/java/org/isoron/uhabits/fragments/EditHabitFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/EditHabitFragment.java index 3f1a117c9..2274396b0 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/EditHabitFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/EditHabitFragment.java @@ -40,14 +40,14 @@ import com.android.colorpicker.ColorPickerSwatch; import com.android.datetimepicker.time.RadialPickerLayout; import com.android.datetimepicker.time.TimePickerDialog; -import org.isoron.uhabits.helpers.ColorHelper; -import org.isoron.uhabits.helpers.DateHelper; -import org.isoron.uhabits.helpers.UIHelper.OnSavedListener; import org.isoron.uhabits.R; import org.isoron.uhabits.commands.Command; import org.isoron.uhabits.commands.CreateHabitCommand; import org.isoron.uhabits.commands.EditHabitCommand; import org.isoron.uhabits.dialogs.WeekdayPickerDialog; +import org.isoron.uhabits.helpers.ColorHelper; +import org.isoron.uhabits.helpers.DateHelper; +import org.isoron.uhabits.helpers.UIHelper.OnSavedListener; import org.isoron.uhabits.models.Habit; import java.util.Arrays; @@ -138,7 +138,7 @@ public class EditHabitFragment extends DialogFragment modifiedHabit = new Habit(); modifiedHabit.freqNum = 1; modifiedHabit.freqDen = 1; - modifiedHabit.color = prefs.getInt("pref_default_habit_color", modifiedHabit.color); + modifiedHabit.color = prefs.getInt("pref_default_habit_palette_color", modifiedHabit.color); } else if (mode == EDIT_MODE) { @@ -174,13 +174,13 @@ public class EditHabitFragment extends DialogFragment return view; } - private void changeColor(Integer color) + private void changeColor(int paletteColor) { - modifiedHabit.color = color; - tvName.setTextColor(color); + modifiedHabit.color = paletteColor; + tvName.setTextColor(ColorHelper.getColor(getActivity(), paletteColor)); SharedPreferences.Editor editor = prefs.edit(); - editor.putInt("pref_default_habit_color", color); + editor.putInt("pref_default_habit_palette_color", paletteColor); editor.apply(); } @@ -237,15 +237,18 @@ public class EditHabitFragment extends DialogFragment private void onColorButtonClick() { + int originalAndroidColor = ColorHelper.getColor(getActivity(), modifiedHabit.color); + ColorPickerDialog picker = ColorPickerDialog.newInstance( - R.string.color_picker_default_title, ColorHelper.palette, modifiedHabit.color, 4, - ColorPickerDialog.SIZE_SMALL); + R.string.color_picker_default_title, ColorHelper.getPalette(getActivity()), + originalAndroidColor, 4, ColorPickerDialog.SIZE_SMALL); picker.setOnColorSelectedListener(new ColorPickerSwatch.OnColorSelectedListener() { - public void onColorSelected(int color) + public void onColorSelected(int androidColor) { - changeColor(color); + int paletteColor = ColorHelper.colorToPaletteIndex(getActivity(), androidColor); + changeColor(paletteColor); } }); picker.show(getFragmentManager(), "picker"); diff --git a/app/src/main/java/org/isoron/uhabits/fragments/HabitSelectionCallback.java b/app/src/main/java/org/isoron/uhabits/fragments/HabitSelectionCallback.java index 9d124a691..03c1850aa 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/HabitSelectionCallback.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/HabitSelectionCallback.java @@ -29,8 +29,8 @@ import android.widget.ProgressBar; import com.android.colorpicker.ColorPickerDialog; import com.android.colorpicker.ColorPickerSwatch; -import org.isoron.uhabits.R; import org.isoron.uhabits.BaseActivity; +import org.isoron.uhabits.R; import org.isoron.uhabits.commands.ArchiveHabitsCommand; import org.isoron.uhabits.commands.ChangeHabitColorCommand; import org.isoron.uhabits.commands.DeleteHabitsCommand; @@ -163,15 +163,20 @@ public class HabitSelectionCallback implements ActionMode.Callback case R.id.action_color: { - ColorPickerDialog picker = ColorPickerDialog.newInstance(R.string.color_picker_default_title, - ColorHelper.palette, firstHabit.color, 4, ColorPickerDialog.SIZE_SMALL); + int originalAndroidColor = ColorHelper.getColor(activity, firstHabit.color); + + ColorPickerDialog picker = ColorPickerDialog.newInstance( + R.string.color_picker_default_title, ColorHelper.getPalette(activity), + originalAndroidColor, 4, ColorPickerDialog.SIZE_SMALL); picker.setOnColorSelectedListener(new ColorPickerSwatch.OnColorSelectedListener() { - public void onColorSelected(int color) + public void onColorSelected(int androidColor) { - activity.executeCommand( - new ChangeHabitColorCommand(selectedHabits, color), null); + int paletteColor = ColorHelper.colorToPaletteIndex(activity, + androidColor); + activity.executeCommand(new ChangeHabitColorCommand(selectedHabits, + paletteColor), null); mode.finish(); } }); diff --git a/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java b/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java index 1afb5dabd..b452e79bc 100644 --- a/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java +++ b/app/src/main/java/org/isoron/uhabits/fragments/ShowHabitFragment.java @@ -163,7 +163,8 @@ public class ShowHabitFragment extends Fragment float percentage = todayValue / Score.MAX_VALUE; RingView scoreRing = (RingView) view.findViewById(R.id.scoreRing); - scoreRing.setColor(habit.color); + int androidColor = ColorHelper.getColor(getActivity(), habit.color); + scoreRing.setColor(androidColor); scoreRing.setPercentage(percentage); } @@ -173,7 +174,8 @@ public class ShowHabitFragment extends Fragment if (android.os.Build.VERSION.SDK_INT >= 21) { - int darkerHabitColor = ColorHelper.mixColors(habit.color, Color.BLACK, 0.75f); + int color = ColorHelper.getColor(getActivity(), habit.color); + int darkerHabitColor = ColorHelper.mixColors(color, Color.BLACK, 0.75f); activity.getWindow().setStatusBarColor(darkerHabitColor); } @@ -189,7 +191,8 @@ public class ShowHabitFragment extends Fragment if(habit == null) return; TextView textView = (TextView) view.findViewById(viewId); - textView.setTextColor(habit.color); + int androidColor = ColorHelper.getColor(activity, habit.color); + textView.setTextColor(androidColor); } @Override diff --git a/app/src/main/java/org/isoron/uhabits/helpers/ColorHelper.java b/app/src/main/java/org/isoron/uhabits/helpers/ColorHelper.java index e58a73745..361c1272c 100644 --- a/app/src/main/java/org/isoron/uhabits/helpers/ColorHelper.java +++ b/app/src/main/java/org/isoron/uhabits/helpers/ColorHelper.java @@ -19,27 +19,91 @@ package org.isoron.uhabits.helpers; +import android.content.Context; +import android.content.res.TypedArray; import android.graphics.Color; +import android.util.Log; + +import org.isoron.uhabits.R; public class ColorHelper { - public static final int[] palette = + + public static int CSV_PALETTE[] = { - Color.parseColor("#D32F2F"), // red - Color.parseColor("#E64A19"), // orange - Color.parseColor("#F9A825"), // yellow - Color.parseColor("#AFB42B"), // light green - Color.parseColor("#388E3C"), // dark green - Color.parseColor("#00897B"), // teal - Color.parseColor("#00ACC1"), // cyan - Color.parseColor("#039BE5"), // blue - Color.parseColor("#5E35B1"), // deep purple - Color.parseColor("#8E24AA"), // purple - Color.parseColor("#D81B60"), // pink - Color.parseColor("#303030"), // dark grey - Color.parseColor("#aaaaaa") // light grey + Color.parseColor("#D32F2F"), // red + Color.parseColor("#E64A19"), // orange + Color.parseColor("#F9A825"), // yellow + Color.parseColor("#AFB42B"), // light green + Color.parseColor("#388E3C"), // dark green + Color.parseColor("#00897B"), // teal + Color.parseColor("#00ACC1"), // cyan + Color.parseColor("#039BE5"), // blue + Color.parseColor("#5E35B1"), // deep purple + Color.parseColor("#8E24AA"), // purple + Color.parseColor("#D81B60"), // pink + Color.parseColor("#303030"), // dark grey + Color.parseColor("#aaaaaa") // light grey }; + public static int colorToPaletteIndex(Context context, int color) + { + int[] palette = getPalette(context); + + for(int k = 0; k < palette.length; k++) + if(palette[k] == color) return k; + + return -1; + } + + public static int[] getPalette(Context context) + { + int[] attr = new int[] { R.attr.palette }; + TypedArray array = context.obtainStyledAttributes(attr); + int resourceId = array.getResourceId(0, -1); + array.recycle(); + + if(resourceId < 0) + { + Log.w("ColorHelper", "could not find palette resource. Returning CSV palette"); + return CSV_PALETTE; + } + + return context.getResources().getIntArray(resourceId); + } + + public static int getColor(Context context, int paletteColor) + { + + if(context == null) throw new IllegalArgumentException("Context is null"); + int palette[] = getPalette(context); + if(paletteColor < 0 || paletteColor >= palette.length) + { + // TODO: Write DB migration and change warnings to runtime exceptions + int androidColor = paletteColor; + paletteColor = -1; + + Log.w("ColorHelper", "Invalid palette color detected. Trying to convert."); + + for(int k = 0; k < CSV_PALETTE.length; k++) + { + if (CSV_PALETTE[k] == androidColor) + { + paletteColor = k; + break; + } + } + + if(paletteColor < 0) + { + Log.w("ColorHelper", "Conversion failed. Returning default."); + paletteColor = 0; + } + } + + return palette[paletteColor]; + } + public static int mixColors(int color1, int color2, float amount) { final byte ALPHA_CHANNEL = 24; diff --git a/app/src/main/java/org/isoron/uhabits/helpers/ListHabitsHelper.java b/app/src/main/java/org/isoron/uhabits/helpers/ListHabitsHelper.java index f52dc5b4d..e315fe172 100644 --- a/app/src/main/java/org/isoron/uhabits/helpers/ListHabitsHelper.java +++ b/app/src/main/java/org/isoron/uhabits/helpers/ListHabitsHelper.java @@ -93,7 +93,7 @@ public class ListHabitsHelper public int getActiveColor(Habit habit) { - int activeColor = habit.color; + int activeColor = ColorHelper.getColor(context, habit.color); if(habit.isArchived()) activeColor = inactiveColor; return activeColor; @@ -221,9 +221,11 @@ public class ListHabitsHelper public void toggleCheckmarkView(View v, Habit habit) { + int androidColor = ColorHelper.getColor(context, habit.color); + if (v.getTag(R.string.toggle_key).equals(2)) - updateCheckmark(habit.color, (TextView) v, 0); + updateCheckmark(androidColor, (TextView) v, 0); else - updateCheckmark(habit.color, (TextView) v, 2); + updateCheckmark(androidColor, (TextView) v, 2); } } diff --git a/app/src/main/java/org/isoron/uhabits/models/Habit.java b/app/src/main/java/org/isoron/uhabits/models/Habit.java index a3c51e3fe..1fdb982ad 100644 --- a/app/src/main/java/org/isoron/uhabits/models/Habit.java +++ b/app/src/main/java/org/isoron/uhabits/models/Habit.java @@ -71,7 +71,11 @@ public class Habit extends Model public Integer freqDen; /** - * Color of the habit. The format is the same as android.graphics.Color. + * Color of the habit. + * + * This number is not an android.graphics.Color, but an index to the activity color palette, + * which changes according to the theme. To convert this color into an android.graphics.Color, + * use ColorHelper.getColor(context, habit.color). */ @Column(name = "color") public Integer color; @@ -166,7 +170,7 @@ public class Habit extends Model */ public Habit() { - this.color = ColorHelper.palette[5]; + this.color = 5; this.position = Habit.countWithArchived(); this.highlight = 0; this.archived = 0; @@ -492,8 +496,15 @@ public class Habit extends Model for(Habit habit : habits) { - String[] cols = { habit.name, habit.description, Integer.toString(habit.freqNum), - Integer.toString(habit.freqDen), ColorHelper.toHTML(habit.color) }; + String[] cols = + { + habit.name, + habit.description, + Integer.toString(habit.freqNum), + Integer.toString(habit.freqDen), + ColorHelper.toHTML(ColorHelper.CSV_PALETTE[habit.color]) + }; + csv.writeNext(cols, false); } diff --git a/app/src/main/java/org/isoron/uhabits/views/CheckmarkView.java b/app/src/main/java/org/isoron/uhabits/views/CheckmarkView.java index 8819e8e37..535c14cb6 100644 --- a/app/src/main/java/org/isoron/uhabits/views/CheckmarkView.java +++ b/app/src/main/java/org/isoron/uhabits/views/CheckmarkView.java @@ -94,7 +94,7 @@ public class CheckmarkView extends View implements HabitDataView fa_check = context.getString(R.string.fa_check); fa_times = context.getString(R.string.fa_times); - primaryColor = ColorHelper.palette[10]; + primaryColor = ColorHelper.getColor(getContext(), 10); timesColor = Color.argb(128, 255, 255, 255); darkGrey = Color.argb(64, 0, 0, 0); @@ -184,8 +184,9 @@ public class CheckmarkView extends View implements HabitDataView public void refreshData() { this.check_status = habit.checkmarks.getTodayValue(); - this.primaryColor = Color.argb(230, Color.red(habit.color), Color.green(habit.color), - Color.blue(habit.color)); + int color = ColorHelper.getColor(getContext(), habit.color); + this.primaryColor = Color.argb(230, Color.red(color), Color.green(color), + Color.blue(color)); this.label = habit.name; updateLabel(); diff --git a/app/src/main/java/org/isoron/uhabits/views/HabitFrequencyView.java b/app/src/main/java/org/isoron/uhabits/views/HabitFrequencyView.java index 55abb3959..e6233abe4 100644 --- a/app/src/main/java/org/isoron/uhabits/views/HabitFrequencyView.java +++ b/app/src/main/java/org/isoron/uhabits/views/HabitFrequencyView.java @@ -73,7 +73,7 @@ public class HabitFrequencyView extends ScrollableDataView implements HabitDataV public HabitFrequencyView(Context context, AttributeSet attrs) { super(context, attrs); - this.primaryColor = ColorHelper.palette[7]; + this.primaryColor = ColorHelper.getColor(getContext(), 7); this.frequency = new HashMap<>(); init(); } @@ -101,7 +101,9 @@ public class HabitFrequencyView extends ScrollableDataView implements HabitDataV private void createColors() { if(habit != null) - this.primaryColor = habit.color; + { + this.primaryColor = ColorHelper.getColor(getContext(), habit.color); + } if (isBackgroundTransparent) { diff --git a/app/src/main/java/org/isoron/uhabits/views/HabitHistoryView.java b/app/src/main/java/org/isoron/uhabits/views/HabitHistoryView.java index 0958bf275..bc2e43603 100644 --- a/app/src/main/java/org/isoron/uhabits/views/HabitHistoryView.java +++ b/app/src/main/java/org/isoron/uhabits/views/HabitHistoryView.java @@ -97,7 +97,7 @@ public class HabitHistoryView extends ScrollableDataView implements HabitDataVie isEditable = false; checkmarks = new int[0]; - primaryColor = ColorHelper.palette[7]; + primaryColor = ColorHelper.getColor(getContext(), 7); wdays = DateHelper.getShortDayNames(); dfMonth = DateHelper.getDateFormat("MMM"); dfYear = DateHelper.getDateFormat("yyyy"); @@ -164,7 +164,7 @@ public class HabitHistoryView extends ScrollableDataView implements HabitDataVie private void createColors() { if(habit != null) - this.primaryColor = habit.color; + this.primaryColor = ColorHelper.getColor(getContext(), habit.color); if(isBackgroundTransparent) primaryColor = ColorHelper.setMinValue(primaryColor, 0.75f); diff --git a/app/src/main/java/org/isoron/uhabits/views/HabitScoreView.java b/app/src/main/java/org/isoron/uhabits/views/HabitScoreView.java index a2c84fa4b..62e91e17a 100644 --- a/app/src/main/java/org/isoron/uhabits/views/HabitScoreView.java +++ b/app/src/main/java/org/isoron/uhabits/views/HabitScoreView.java @@ -86,7 +86,7 @@ public class HabitScoreView extends ScrollableDataView implements HabitDataView public HabitScoreView(Context context, AttributeSet attrs) { super(context, attrs); - this.primaryColor = ColorHelper.palette[7]; + this.primaryColor = ColorHelper.getColor(getContext(), 7); init(); } @@ -112,7 +112,7 @@ public class HabitScoreView extends ScrollableDataView implements HabitDataView private void createColors() { if(habit != null) - this.primaryColor = habit.color; + this.primaryColor = ColorHelper.getColor(getContext(), habit.color); if (isBackgroundTransparent) { diff --git a/app/src/main/java/org/isoron/uhabits/views/HabitStreakView.java b/app/src/main/java/org/isoron/uhabits/views/HabitStreakView.java index 4e21b0934..b58fd80aa 100644 --- a/app/src/main/java/org/isoron/uhabits/views/HabitStreakView.java +++ b/app/src/main/java/org/isoron/uhabits/views/HabitStreakView.java @@ -72,7 +72,7 @@ public class HabitStreakView extends View implements HabitDataView public HabitStreakView(Context context, AttributeSet attrs) { super(context, attrs); - this.primaryColor = ColorHelper.palette[7]; + this.primaryColor = ColorHelper.getColor(getContext(), 7); init(); } @@ -123,7 +123,7 @@ public class HabitStreakView extends View implements HabitDataView private void createColors() { if(habit != null) - this.primaryColor = habit.color; + this.primaryColor = ColorHelper.getColor(getContext(), habit.color); if(isBackgroundTransparent) { diff --git a/app/src/main/java/org/isoron/uhabits/views/NumberView.java b/app/src/main/java/org/isoron/uhabits/views/NumberView.java index 2d5ab4402..b5412a7a3 100644 --- a/app/src/main/java/org/isoron/uhabits/views/NumberView.java +++ b/app/src/main/java/org/isoron/uhabits/views/NumberView.java @@ -71,7 +71,7 @@ public class NumberView extends View this.textSize = UIHelper.getFloatAttribute(context, attrs, "textSize", getResources().getDimension(R.dimen.regularTextSize)); - this.color = ColorHelper.palette[7]; + this.color = ColorHelper.getColor(getContext(), 7); init(); } diff --git a/app/src/main/java/org/isoron/uhabits/views/RepetitionCountView.java b/app/src/main/java/org/isoron/uhabits/views/RepetitionCountView.java index e0f80aa90..ee850ab2f 100644 --- a/app/src/main/java/org/isoron/uhabits/views/RepetitionCountView.java +++ b/app/src/main/java/org/isoron/uhabits/views/RepetitionCountView.java @@ -23,6 +23,7 @@ import android.content.Context; import android.util.AttributeSet; import org.isoron.uhabits.R; +import org.isoron.uhabits.helpers.ColorHelper; import org.isoron.uhabits.helpers.DateHelper; import org.isoron.uhabits.helpers.UIHelper; import org.isoron.uhabits.models.Habit; @@ -79,6 +80,6 @@ public class RepetitionCountView extends NumberView implements HabitDataView public void setHabit(Habit habit) { this.habit = habit; - setColor(habit.color); + setColor(ColorHelper.getColor(getContext(), habit.color)); } } diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml index 095e1918b..47eac3cd0 100644 --- a/app/src/main/res/values-v21/styles.xml +++ b/app/src/main/res/values-v21/styles.xml @@ -37,6 +37,8 @@ @color/grey_600 @color/grey_300 @color/grey_800 + + @array/lightPalette