From 5c0dac7e623070c8184dd4539c3ed4687981b409 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 28 Feb 2019 16:18:30 +0100 Subject: [PATCH] Refactor PokerAnalyticsTextView to DynamicValueTextView --- .../android/ui/view/DynamicValueTextView.kt | 60 +++++++++++++++++++ app/src/main/res/layout/activity_home.xml | 2 +- .../res/layout/row_header_title_amount.xml | 2 +- .../layout/row_header_title_amount_big.xml | 2 +- .../res/layout/row_header_title_value.xml | 2 +- app/src/main/res/layout/row_session_view.xml | 2 +- app/src/main/res/values/attrs.xml | 2 +- 7 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/view/DynamicValueTextView.kt diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/DynamicValueTextView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/DynamicValueTextView.kt new file mode 100644 index 00000000..0e5e3d58 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/DynamicValueTextView.kt @@ -0,0 +1,60 @@ +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 + +/** + * Extended TextView to display amount in the right color / currency + * Work in progress + */ +class DynamicValueTextView: 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.DynamicValueTextView, 0, 0).apply { + try { + isCurrency = getBoolean(R.styleable.DynamicValueTextView_isCurrency, false) + amount = getFloat(R.styleable.DynamicValueTextView_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 diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml index 670ad70c..09f1bbc4 100644 --- a/app/src/main/res/layout/activity_home.xml +++ b/app/src/main/res/layout/activity_home.xml @@ -25,7 +25,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/toolbar" /> --> - - - - - - +