From 0682c6b3d3f7cef22725f3db15916346fdc4529e Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Thu, 16 Apr 2020 13:37:45 -0300 Subject: [wallet] change main screen if there is only one currency If there is more than one currency, the screen shows a list of balances per currency like it used to. If there is only one currency, the main screen directly shows the list of transactions with the balance in the toolbar. --- .../src/main/java/net/taler/wallet/MainFragment.kt | 81 ++++------------------ 1 file changed, 14 insertions(+), 67 deletions(-) (limited to 'wallet/src/main/java/net/taler/wallet/MainFragment.kt') diff --git a/wallet/src/main/java/net/taler/wallet/MainFragment.kt b/wallet/src/main/java/net/taler/wallet/MainFragment.kt index e0e6f51..0bc6084 100644 --- a/wallet/src/main/java/net/taler/wallet/MainFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/MainFragment.kt @@ -17,41 +17,20 @@ package net.taler.wallet import android.os.Bundle -import android.transition.TransitionManager.beginDelayedTransition import android.view.LayoutInflater -import android.view.Menu -import android.view.MenuInflater -import android.view.MenuItem import android.view.View -import android.view.View.GONE -import android.view.View.VISIBLE import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.Observer -import androidx.navigation.fragment.findNavController -import androidx.recyclerview.widget.DividerItemDecoration -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.LinearLayoutManager.VERTICAL -import com.google.zxing.integration.android.IntentIntegrator -import com.google.zxing.integration.android.IntentIntegrator.QR_CODE import kotlinx.android.synthetic.main.fragment_main.* +import net.taler.wallet.balances.BalancesFragment +import net.taler.wallet.transactions.TransactionsFragment -interface BalanceClickListener { - fun onBalanceClick(currency: String) -} - -class MainFragment : Fragment(), BalanceClickListener { +class MainFragment : Fragment() { private val model: MainViewModel by activityViewModels() - private val balancesAdapter = BalanceAdapter(this) - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setHasOptionsMenu(true) - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -61,18 +40,12 @@ class MainFragment : Fragment(), BalanceClickListener { } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - mainList.apply { - layoutManager = LinearLayoutManager(context) - adapter = balancesAdapter - addItemDecoration(DividerItemDecoration(context, VERTICAL)) - } - model.balances.observe(viewLifecycleOwner, Observer { onBalancesChanged(it.values.toList()) }) mainFab.setOnClickListener { - onScanButtonClicked() + scanQrCode(requireActivity()) } } @@ -81,44 +54,18 @@ class MainFragment : Fragment(), BalanceClickListener { model.loadBalances() } - override fun onOptionsItemSelected(item: MenuItem): Boolean { - return when (item.itemId) { - else -> super.onOptionsItemSelected(item) - } - } - - override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { - inflater.inflate(R.menu.fragment_main, menu) - super.onCreateOptionsMenu(menu, inflater) - } - - private fun onScanButtonClicked() { - IntentIntegrator(activity).apply { - setPrompt("") - setBeepEnabled(true) - setOrientationLocked(false) - }.initiateScan(listOf(QR_CODE)) - } - private fun onBalancesChanged(balances: List) { - delayedTransition() - if (balances.isEmpty()) { - mainEmptyState.visibility = VISIBLE - mainList.visibility = GONE - } else { - balancesAdapter.setItems(balances) - mainEmptyState.visibility = GONE - mainList.visibility = VISIBLE + if (childFragmentManager.fragments.isEmpty()) { + val f = if (balances.size == 1) { + model.transactionManager.selectedCurrency = balances[0].available.currency + TransactionsFragment() + } else { + BalancesFragment() + } + childFragmentManager.beginTransaction() + .add(R.id.mainFragmentContainer, f) + .commitNow() } } - private fun delayedTransition() { - beginDelayedTransition(view as ViewGroup) - } - - override fun onBalanceClick(currency: String) { - model.transactionManager.selectedCurrency = currency - findNavController().navigate(R.id.nav_transactions) - } - } -- cgit v1.2.3