diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkButtonView/render_implicit_check.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkButtonView/render_implicit_check.png index 2f7529768..269a7c9b7 100644 Binary files a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkButtonView/render_implicit_check.png and b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkButtonView/render_implicit_check.png differ diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render.png index 39b3ebb2c..c0eb5e922 100644 Binary files a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render.png and b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render.png differ diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render_different_color.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render_different_color.png deleted file mode 100644 index b55300ece..000000000 Binary files a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render_different_color.png and /dev/null differ diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render_reversed.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render_reversed.png deleted file mode 100644 index 2965eb691..000000000 Binary files a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/CheckmarkPanelView/render_reversed.png and /dev/null differ diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render.png index c3f29a4f4..7120984a5 100644 Binary files a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render.png and b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render.png differ diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render_changed.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render_changed.png index c3f29a4f4..7120984a5 100644 Binary files a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render_changed.png and b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render_changed.png differ diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render_selected.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render_selected.png index dee63a2c3..28f95ae7a 100644 Binary files a/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render_selected.png and b/android/uhabits-android/src/androidTest/assets/views-v26/habits/list/HabitCardView/render_selected.png differ 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 d0f96d9c2..77977015b 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 @@ -85,6 +85,8 @@ public class HistoryChart extends ScrollableChart private int reverseTextColor; + private int backgroundColor; + private boolean isEditable; private String previousMonth; @@ -383,7 +385,7 @@ public class HistoryChart extends ScrollableChart pSquareBg.setColor(colors[0]); pSquareFg.setColor(textColors[1]); } - else if(checkmark < target) + else if ((isNumerical && checkmark < target) || checkmark != CHECKED_EXPLICITLY) { pSquareBg.setColor(colors[1]); pSquareFg.setColor(textColors[2]); @@ -400,7 +402,7 @@ public class HistoryChart extends ScrollableChart if (!isNumerical && checkmark == SKIPPED) { - pSquareBg.setColor(textColors[2]); + pSquareBg.setColor(backgroundColor); pSquareBg.setStrokeWidth(columnWidth * 0.025f); canvas.save(); @@ -457,6 +459,8 @@ public class HistoryChart extends ScrollableChart int green = Color.green(primaryColor); int blue = Color.blue(primaryColor); + backgroundColor = res.getColor(R.attr.cardBgColor); + if (isBackgroundTransparent) { colors = new int[3]; diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.kt index aebdae734..beed73c18 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/views/CheckmarkButtonView.kt @@ -109,6 +109,7 @@ class CheckmarkButtonView( } val id = when (value) { SKIPPED -> R.string.fa_skipped + CHECKED_IMPLICITLY -> R.string.fa_skipped UNCHECKED -> R.string.fa_times else -> R.string.fa_check } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.java index c278a6635..bf88168f9 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.java @@ -116,8 +116,8 @@ public class CheckmarkWidgetView extends HabitWidgetView { if (isNumerical) return NumberButtonViewKt.toShortString(checkmarkValue / 1000.0); switch (checkmarkState) { case Checkmark.CHECKED_EXPLICITLY: - case Checkmark.CHECKED_IMPLICITLY: return getResources().getString(R.string.fa_check); + case Checkmark.CHECKED_IMPLICITLY: case Checkmark.SKIPPED: return getResources().getString(R.string.fa_skipped); case Checkmark.UNCHECKED: diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/CheckmarkList.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/CheckmarkList.java index 7de1b8e67..68d38a732 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/CheckmarkList.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/CheckmarkList.java @@ -100,14 +100,19 @@ public abstract class CheckmarkList static ArrayList buildIntervals(@NonNull Frequency freq, @NonNull Repetition[] reps) { + ArrayList filteredReps = new ArrayList<>(); + for (Repetition r : reps) + if (r.getValue() == CHECKED_EXPLICITLY) + filteredReps.add(r); + int num = freq.getNumerator(); int den = freq.getDenominator(); ArrayList intervals = new ArrayList<>(); - for (int i = 0; i < reps.length - num + 1; i++) + for (int i = 0; i < filteredReps.size() - num + 1; i++) { - Repetition first = reps[i]; - Repetition last = reps[i + num - 1]; + Repetition first = filteredReps.get(i); + Repetition last = filteredReps.get(i + num - 1); long distance = first.getTimestamp().daysUntil(last.getTimestamp()); if (distance >= den) continue; diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/CheckmarkListTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/CheckmarkListTest.java index 3bdcd51e6..2cd324547 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/CheckmarkListTest.java +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/CheckmarkListTest.java @@ -176,6 +176,25 @@ public class CheckmarkListTest extends BaseUnitTest assertThat(actual, equalTo(expected)); } + + @Test + public void test_buildIntervals_4() throws Exception + { + Repetition[] reps = new Repetition[]{ + new Repetition(day(30), CHECKED_EXPLICITLY), + new Repetition(day(20), SKIPPED), + new Repetition(day(10), CHECKED_EXPLICITLY), + }; + + ArrayList expected = new ArrayList<>(); + expected.add(new CheckmarkList.Interval(day(30), day(30), day(28))); + expected.add(new CheckmarkList.Interval(day(10), day(10), day(8))); + + ArrayList actual; + actual = CheckmarkList.buildIntervals(new Frequency(1, 3), reps); + assertThat(actual, equalTo(expected)); + } + @Test public void test_getAllValues_moveBackwardsInTime() {