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 8da73c4cc..64284e498 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 @@ -369,8 +369,6 @@ public class HistoryChart extends ScrollableChart GregorianCalendar date, int checkmarkOffset) { - boolean drawCross = false; - boolean drawDash = false; if (checkmarkOffset >= checkmarks.length) pSquareBg.setColor(colors[0]); else { @@ -381,13 +379,6 @@ public class HistoryChart extends ScrollableChart pSquareBg.setColor(isNumerical ? textColor : colors[1]); } else pSquareBg.setColor(colors[2]); - - if (!isNumerical) - { - if (checkmark == FAILED_EXPLICITLY_UNNECESSARY || - checkmark == FAILED_EXPLICITLY_NECESSARY) drawCross = true; - if (checkmark == SKIPPED_EXPLICITLY) drawDash = true; - } } pSquareFg.setColor(reverseTextColor); @@ -396,28 +387,6 @@ public class HistoryChart extends ScrollableChart String text = Integer.toString(date.get(Calendar.DAY_OF_MONTH)); canvas.drawText(text, location.centerX(), location.centerY() + squareTextOffset, pSquareFg); - if (drawCross) - { - for (int thickness = -1; thickness < 2; thickness ++) - { - canvas.drawLine( - location.left + thickness, location.bottom, - location.right - thickness, location.top, pSquareFg); - canvas.drawLine( - location.right - thickness, location.bottom, - location.left + thickness, location.top, pSquareFg); - } - } - if (drawDash) - { - for (int thickness = -1; thickness < 2; thickness ++) - { - canvas.drawLine( - location.left, location.centerY() + thickness + squareTextOffset / 2, - location.right,location.centerY() + thickness + squareTextOffset / 2, - pSquareFg); - } - } } private float getWeekdayLabelWidth() @@ -449,16 +418,13 @@ public class HistoryChart extends ScrollableChart if (isBackgroundTransparent) primaryColor = ColorUtils.setMinValue(primaryColor, 0.75f); - - int red = Color.red(primaryColor); - int green = Color.green(primaryColor); - int blue = Color.blue(primaryColor); + int lighterPrimaryColor = ColorUtils.setAlpha(primaryColor, 0.5f); if (isBackgroundTransparent) { colors = new int[3]; colors[0] = Color.argb(16, 255, 255, 255); - colors[1] = Color.argb(128, red, green, blue); + colors[1] = lighterPrimaryColor; colors[2] = primaryColor; textColor = Color.WHITE; reverseTextColor = Color.WHITE; @@ -467,7 +433,7 @@ public class HistoryChart extends ScrollableChart { colors = new int[3]; colors[0] = res.getColor(R.attr.lowContrastTextColor); - colors[1] = Color.argb(127, red, green, blue); + colors[1] = lighterPrimaryColor; colors[2] = primaryColor; textColor = res.getColor(R.attr.mediumContrastTextColor); reverseTextColor = 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 387128697..01bd44d65 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 @@ -26,6 +26,7 @@ import android.view.* import android.view.View.MeasureSpec.* import com.google.auto.factory.* import org.isoron.androidbase.activities.* +import org.isoron.androidbase.utils.ColorUtils import org.isoron.uhabits.* import org.isoron.uhabits.core.models.Checkmark.* import org.isoron.uhabits.core.preferences.* @@ -105,9 +106,6 @@ class CheckmarkButtonView( private inner class Drawer { private val rect = RectF() private val lowContrastColor = sres.getColor(R.attr.lowContrastTextColor) - private val mediumContrastTextColor = sres.getColor(R.attr.mediumContrastTextColor) - - private val paint = TextPaint().apply { typeface = getFontAwesome() @@ -117,18 +115,25 @@ class CheckmarkButtonView( } fun draw(canvas: Canvas) { + val lighterColor = ColorUtils.setAlpha(color, 0.5f) + paint.color = when (value) { CHECKED_EXPLICITLY -> color - FAILED_EXPLICITLY_UNNECESSARY -> mediumContrastTextColor - SKIPPED_EXPLICITLY -> mediumContrastTextColor - FAILED_EXPLICITLY_NECESSARY -> mediumContrastTextColor - else -> lowContrastColor + FAILED_EXPLICITLY_NECESSARY -> lowContrastColor + UNCHECKED -> lowContrastColor + else -> lighterColor + } + var unchecked_symbol = R.string.fa_times + var implicitCheckedSymbol = R.string.fa_check + if (preferences.isAdvancedCheckmarksEnabled) { + unchecked_symbol = R.string.fa_question + implicitCheckedSymbol = R.string.fa_question } val id = when (value) { SKIPPED_EXPLICITLY -> R.string.fa_skipped - UNCHECKED -> R.string.fa_times + UNCHECKED -> unchecked_symbol FAILED_EXPLICITLY_NECESSARY -> R.string.fa_times - FAILED_EXPLICITLY_UNNECESSARY -> R.string.fa_check + CHECKED_IMPLICITLY -> implicitCheckedSymbol else -> R.string.fa_check } val label = resources.getString(id) @@ -140,3 +145,4 @@ class CheckmarkButtonView( } } } + 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 f637c2b37..2659a2373 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 @@ -20,6 +20,7 @@ package org.isoron.uhabits.widgets.views; import android.content.*; +import android.graphics.Color; import android.util.*; import android.widget.*; @@ -73,24 +74,27 @@ public class CheckmarkWidgetView extends HabitWidgetView { int bgColor; int fgColor; + int lighterActiveColor = ColorUtils.setAlpha(activeColor, 0.5f); switch (checkmarkState) { case Checkmark.CHECKED_EXPLICITLY: bgColor = activeColor; fgColor = res.getColor(R.attr.highContrastReverseTextColor); setShadowAlpha(0x4f); - backgroundPaint.setColor(bgColor); frame.setBackgroundDrawable(background); break; case Checkmark.FAILED_EXPLICITLY_NECESSARY: - case Checkmark.FAILED_EXPLICITLY_UNNECESSARY: - case Checkmark.SKIPPED_EXPLICITLY: bgColor = res.getColor(R.attr.highlightedBackgroundColor); - fgColor = res.getColor(R.attr.mediumContrastTextColor); + fgColor = res.getColor(R.attr.highContrastReverseTextColor); setShadowAlpha(0x4f); break; - + case Checkmark.SKIPPED_EXPLICITLY: case Checkmark.CHECKED_IMPLICITLY: + case Checkmark.FAILED_EXPLICITLY_UNNECESSARY: + bgColor = lighterActiveColor; + fgColor = res.getColor(R.attr.highContrastReverseTextColor); + setShadowAlpha(0x4f); + break; case Checkmark.UNCHECKED: default: bgColor = res.getColor(R.attr.cardBgColor); @@ -99,6 +103,7 @@ public class CheckmarkWidgetView extends HabitWidgetView { break; } + backgroundPaint.setColor(bgColor); ring.setPercentage(percentage); ring.setColor(fgColor); ring.setBackgroundColor(bgColor); @@ -118,18 +123,29 @@ public class CheckmarkWidgetView extends HabitWidgetView { protected String getText() { + HabitsApplication app = + (HabitsApplication) getContext().getApplicationContext(); + int uncheckedSymbol = R.string.fa_times; + int implicitCheckedSymbol = R.string.fa_check; + if (app.getComponent().getPreferences().isAdvancedCheckmarksEnabled()) + { + uncheckedSymbol = R.string.fa_question; + implicitCheckedSymbol = R.string.fa_question; + } if (isNumerical) return NumberButtonViewKt.toShortString(checkmarkValue / 1000.0); switch (checkmarkState) { case Checkmark.CHECKED_EXPLICITLY: - case Checkmark.CHECKED_IMPLICITLY: case Checkmark.FAILED_EXPLICITLY_UNNECESSARY: return getResources().getString(R.string.fa_check); + case Checkmark.CHECKED_IMPLICITLY: + return getResources().getString(implicitCheckedSymbol); case Checkmark.SKIPPED_EXPLICITLY: return getResources().getString(R.string.fa_skipped); - case Checkmark.UNCHECKED: case Checkmark.FAILED_EXPLICITLY_NECESSARY: - default: return getResources().getString(R.string.fa_times); + case Checkmark.UNCHECKED: + default: + return getResources().getString(uncheckedSymbol); } } diff --git a/android/uhabits-android/src/main/res/values/fontawesome.xml b/android/uhabits-android/src/main/res/values/fontawesome.xml index 20ab55567..a52ea8872 100644 --- a/android/uhabits-android/src/main/res/values/fontawesome.xml +++ b/android/uhabits-android/src/main/res/values/fontawesome.xml @@ -21,9 +21,11 @@ - + + +