taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

commit e570b773014d76c1dd2b0d93376d2d3452d7f342
parent c18ac0cfd54382a1e5b1d3c0849628712159a0a3
Author: Iván Ávalos <avalos@disroot.org>
Date:   Mon, 13 May 2024 10:53:07 -0600

[wallet] DD53: transaction-list: replace horizontal scroll with flow

Diffstat:
Mwallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt | 6+++---
Awallet/src/main/res/layout/balance_actions.xml | 118+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mwallet/src/main/res/layout/fragment_transactions.xml | 134++++++++++++++++++-------------------------------------------------------------
3 files changed, 151 insertions(+), 107 deletions(-)

diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionsFragment.kt @@ -118,7 +118,7 @@ class TransactionsFragment : Fragment(), OnTransactionClickListener, ActionMode. if (balances.size == 1) ui.mainFab.visibility = INVISIBLE balances.find { it.scopeInfo == scopeInfo }?.let { balance -> - ui.amount.text = balance.available.toString(showSymbol = false) + ui.actionsBar.amount.text = balance.available.toString(showSymbol = false) transactionAdapter.setCurrencySpec(balance.available.spec) } } @@ -128,10 +128,10 @@ class TransactionsFragment : Fragment(), OnTransactionClickListener, ActionMode. transactionManager.transactions.observe(viewLifecycleOwner) { result -> onTransactionsResult(result) } - ui.sendButton.setOnClickListener { + ui.actionsBar.sendButton.setOnClickListener { findNavController().navigate(R.id.sendFunds) } - ui.receiveButton.setOnClickListener { + ui.actionsBar.receiveButton.setOnClickListener { findNavController().navigate(R.id.action_global_receiveFunds) } ui.mainFab.setOnClickListener { diff --git a/wallet/src/main/res/layout/balance_actions.xml b/wallet/src/main/res/layout/balance_actions.xml @@ -0,0 +1,117 @@ +<?xml version="1.0" encoding="utf-8"?><!-- + ~ This file is part of GNU Taler + ~ (C) 2024 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/> + --> + +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> + + <com.google.android.material.button.MaterialButton + android:id="@+id/sendButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="10dp" + android:layout_marginVertical="10dp" + android:paddingHorizontal="18dp" + android:text="@string/transactions_send_funds" + app:icon="@drawable/ic_funds_send" + tools:ignore="MissingConstraints" /> + + <com.google.android.material.button.MaterialButton + android:id="@+id/receiveButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginHorizontal="10dp" + android:layout_marginVertical="10dp" + android:paddingHorizontal="18dp" + android:text="@string/transactions_receive_funds" + app:icon="@drawable/ic_funds_receive" + tools:ignore="MissingConstraints" /> + + <androidx.constraintlayout.helper.widget.Flow + android:layout_width="0dp" + android:layout_height="wrap_content" + app:constraint_referenced_ids="sendButton,receiveButton" + android:paddingHorizontal="10dp" + app:flow_horizontalGap="10dp" + app:flow_horizontalBias="0" + app:flow_horizontalAlign="start" + app:flow_horizontalStyle="packed" + app:flow_wrapMode="chain" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@id/amountBarrier" + app:layout_constraintBottom_toBottomOf="@id/topBarrier"/> + + <androidx.constraintlayout.widget.Barrier + android:id="@+id/amountBarrier" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toTopOf="@id/divider" + app:barrierDirection="start"/> + + <LinearLayout + android:id="@+id/amountLayout" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + android:orientation="vertical" + android:gravity="end" + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toTopOf="@id/divider" + app:layout_constraintStart_toEndOf="@id/amountBarrier"> + + <TextView + android:id="@+id/balanceLabel" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:layout_marginEnd="16dp" + android:text="@string/transactions_balance" + android:textSize="14sp" /> + + <TextView + android:id="@+id/amount" + style="@style/TextAppearance.Material3.TitleLarge" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginEnd="16dp" + android:layout_marginBottom="8dp" + android:textStyle="bold" + tools:text="23.42" + tools:visibility="visible" /> + + </LinearLayout> + + <androidx.constraintlayout.widget.Barrier + android:id="@+id/topBarrier" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:barrierDirection="bottom" + app:constraint_referenced_ids="sendButton,receiveButton,amountLayout" /> + + <com.google.android.material.divider.MaterialDivider + android:id="@+id/divider" + android:layout_width="match_parent" + android:layout_height="1dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/topBarrier" /> + +</androidx.constraintlayout.widget.ConstraintLayout> +\ No newline at end of file diff --git a/wallet/src/main/res/layout/fragment_transactions.xml b/wallet/src/main/res/layout/fragment_transactions.xml @@ -20,114 +20,40 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - <HorizontalScrollView - android:id="@+id/buttonScroll" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:fadeScrollbars="false" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintEnd_toStartOf="@id/amountBarrier" - app:layout_constraintBottom_toTopOf="@id/divider"> + <androidx.core.widget.NestedScrollView + android:layout_width="match_parent" + android:layout_height="match_parent"> <LinearLayout - android:layout_width="wrap_content" + android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="horizontal"> - - <com.google.android.material.button.MaterialButton - android:id="@+id/sendButton" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_marginStart="10dp" - android:layout_marginVertical="10dp" - android:paddingHorizontal="18dp" - android:text="@string/transactions_send_funds" - app:icon="@drawable/ic_funds_send" /> - - <com.google.android.material.button.MaterialButton - android:id="@+id/receiveButton" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:layout_marginHorizontal="10dp" - android:layout_marginVertical="10dp" - android:paddingHorizontal="18dp" - android:text="@string/transactions_receive_funds" - app:icon="@drawable/ic_funds_receive" /> + android:orientation="vertical"> + + <FrameLayout + android:id="@+id/actionsFrame" + android:layout_height="wrap_content" + android:layout_width="match_parent"> + <include + android:id="@+id/actionsBar" + layout="@layout/balance_actions" + android:layout_height="wrap_content" + android:layout_width="match_parent"/> + </FrameLayout> + + <androidx.recyclerview.widget.RecyclerView + android:id="@+id/list" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:nestedScrollingEnabled="false" + android:scrollbars="vertical" + android:visibility="invisible" + app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" + tools:listitem="@layout/list_item_transaction" + tools:visibility="visible" /> </LinearLayout> - </HorizontalScrollView> - - <androidx.constraintlayout.widget.Barrier - android:id="@+id/amountBarrier" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintBottom_toTopOf="@id/divider" - app:barrierDirection="start"/> - - <LinearLayout - android:id="@+id/amountLayout" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:orientation="vertical" - android:gravity="end" - app:layout_constraintTop_toTopOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBottom_toTopOf="@id/divider" - app:layout_constraintStart_toEndOf="@id/amountBarrier"> - - <TextView - android:id="@+id/balanceLabel" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:layout_marginEnd="16dp" - android:text="@string/transactions_balance" - android:textSize="14sp" /> - <TextView - android:id="@+id/amount" - style="@style/TextAppearance.Material3.TitleLarge" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginEnd="16dp" - android:layout_marginBottom="8dp" - android:textStyle="bold" - tools:text="23.42" - tools:visibility="visible" /> - - </LinearLayout> - - <androidx.constraintlayout.widget.Barrier - android:id="@+id/topBarrier" - android:layout_width="match_parent" - android:layout_height="wrap_content" - app:barrierDirection="bottom" - app:constraint_referenced_ids="buttonScroll,amountLayout" /> - - <com.google.android.material.divider.MaterialDivider - android:id="@+id/divider" - android:layout_width="match_parent" - android:layout_height="1dp" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/topBarrier" /> - - <androidx.recyclerview.widget.RecyclerView - android:id="@+id/list" - android:layout_width="match_parent" - android:layout_height="0dp" - android:scrollbars="vertical" - android:visibility="invisible" - app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/divider" - tools:listitem="@layout/list_item_transaction" - tools:visibility="visible" /> + </androidx.core.widget.NestedScrollView> <TextView android:id="@+id/emptyState" @@ -142,7 +68,7 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/divider" + app:layout_constraintTop_toTopOf="parent" tools:visibility="visible" /> <ProgressBar @@ -155,7 +81,7 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/divider" + app:layout_constraintTop_toTopOf="parent" tools:visibility="visible" /> <com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton