mirror of
https://github.com/iSoron/uhabits.git
synced 2025-12-06 09:08:52 -06:00
Changed Checkmark Widget Color on implicit check
As proposed in #615, the background is now solid color on implicit check but has a stroked checkmark instead of a full one.
This commit is contained in:
@@ -58,6 +58,7 @@ class RingView : View {
|
|||||||
private var em = 0f
|
private var em = 0f
|
||||||
private var text: String?
|
private var text: String?
|
||||||
private var textSize: Float
|
private var textSize: Float
|
||||||
|
private var isStrokedTextEnabled: Boolean = false
|
||||||
private var enableFontAwesome = false
|
private var enableFontAwesome = false
|
||||||
private var internalDrawingCache: Bitmap? = null
|
private var internalDrawingCache: Bitmap? = null
|
||||||
private var cacheCanvas: Canvas? = null
|
private var cacheCanvas: Canvas? = null
|
||||||
@@ -131,6 +132,10 @@ class RingView : View {
|
|||||||
invalidate()
|
invalidate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun setIsStrokedTextEnabled(isStroked: Boolean) {
|
||||||
|
this.isStrokedTextEnabled = isStroked
|
||||||
|
}
|
||||||
|
|
||||||
override fun onDraw(canvas: Canvas) {
|
override fun onDraw(canvas: Canvas) {
|
||||||
super.onDraw(canvas)
|
super.onDraw(canvas)
|
||||||
val activeCanvas: Canvas?
|
val activeCanvas: Canvas?
|
||||||
@@ -152,19 +157,25 @@ class RingView : View {
|
|||||||
pRing!!.xfermode = XFERMODE_CLEAR
|
pRing!!.xfermode = XFERMODE_CLEAR
|
||||||
} else {
|
} else {
|
||||||
pRing!!.color =
|
pRing!!.color =
|
||||||
backgroundColor!!
|
backgroundColor!!
|
||||||
}
|
}
|
||||||
rect!!.inset(thickness, thickness)
|
rect!!.inset(thickness, thickness)
|
||||||
activeCanvas.drawArc(rect!!, 0f, 360f, true, pRing!!)
|
activeCanvas.drawArc(rect!!, 0f, 360f, true, pRing!!)
|
||||||
pRing!!.xfermode = null
|
pRing!!.xfermode = null
|
||||||
pRing!!.color = color
|
pRing!!.color = color
|
||||||
pRing!!.textSize = textSize
|
pRing!!.textSize = textSize
|
||||||
|
|
||||||
|
if (isStrokedTextEnabled){
|
||||||
|
pRing!!.style = Paint.Style.STROKE
|
||||||
|
pRing!!.strokeWidth = textSize / 15f
|
||||||
|
}
|
||||||
|
|
||||||
if (enableFontAwesome) pRing!!.typeface = getFontAwesome(context)
|
if (enableFontAwesome) pRing!!.typeface = getFontAwesome(context)
|
||||||
activeCanvas.drawText(
|
activeCanvas.drawText(
|
||||||
text!!,
|
text!!,
|
||||||
rect!!.centerX(),
|
rect!!.centerX(),
|
||||||
rect!!.centerY() + 0.4f * em,
|
rect!!.centerY() + 0.4f * em,
|
||||||
pRing!!
|
pRing!!
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
if (activeCanvas !== canvas) canvas.drawBitmap(internalDrawingCache!!, 0f, 0f, null)
|
if (activeCanvas !== canvas) canvas.drawBitmap(internalDrawingCache!!, 0f, 0f, null)
|
||||||
|
|||||||
@@ -68,13 +68,13 @@ class CheckmarkWidgetView : HabitWidgetView {
|
|||||||
val fgColor: Int
|
val fgColor: Int
|
||||||
setShadowAlpha(0x4f)
|
setShadowAlpha(0x4f)
|
||||||
when (entryState) {
|
when (entryState) {
|
||||||
YES_MANUAL, SKIP -> {
|
YES_MANUAL, SKIP, YES_AUTO -> {
|
||||||
bgColor = activeColor
|
bgColor = activeColor
|
||||||
fgColor = res.getColor(R.attr.contrast0)
|
fgColor = res.getColor(R.attr.contrast0)
|
||||||
backgroundPaint!!.color = bgColor
|
backgroundPaint!!.color = bgColor
|
||||||
frame!!.setBackgroundDrawable(background)
|
frame!!.setBackgroundDrawable(background)
|
||||||
}
|
}
|
||||||
YES_AUTO, NO, UNKNOWN -> {
|
NO, UNKNOWN -> {
|
||||||
bgColor = res.getColor(R.attr.cardBgColor)
|
bgColor = res.getColor(R.attr.cardBgColor)
|
||||||
fgColor = res.getColor(R.attr.contrast60)
|
fgColor = res.getColor(R.attr.contrast60)
|
||||||
}
|
}
|
||||||
@@ -87,12 +87,23 @@ class CheckmarkWidgetView : HabitWidgetView {
|
|||||||
ring.setColor(fgColor)
|
ring.setColor(fgColor)
|
||||||
ring.setBackgroundColor(bgColor)
|
ring.setBackgroundColor(bgColor)
|
||||||
ring.setText(text)
|
ring.setText(text)
|
||||||
|
ring.setIsStrokedTextEnabled(strokedTextEnabled)
|
||||||
label.text = name
|
label.text = name
|
||||||
label.setTextColor(fgColor)
|
label.setTextColor(fgColor)
|
||||||
requestLayout()
|
requestLayout()
|
||||||
postInvalidate()
|
postInvalidate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val strokedTextEnabled: Boolean
|
||||||
|
get() = if (isNumerical) {
|
||||||
|
false
|
||||||
|
} else {
|
||||||
|
when (entryState) {
|
||||||
|
YES_AUTO -> true
|
||||||
|
else -> false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private val text: String
|
private val text: String
|
||||||
get() = if (isNumerical) {
|
get() = if (isNumerical) {
|
||||||
(max(0, entryValue) / 1000.0).toShortString()
|
(max(0, entryValue) / 1000.0).toShortString()
|
||||||
@@ -135,14 +146,14 @@ class CheckmarkWidgetView : HabitWidgetView {
|
|||||||
}
|
}
|
||||||
ring.setThickness(0.03f * width)
|
ring.setThickness(0.03f * width)
|
||||||
super.onMeasure(
|
super.onMeasure(
|
||||||
MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
|
MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
|
||||||
MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
|
MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun init() {
|
private fun init() {
|
||||||
val appComponent: HabitsApplicationComponent =
|
val appComponent: HabitsApplicationComponent =
|
||||||
(context.applicationContext as HabitsApplication).component
|
(context.applicationContext as HabitsApplication).component
|
||||||
preferences = appComponent.preferences
|
preferences = appComponent.preferences
|
||||||
ring = findViewById<View>(R.id.scoreRing) as RingView
|
ring = findViewById<View>(R.id.scoreRing) as RingView
|
||||||
label = findViewById<View>(R.id.label) as TextView
|
label = findViewById<View>(R.id.label) as TextView
|
||||||
|
|||||||
Reference in New Issue
Block a user