diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt
index 8c6cfd9c..2a82aee7 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt
@@ -11,8 +11,10 @@ import androidx.core.view.isVisible
import androidx.core.widget.ContentLoadingProgressBar
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.row_history_session.view.*
+import kotlinx.android.synthetic.main.row_transaction.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.Session
+import net.pokeranalytics.android.model.realm.Transaction
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable
@@ -52,6 +54,7 @@ enum class RowViewType(private var layoutRes: Int) {
// Custom row
ROW_SESSION(R.layout.row_history_session),
+ ROW_TRANSACTION(R.layout.row_transaction),
ROW_BUTTON(R.layout.row_button),
ROW_FOLLOW_US(R.layout.row_follow_us),
STAT(R.layout.row_stats_title_value),
@@ -79,6 +82,9 @@ enum class RowViewType(private var layoutRes: Int) {
// Row Session
ROW_SESSION -> RowSessionViewHolder(layout)
+ // Row Transaction
+ ROW_TRANSACTION -> RowTransactionViewHolder(layout)
+
// Row Button
ROW_BUTTON -> RowButtonViewHolder(layout)
@@ -257,6 +263,19 @@ enum class RowViewType(private var layoutRes: Int) {
}
}
+ /**
+ * Display a transaction view
+ */
+ inner class RowTransactionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder {
+ override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) {
+ itemView.transactionRow.setData(row as Transaction)
+ val listener = View.OnClickListener {
+ adapter.delegate?.onRowSelected(position, row)
+ }
+ itemView.transactionRow.setOnClickListener(listener)
+ }
+ }
+
/**
* Display a separator
*/
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/TransactionRowView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/TransactionRowView.kt
new file mode 100644
index 00000000..ab45b09c
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/view/TransactionRowView.kt
@@ -0,0 +1,71 @@
+package net.pokeranalytics.android.ui.view
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.LayoutInflater
+import android.widget.FrameLayout
+import androidx.constraintlayout.widget.ConstraintLayout
+import kotlinx.android.synthetic.main.row_transaction_view.view.*
+import net.pokeranalytics.android.R
+import net.pokeranalytics.android.calculus.ComputedStat
+import net.pokeranalytics.android.calculus.Stat
+import net.pokeranalytics.android.model.realm.Transaction
+import net.pokeranalytics.android.util.extensions.getDayNumber
+import net.pokeranalytics.android.util.extensions.getShortDayName
+
+/**
+ * Display a transaction row
+ */
+class TransactionRowView : FrameLayout {
+
+ private lateinit var rowTransaction: ConstraintLayout
+
+ /**
+ * Constructors
+ */
+ constructor(context: Context) : super(context) {
+ init()
+ }
+
+ constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
+ init()
+ }
+
+ constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
+ init()
+ }
+
+ /**
+ * Init
+ */
+ private fun init() {
+ val layoutInflater = LayoutInflater.from(context)
+ rowTransaction = layoutInflater.inflate(R.layout.row_transaction_view, this, false) as ConstraintLayout
+ val layoutParams = FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT)
+ addView(rowTransaction, layoutParams)
+ }
+
+ /**
+ * Set the session data to the view
+ */
+ fun setData(transaction: Transaction) {
+
+ // Date
+ rowTransaction.transactionDateDay.text = transaction.date.getShortDayName()
+ rowTransaction.transactionDateNumber.text = transaction.date.getDayNumber()
+
+ // Title / Game type
+ var title = transaction.type?.name ?: "" + " " + transaction.comment
+ var subtitle = transaction.bankroll?.name
+
+ rowTransaction.transactionTitle.text = title
+ rowTransaction.transactionSubtitle.text = subtitle
+
+ // Amount
+ val formattedStat = ComputedStat(Stat.NETRESULT, transaction.amount).format(context)
+ rowTransaction.transactionAmount.setTextColor(formattedStat.getColor(context))
+ rowTransaction.transactionAmount.text = formattedStat.text
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/row_transaction.xml b/app/src/main/res/layout/row_transaction.xml
index 3da4fb88..da410bc5 100644
--- a/app/src/main/res/layout/row_transaction.xml
+++ b/app/src/main/res/layout/row_transaction.xml
@@ -4,8 +4,8 @@
android:layout_height="wrap_content"
android:orientation="vertical">
-
diff --git a/app/src/main/res/layout/row_transaction_view.xml b/app/src/main/res/layout/row_transaction_view.xml
new file mode 100644
index 00000000..3473977d
--- /dev/null
+++ b/app/src/main/res/layout/row_transaction_view.xml
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file