Refactor PokerAnalyticsTextView to DynamicValueTextView

feature/top10
Aurelien Hubert 7 years ago
parent aa07613554
commit 5c0dac7e62
  1. 60
      app/src/main/java/net/pokeranalytics/android/ui/view/DynamicValueTextView.kt
  2. 2
      app/src/main/res/layout/activity_home.xml
  3. 2
      app/src/main/res/layout/row_header_title_amount.xml
  4. 2
      app/src/main/res/layout/row_header_title_amount_big.xml
  5. 2
      app/src/main/res/layout/row_header_title_value.xml
  6. 2
      app/src/main/res/layout/row_session_view.xml
  7. 2
      app/src/main/res/values/attrs.xml

@ -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()
}
}
}

@ -25,7 +25,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/toolbar" /> -->
<net.pokeranalytics.android.ui.view.PokerAnalyticsViewPager
<net.pokeranalytics.android.ui.view.HomeViewPager
android:id="@+id/viewPager"
android:layout_width="0dp"
android:layout_height="0dp"

@ -24,7 +24,7 @@
app:layout_constraintTop_toTopOf="parent"
tools:text="Title" />
<net.pokeranalytics.android.ui.view.PokerAnalyticsTextView
<net.pokeranalytics.android.ui.view.DynamicValueTextView
android:id="@+id/rowHeaderTitleAmount.value"
style="@style/PokerAnalyticsTheme.TextView.RowValue"
android:layout_width="0dp"

@ -24,7 +24,7 @@
app:layout_constraintTop_toTopOf="parent"
tools:text="Title" />
<net.pokeranalytics.android.ui.view.PokerAnalyticsTextView
<net.pokeranalytics.android.ui.view.DynamicValueTextView
android:id="@+id/rowHeaderTitleAmount.value"
style="@style/PokerAnalyticsTheme.TextView.RowValue"
android:layout_width="0dp"

@ -22,7 +22,7 @@
app:layout_constraintTop_toTopOf="parent"
tools:text="Title" />
<net.pokeranalytics.android.ui.view.PokerAnalyticsTextView
<net.pokeranalytics.android.ui.view.DynamicValueTextView
android:id="@+id/rowHeaderTitleValue.value"
style="@style/PokerAnalyticsTheme.TextView.RowValue"
android:layout_width="0dp"

@ -151,7 +151,7 @@
app:layout_constraintEnd_toStartOf="@+id/nextArrow"
app:layout_constraintTop_toTopOf="@+id/sessionTitle">
<net.pokeranalytics.android.ui.view.PokerAnalyticsTextView
<net.pokeranalytics.android.ui.view.DynamicValueTextView
android:id="@+id/gameResult"
style="@style/PokerAnalyticsTheme.TextView.SessionRow.Result"
android:layout_width="wrap_content"

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="PokerAnalyticsTextView">
<declare-styleable name="DynamicValueTextView">
<attr name="isCurrency" format="boolean" />
<attr name="amount" format="float" />
</declare-styleable>

Loading…
Cancel
Save