implement dialog with list of all payment methods (fixes #26)

This commit is contained in:
johan12345
2020-06-21 20:03:50 +02:00
parent 95dd8cce52
commit 8eacee8a71
2 changed files with 22 additions and 2 deletions

View File

@@ -174,7 +174,8 @@ fun buildDetails(
R.plurals.charge_cards_compatible_num,
loc.chargecards.size, loc.chargecards.size
),
formatChargeCards(loc.chargecards, chargeCards, ctx)
formatChargeCards(loc.chargecards, chargeCards, ctx),
clickable = true
) else null,
DetailAdapter.Detail(
R.drawable.ic_location,

View File

@@ -14,6 +14,7 @@ import android.view.*
import android.view.inputmethod.InputMethodManager
import android.widget.TextView
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.PopupMenu
import androidx.core.app.SharedElementCallback
import androidx.core.content.ContextCompat
@@ -472,7 +473,7 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac
binding.detailView.details.apply {
adapter = DetailAdapter().apply {
onClickListener = {
val charger = vm.chargerSparse.value
val charger = vm.chargerDetails.value?.data
if (charger != null) {
when (it.icon) {
R.drawable.ic_location -> {
@@ -481,6 +482,9 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac
R.drawable.ic_fault_report -> {
(activity as? MapsActivity)?.openUrl("https:${charger.url}")
}
R.drawable.ic_payment -> {
showPaymentMethodsDialog(charger)
}
}
}
}
@@ -497,6 +501,21 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac
}
}
private fun showPaymentMethodsDialog(charger: ChargeLocation) {
val activity = activity ?: return
val chargecardData = vm.chargeCardMap.value ?: return
val chargecards = charger.chargecards ?: return
val data = chargecards.map { chargecardData[it.id] }.sortedBy { it?.name }
val names = data.map { it?.name ?: "" }
AlertDialog.Builder(activity)
.setTitle(R.string.charge_cards)
.setItems(names.toTypedArray()) { _, i ->
val card = data[i] ?: return@setItems
(activity as? MapsActivity)?.openUrl("https:${card.url}")
}.show()
}
override fun onMapReady(map: GoogleMap) {
this.map = map
map.uiSettings.isTiltGesturesEnabled = false