blob: 4643cb4df63d984056a2187d231aadf2c3b5be5f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
/*
* This file is part of GNU Taler
* (C) 2020 Taler Systems S.A.
*
* GNU Taler is free software; you can redistribute it and/or modify it under the
* terms of the GNU General Public License as published by the Free Software
* Foundation; either version 3, or (at your option) any later version.
*
* GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
* A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
*/
package net.taler.merchantpos.history
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageButton
import android.widget.TextView
import androidx.core.content.ContextCompat.getColor
import androidx.recyclerview.widget.RecyclerView
import androidx.recyclerview.widget.RecyclerView.Adapter
import net.taler.common.toRelativeTime
import net.taler.merchantlib.OrderHistoryEntry
import net.taler.merchantpos.R
import net.taler.merchantpos.history.HistoryItemAdapter.HistoryItemViewHolder
import java.util.ArrayList
internal class HistoryItemAdapter(private val listener: RefundClickListener) :
Adapter<HistoryItemViewHolder>() {
private val items = ArrayList<OrderHistoryEntry>()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HistoryItemViewHolder {
val v =
LayoutInflater.from(parent.context).inflate(R.layout.list_item_history, parent, false)
return HistoryItemViewHolder(v)
}
override fun getItemCount() = items.size
override fun onBindViewHolder(holder: HistoryItemViewHolder, position: Int) {
holder.bind(items[position])
}
fun setData(items: List<OrderHistoryEntry>) {
this.items.clear()
this.items.addAll(items)
this.notifyDataSetChanged()
}
internal inner class HistoryItemViewHolder(private val v: View) : RecyclerView.ViewHolder(v) {
private val orderSummaryView: TextView = v.findViewById(R.id.orderSummaryView)
private val orderAmountView: TextView = v.findViewById(R.id.orderAmountView)
private val orderTimeView: TextView = v.findViewById(R.id.orderTimeView)
private val orderIdView: TextView = v.findViewById(R.id.orderIdView)
private val refundButton: ImageButton = v.findViewById(R.id.refundButton)
private val orderIdColor = orderIdView.currentTextColor
fun bind(item: OrderHistoryEntry) {
orderSummaryView.text = item.summary
val amount = item.amount
orderAmountView.text = amount.toString()
orderTimeView.text = item.timestamp.ms.toRelativeTime(v.context)
if (item.paid) {
orderIdView.text = v.context.getString(R.string.history_ref_no, item.orderId)
orderIdView.setTextColor(orderIdColor)
} else {
orderIdView.text = v.context.getString(R.string.history_unpaid)
orderIdView.setTextColor(getColor(v.context, R.color.red))
}
if (item.refundable) {
refundButton.visibility = View.VISIBLE
refundButton.setOnClickListener { listener.onRefundClicked(item) }
} else {
refundButton.visibility = View.GONE
}
}
}
}
|