diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/common/views/HistoryChartTest.java b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/common/views/HistoryChartTest.java index 9a04291dd..8148a6fda 100644 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/common/views/HistoryChartTest.java +++ b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/common/views/HistoryChartTest.java @@ -56,7 +56,7 @@ public class HistoryChartTest extends BaseViewTest today = new Timestamp(DateUtils.getStartOfToday()); chart = new HistoryChart(targetContext); - chart.setCheckmarks(habit.getCheckmarks().getAllValues()); + chart.updateState(habit.getCheckmarks().getAllValues(), habit.getActiveDays().toArray()); chart.setColor(PaletteUtils.getAndroidTestColor(habit.getColor())); measureView(chart, dpToPixels(400), dpToPixels(200)); @@ -92,7 +92,7 @@ public class HistoryChartTest extends BaseViewTest public void tapDate_withEmptyHabit() { chart.setIsEditable(true); - chart.setCheckmarks(new int[]{}); + chart.updateState(new int[]{}, WeekdayList.EVERY_DAY.toArray()); chart.tap(dpToPixels(340), dpToPixels(40)); verify(controller).onToggleCheckmark(today, Checkmark.YES_MANUAL); verifyNoMoreInteractions(controller); diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/HistoryEditorDialog.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/HistoryEditorDialog.java index a3c232cc7..2ad15287d 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/HistoryEditorDialog.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/dialogs/HistoryEditorDialog.java @@ -180,7 +180,7 @@ public class HistoryEditorDialog extends AppCompatDialogFragment int color = PaletteUtils.getColor(getContext(), habit.getColor()); historyChart.setColor(color); - historyChart.setCheckmarks(checkmarks); + historyChart.updateState(checkmarks, habit.getActiveDays().toArray()); } } } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/HistoryChart.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/HistoryChart.java index c299dcf81..c25447861 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/HistoryChart.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/HistoryChart.java @@ -44,6 +44,8 @@ public class HistoryChart extends ScrollableChart { private int[] checkmarks; + private boolean[] activeDays; + private int target; private Paint pSquareBg, pSquareFg, pTextHeader; @@ -181,9 +183,10 @@ public class HistoryChart extends ScrollableChart } } - public void setCheckmarks(int[] checkmarks) + public void updateState(int[] checkmarks, boolean[] activeDays) { this.checkmarks = checkmarks; + this.activeDays = activeDays; postInvalidate(); } @@ -370,7 +373,7 @@ public class HistoryChart extends ScrollableChart GregorianCalendar date, int checkmarkOffset) { - + int realWeekday = date.get(Calendar.DAY_OF_WEEK) % 7; int checkmark = 0; if (checkmarkOffset >= checkmarks.length) { @@ -400,7 +403,7 @@ public class HistoryChart extends ScrollableChart float round = dpToPixels(getContext(), 2); canvas.drawRoundRect(location, round, round, pSquareBg); - if (!isNumerical && (checkmark == SKIP_MANUAL || checkmark == SKIP_AUTO)) + if (!isNumerical && (checkmark == SKIP_MANUAL || !activeDays[realWeekday])) { pSquareBg.setColor(backgroundColor); pSquareBg.setStrokeWidth(columnWidth * 0.025f); @@ -439,6 +442,7 @@ public class HistoryChart extends ScrollableChart { isEditable = false; checkmarks = new int[0]; + activeDays = WeekdayList.EVERY_DAY.toArray(); controller = new Controller() {}; target = 2; diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/HistoryCard.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/HistoryCard.java index 7e1f4948b..056a81e79 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/HistoryCard.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/HistoryCard.java @@ -121,7 +121,7 @@ public class HistoryCard extends HabitCard if (isCanceled()) return; int[] checkmarks = habit.getCheckmarks().getAllValues(); if(prefs != null) chart.setFirstWeekday(prefs.getFirstWeekday()); - chart.setCheckmarks(checkmarks); + chart.updateState(checkmarks, habit.getActiveDays().toArray()); } @Override diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/HistoryWidget.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/HistoryWidget.kt index 9cec78d4e..6326cdc54 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/HistoryWidget.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/HistoryWidget.kt @@ -45,7 +45,7 @@ class HistoryWidget( (widgetView.dataView as HistoryChart).apply { setFirstWeekday(firstWeekday) setColor(PaletteUtils.getColor(context, habit.color)) - setCheckmarks(habit.checkmarks.allValues) + updateState(habit.checkmarks.allValues, habit.activeDays.toArray()) } }