diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/RingView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/RingView.kt
index 870097800..afffc2b05 100644
--- a/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/RingView.kt
+++ b/uhabits-android/src/main/java/org/isoron/uhabits/activities/common/views/RingView.kt
@@ -215,4 +215,16 @@ class RingView : View {
companion object {
val XFERMODE_CLEAR = PorterDuffXfermode(PorterDuff.Mode.CLEAR)
}
+
+ fun hide() {
+ this.visibility = GONE
+ }
+
+ fun show() {
+ this.visibility = VISIBLE
+ }
+
+ fun makeInvisible(){
+ this.visibility = INVISIBLE
+ }
}
diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.kt b/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.kt
index 6515542b0..ebb06a95c 100644
--- a/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.kt
+++ b/uhabits-android/src/main/java/org/isoron/uhabits/widgets/views/CheckmarkWidgetView.kt
@@ -23,6 +23,10 @@ import android.util.AttributeSet
import android.util.TypedValue
import android.view.View
import android.widget.TextView
+import androidx.core.graphics.ColorUtils.blendARGB
+import com.google.android.material.color.utilities.MathUtils.lerp
+import org.isoron.platform.gui.Color
+import org.isoron.platform.gui.toInt
import org.isoron.uhabits.HabitsApplication
import org.isoron.uhabits.R
import org.isoron.uhabits.activities.common.views.RingView
@@ -67,21 +71,26 @@ class CheckmarkWidgetView : HabitWidgetView {
val bgColor: Int
val fgColor: Int
setShadowAlpha(0x4f)
- when (entryState) {
- YES_MANUAL, SKIP -> {
- bgColor = activeColor
- fgColor = res.getColor(R.attr.contrast0)
- backgroundPaint!!.color = bgColor
- frame!!.setBackgroundDrawable(background)
- }
- YES_AUTO, NO, UNKNOWN -> {
- bgColor = res.getColor(R.attr.cardBgColor)
- fgColor = res.getColor(R.attr.contrast60)
- }
- else -> {
- bgColor = res.getColor(R.attr.cardBgColor)
- fgColor = res.getColor(R.attr.contrast60)
- }
+
+ if(entryState == YES_MANUAL || entryState == SKIP) {
+ bgColor = activeColor
+ fgColor = res.getColor(R.attr.contrast0)
+ backgroundPaint!!.color = bgColor
+ frame!!.setBackgroundDrawable(background)
+ } else if(preferences!!.widgetCheckmarkTinting && entryState == YES_AUTO) {
+ bgColor = blendARGB(activeColor, res.getColor(R.attr.cardBgColor), 0.5f)
+ fgColor = res.getColor(R.attr.contrast0)
+ backgroundPaint!!.color = bgColor
+ frame!!.setBackgroundDrawable(background)
+ } else {
+ bgColor = res.getColor(R.attr.cardBgColor)
+ fgColor = res.getColor(R.attr.contrast60)
+ }
+
+ if(preferences!!.widgetCheckmarkHideRing) {
+ ring.hide()
+ } else {
+ ring.show()
}
ring.setPercentage(percentage)
ring.setColor(fgColor)
diff --git a/uhabits-android/src/main/res/values/strings.xml b/uhabits-android/src/main/res/values/strings.xml
index 9fec1cbca..ef130bc53 100644
--- a/uhabits-android/src/main/res/values/strings.xml
+++ b/uhabits-android/src/main/res/values/strings.xml
@@ -233,4 +233,8 @@
No app was found to support this action
Extend day a few hours past midnight
Wait until 3:00 AM to show a new day. Useful if you typically go to sleep after midnight. Requires app restart.
+ Checkmark widget tinting
+ Tints the checkmark widget on days where a habit is paused or auto-filled.
+ Hides the ring display within the checkmark widget.
+ Hide ring in checkmark widget
diff --git a/uhabits-android/src/main/res/xml/preferences.xml b/uhabits-android/src/main/res/xml/preferences.xml
index ad381b502..f3937ed12 100644
--- a/uhabits-android/src/main/res/xml/preferences.xml
+++ b/uhabits-android/src/main/res/xml/preferences.xml
@@ -76,6 +76,24 @@
android:title="@string/widget_opacity_title"
app:iconSpaceReserved="false" />
+
+