summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeAdapter.kt
diff options
context:
space:
mode:
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/exchanges/ExchangeAdapter.kt')
-rw-r--r--wallet/src/main/java/net/taler/wallet/exchanges/ExchangeAdapter.kt33
1 files changed, 30 insertions, 3 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeAdapter.kt b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeAdapter.kt
index f53ce46..189f444 100644
--- a/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeAdapter.kt
+++ b/wallet/src/main/java/net/taler/wallet/exchanges/ExchangeAdapter.kt
@@ -19,8 +19,11 @@ package net.taler.wallet.exchanges
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.ImageButton
import android.widget.TextView
+import androidx.appcompat.widget.PopupMenu
import androidx.recyclerview.widget.RecyclerView
+import androidx.recyclerview.widget.RecyclerView.Adapter
import net.taler.wallet.R
import net.taler.wallet.cleanExchange
import net.taler.wallet.exchanges.ExchangeAdapter.ExchangeItemViewHolder
@@ -29,9 +32,16 @@ data class ExchangeItem(
val exchangeBaseUrl: String,
val currency: String,
val paytoUris: List<String>
-)
+) {
+ val name: String get() = cleanExchange(exchangeBaseUrl)
+}
+
+interface ExchangeClickListener {
+ fun onManualWithdraw(item: ExchangeItem)
+}
-internal class ExchangeAdapter : RecyclerView.Adapter<ExchangeItemViewHolder>() {
+internal class ExchangeAdapter(private val listener: ExchangeClickListener) :
+ Adapter<ExchangeItemViewHolder>() {
private val items = ArrayList<ExchangeItem>()
@@ -57,9 +67,26 @@ internal class ExchangeAdapter : RecyclerView.Adapter<ExchangeItemViewHolder>()
private val context = v.context
private val urlView: TextView = v.findViewById(R.id.urlView)
private val currencyView: TextView = v.findViewById(R.id.currencyView)
+ private val overflowIcon: ImageButton = v.findViewById(R.id.overflowIcon)
+
fun bind(item: ExchangeItem) {
- urlView.text = cleanExchange(item.exchangeBaseUrl)
+ urlView.text = item.name
currencyView.text = context.getString(R.string.exchange_list_currency, item.currency)
+ overflowIcon.setOnClickListener { openMenu(overflowIcon, item) }
+ }
+
+ private fun openMenu(anchor: View, item: ExchangeItem) = PopupMenu(context, anchor).apply {
+ inflate(R.menu.exchange)
+ setOnMenuItemClickListener { menuItem ->
+ when (menuItem.itemId) {
+ R.id.action_manual_withdrawal -> {
+ listener.onManualWithdraw(item)
+ true
+ }
+ else -> false
+ }
+ }
+ show()
}
}