From 9e5e9ca0bc2cfba73058d940b27287338c2f93ad Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 26 Feb 2019 12:20:23 +0100 Subject: [PATCH] Add custom PokerAnalytics TextView to manage money --- .../android/ui/view/PokerAnalyticsTextView.kt | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/view/PokerAnalyticsTextView.kt diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/PokerAnalyticsTextView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/PokerAnalyticsTextView.kt new file mode 100644 index 00000000..5f187ecc --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/PokerAnalyticsTextView.kt @@ -0,0 +1,56 @@ +package net.pokeranalytics.android.ui.view + +import android.content.Context +import android.util.AttributeSet +import androidx.appcompat.widget.AppCompatTextView +import androidx.core.content.ContextCompat +import net.pokeranalytics.android.R +import net.pokeranalytics.android.util.toCurrency + +class PokerAnalyticsTextView: AppCompatTextView { + + var isCurrency: Boolean = false + var amount: Double = 0.0 + set(value) { + field = value + updateUI() + } + + constructor(context: Context?) : super(context) { + init(null) + } + + constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) { + init(attrs) + } + + constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { + init(attrs) + } + + /** + * Init class + */ + private fun init(attrs: AttributeSet?) { + context.theme.obtainStyledAttributes( attrs, R.styleable.PokerAnalyticsTextView, 0, 0).apply { + try { + isCurrency = getBoolean(R.styleable.PokerAnalyticsTextView_isCurrency, false) + amount = getFloat(R.styleable.PokerAnalyticsTextView_amount, 0f).toDouble() + updateUI() + } finally { + recycle() + } + } + } + + /** + * Update the UI to manage currency format & color management + */ + private fun updateUI() { + if (isCurrency) { + setTextColor(ContextCompat.getColor(context, if (amount >= 0) R.color.green else R.color.red)) + text = amount.toCurrency() + } + } + +} \ No newline at end of file