[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-ios] 15/32: TwoRowButtons
From: |
gnunet |
Subject: |
[taler-taler-ios] 15/32: TwoRowButtons |
Date: |
Mon, 16 Oct 2023 00:03:13 +0200 |
This is an automated email from the git hooks/post-receive script.
marc-stibane pushed a commit to branch master
in repository taler-ios.
commit 586eed9692448837f9a43b3531e0ce660f813469
Author: Marc Stibane <marc@taler.net>
AuthorDate: Fri Oct 13 16:22:49 2023 +0200
TwoRowButtons
---
TalerWallet.xcodeproj/project.pbxproj | 12 +++---
TalerWallet1/Views/Balances/BalanceRowView.swift | 16 +++++--
...BalanceRowButtons.swift => TwoRowButtons.swift} | 36 ++++++++--------
.../Views/Exchange/ExchangeSectionView.swift | 49 +++++++++++++++++-----
4 files changed, 74 insertions(+), 39 deletions(-)
diff --git a/TalerWallet.xcodeproj/project.pbxproj
b/TalerWallet.xcodeproj/project.pbxproj
index 9261418..d341f2b 100644
--- a/TalerWallet.xcodeproj/project.pbxproj
+++ b/TalerWallet.xcodeproj/project.pbxproj
@@ -70,7 +70,7 @@
4E3EAE4C2A990778009F1BE8 /* AmountView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095492989CBFE0043A8A1 /* AmountView.swift */;
};
4E3EAE4D2A990778009F1BE8 /* P2pAcceptDone.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E3B4BC22A42252300CC88B8 /* P2pAcceptDone.swift
*/; };
4E3EAE4E2A990778009F1BE8 /* AnyTransition+backslide.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4E363CBD2A23CB2100D7E98C /*
AnyTransition+backslide.swift */; };
- 4E3EAE4F2A990778009F1BE8 /* BalanceRowButtons.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB065432A4CD1A80039B91D /*
BalanceRowButtons.swift */; };
+ 4E3EAE4F2A990778009F1BE8 /* TwoRowButtons.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB065432A4CD1A80039B91D /* TwoRowButtons.swift
*/; };
4E3EAE502A990778009F1BE8 /* Model+Transactions.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB095322989CBFE0043A8A1 /*
Model+Transactions.swift */; };
4E3EAE512A990778009F1BE8 /* Controller+playSound.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4E578E912A481D8600F21F1C /*
Controller+playSound.swift */; };
4E3EAE522A990778009F1BE8 /* WalletEmptyView.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EB095392989CBFE0043A8A1 /*
WalletEmptyView.swift */; };
@@ -170,7 +170,7 @@
4EA1ABBE29A3833A008821EA /* PublicConstants.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EA1ABBD29A3833A008821EA /*
PublicConstants.swift */; };
4EA551252A2C923600FEC9A8 /* CurrencyInputView.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EA551242A2C923600FEC9A8 /*
CurrencyInputView.swift */; };
4EAD117629F672FA008EDD0B /* KeyboardResponder.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EAD117529F672FA008EDD0B /*
KeyboardResponder.swift */; };
- 4EB065442A4CD1A80039B91D /* BalanceRowButtons.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB065432A4CD1A80039B91D /*
BalanceRowButtons.swift */; };
+ 4EB065442A4CD1A80039B91D /* TwoRowButtons.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB065432A4CD1A80039B91D /* TwoRowButtons.swift
*/; };
4EB094D629896CD20043A8A1 /* TalerWalletTests.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB094D429896CD20043A8A1 /*
TalerWalletTests.swift */; };
4EB094D729896CD20043A8A1 /* WalletBackendTests.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB094D529896CD20043A8A1 /*
WalletBackendTests.swift */; };
4EB094DC29896D030043A8A1 /* TalerWalletUITestsLaunchTests.swift
in Sources */ = {isa = PBXBuildFile; fileRef = 4EB094D929896D030043A8A1 /*
TalerWalletUITestsLaunchTests.swift */; };
@@ -336,7 +336,7 @@
4EA1ABBD29A3833A008821EA /* PublicConstants.swift */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.swift; path =
PublicConstants.swift; sourceTree = "<group>"; };
4EA551242A2C923600FEC9A8 /* CurrencyInputView.swift */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.swift; path =
CurrencyInputView.swift; sourceTree = "<group>"; };
4EAD117529F672FA008EDD0B /* KeyboardResponder.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= KeyboardResponder.swift; sourceTree = "<group>"; };
- 4EB065432A4CD1A80039B91D /* BalanceRowButtons.swift */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.swift; path =
BalanceRowButtons.swift; sourceTree = "<group>"; };
+ 4EB065432A4CD1A80039B91D /* TwoRowButtons.swift */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.swift; path =
TwoRowButtons.swift; sourceTree = "<group>"; };
4EB094D429896CD20043A8A1 /* TalerWalletTests.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= TalerWalletTests.swift; sourceTree = "<group>"; };
4EB094D529896CD20043A8A1 /* WalletBackendTests.swift */ = {isa
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift;
path = WalletBackendTests.swift; sourceTree = "<group>"; };
4EB094D929896D030043A8A1 /* TalerWalletUITestsLaunchTests.swift
*/ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
sourcecode.swift; path = TalerWalletUITestsLaunchTests.swift; sourceTree =
"<group>"; };
@@ -683,7 +683,7 @@
4EB095372989CBFE0043A8A1 /*
BalancesListView.swift */,
4EB0953A2989CBFE0043A8A1 /*
BalancesSectionView.swift */,
4EB095362989CBFE0043A8A1 /*
BalanceRowView.swift */,
- 4EB065432A4CD1A80039B91D /*
BalanceRowButtons.swift */,
+ 4EB065432A4CD1A80039B91D /* TwoRowButtons.swift
*/,
4EB095382989CBFE0043A8A1 /*
PendingRowView.swift */,
4E87C8742A34B411001C6406 /*
UncompletedRowView.swift */,
);
@@ -1071,7 +1071,7 @@
4E3EAE4D2A990778009F1BE8 /* P2pAcceptDone.swift
in Sources */,
4E3EAE4E2A990778009F1BE8 /*
AnyTransition+backslide.swift in Sources */,
4EFA39602AA7946B00742548 /* ToSButtonView.swift
in Sources */,
- 4E3EAE4F2A990778009F1BE8 /*
BalanceRowButtons.swift in Sources */,
+ 4E3EAE4F2A990778009F1BE8 /* TwoRowButtons.swift
in Sources */,
4E3EAE502A990778009F1BE8 /*
Model+Transactions.swift in Sources */,
4E3EAE512A990778009F1BE8 /*
Controller+playSound.swift in Sources */,
4E3EAE522A990778009F1BE8 /*
WalletEmptyView.swift in Sources */,
@@ -1174,7 +1174,7 @@
4E3B4BC32A42252300CC88B8 /* P2pAcceptDone.swift
in Sources */,
4E363CBE2A23CB2100D7E98C /*
AnyTransition+backslide.swift in Sources */,
4EFA39612AA7946B00742548 /* ToSButtonView.swift
in Sources */,
- 4EB065442A4CD1A80039B91D /*
BalanceRowButtons.swift in Sources */,
+ 4EB065442A4CD1A80039B91D /* TwoRowButtons.swift
in Sources */,
4EB095592989CBFE0043A8A1 /*
Model+Transactions.swift in Sources */,
4E578E922A481D8600F21F1C /*
Controller+playSound.swift in Sources */,
4EB0955F2989CBFE0043A8A1 /*
WalletEmptyView.swift in Sources */,
diff --git a/TalerWallet1/Views/Balances/BalanceRowView.swift
b/TalerWallet1/Views/Balances/BalanceRowView.swift
index b2b0a31..bb919c2 100644
--- a/TalerWallet1/Views/Balances/BalanceRowView.swift
+++ b/TalerWallet1/Views/Balances/BalanceRowView.swift
@@ -36,6 +36,10 @@ struct BalanceRowView: View {
let recvAction: () -> Void
let rowAction: () -> Void
@Environment(\.sizeCategory) var sizeCategory
+ let sendTitle1 = String(localized: "Send", comment: "Top of button <Send
Money>")
+ let sendTitle2 = String(localized: "Money", comment: "Bottom of button
<Send Money>")
+ let requestTitle1 = String(localized: "Request", comment: "Top of button
<Request Payment>")
+ let requestTitle2 = String(localized: "Payment", comment: "Bottom of
button <Request Payment>")
func needVStack(_ amount: Amount) -> Bool {
// Sizes: 320 (SE), 375 (X, Xs, 12, 13 mini), 390 (12,13,14), 414
(Plus, Max), 428 (Pro Max)
@@ -61,19 +65,23 @@ struct BalanceRowView: View {
var body: some View {
Group {
+ let requestTitle = requestTitle1 + "\n" + requestTitle2
+ let sendTitle = sendTitle1 + "\n" + sendTitle2
if needVStack(amount) {
VStack (alignment: .trailing) {
BalanceButton(amount: amount, rowAction: rowAction)
HStack {
- BalanceRowButtons(amount: amount, narrow: false,
lineLimit: 5,
- sendAction: sendAction, recvAction:
recvAction)
}
+ TwoRowButtons(sendTitle: sendTitle, recvTitle:
requestTitle,
+ lineLimit: 5, sendDisabled: amount.isZero,
+ sendAction: sendAction, recvAction:
recvAction)
}
} else {
HStack {
- BalanceRowButtons(amount: amount, narrow: true, lineLimit:
5,
- sendAction: sendAction, recvAction:
recvAction)
BalanceButton(amount: amount, rowAction: rowAction)
+ TwoRowButtons(sendTitle: sendTitle, recvTitle:
requestTitle,
+ lineLimit: 5, sendDisabled: amount.isZero,
+ sendAction: sendAction, recvAction:
recvAction)
}
// .fixedSize(horizontal: true, vertical: true) // should
make all buttons equal height - but doesn't
}
diff --git a/TalerWallet1/Views/Balances/BalanceRowButtons.swift
b/TalerWallet1/Views/Balances/TwoRowButtons.swift
similarity index 55%
rename from TalerWallet1/Views/Balances/BalanceRowButtons.swift
rename to TalerWallet1/Views/Balances/TwoRowButtons.swift
index 6ac8a9b..3d5014e 100644
--- a/TalerWallet1/Views/Balances/BalanceRowButtons.swift
+++ b/TalerWallet1/Views/Balances/TwoRowButtons.swift
@@ -5,50 +5,50 @@
import SwiftUI
import taler_swift
-struct BalanceRowButtons: View {
- let amount: Amount
- let narrow: Bool
+struct TwoRowButtons: View {
+ let sendTitle: String
+ let recvTitle: String
let lineLimit: Int
+ let sendDisabled: Bool
let sendAction: () -> Void
let recvAction: () -> Void
@Environment(\.sizeCategory) var sizeCategory
var body: some View {
- let currency = amount.currencyStr
Group {
- Button("Request\nPayment", action: recvAction)
+ Button(sendTitle, action: sendAction)
.lineLimit(lineLimit)
- .disabled(false)
+ .disabled(sendDisabled)
.buttonStyle(TalerButtonStyle(type: .bordered,
dimmed: false,
- narrow: narrow,
aligned: .center))
- Button("Send\n\(currency)", action: sendAction)
+ Button(recvTitle, action: recvAction)
.lineLimit(lineLimit)
- .disabled(amount.isZero)
+ .disabled(false)
.buttonStyle(TalerButtonStyle(type: .bordered,
dimmed: false,
- narrow: narrow,
aligned: .center))
}
}
}
-struct BalanceRowButtons_Previews: PreviewProvider {
+struct TwoRowButtons_Previews: PreviewProvider {
static var previews: some View {
List {
VStack {
let amount = try! Amount(fromString: LONGCURRENCY + ":1234.56")
- BalanceRowButtons(amount: Amount(currency: "TestKUDOS", value:
1234),
- narrow: false, lineLimit: 0,
- sendAction: {}, recvAction: {})
+ TwoRowButtons(sendTitle: "Send\n" + LONGCURRENCY,
+ recvTitle: "Receive\n" + LONGCURRENCY,
+ lineLimit: 0, sendDisabled: true,
+ sendAction: {}, recvAction: {})
BalanceButton(amount: amount, rowAction: {})
}
HStack {
- let amount = try! Amount(fromString: "KUDOS" + ":1234.56")
- BalanceRowButtons(amount: amount,
- narrow: true, lineLimit: 2,
- sendAction: {}, recvAction: {})
+ let amount = try! Amount(fromString: DEMOCURRENCY + ":1234.56")
+ TwoRowButtons(sendTitle: "Send\n" + DEMOCURRENCY,
+ recvTitle: "Receive\n" + DEMOCURRENCY,
+ lineLimit: 2, sendDisabled: true,
+ sendAction: {}, recvAction: {})
BalanceButton(amount: amount, rowAction: {})
}
}
diff --git a/TalerWallet1/Views/Exchange/ExchangeSectionView.swift
b/TalerWallet1/Views/Exchange/ExchangeSectionView.swift
index a87ea0b..3e2f57b 100644
--- a/TalerWallet1/Views/Exchange/ExchangeSectionView.swift
+++ b/TalerWallet1/Views/Exchange/ExchangeSectionView.swift
@@ -12,6 +12,25 @@ struct ExchangeRowView: View {
@Binding var centsToTransfer: UInt64
@State private var buttonSelected: Int? = nil
+
+ func selectAndUpdate(_ button: Int) {
+ Task { // runs on MainActor
+ do {
+ buttonSelected = button // will trigger NavigationLink
+// try await model.updateExchange(scopeInfo: balance.scopeInfo)
+ } catch { // TODO: error handling - couldn't updateExchange
+ // symLog.log("error: \(error)")
+ }
+ }
+ }
+ let depositTitle = String(localized: "Deposit", comment: "Top of button
<Deposit (currency)>")
+ let withdrawTitle = String(localized: "Withdraw", comment: "Top of button
<Withdraw (currency)>")
+ func needVStack(_ currency: String) -> Bool {
+ // Sizes: 320 (SE), 375 (X, Xs, 12, 13 mini), 390 (12,13,14), 414
(Plus, Max), 428 (Pro Max)
+
+ return false
+ }
+
var body: some View {
let baseURL = exchange.exchangeBaseUrl
@@ -31,18 +50,26 @@ struct ExchangeRowView: View {
) { EmptyView() }.frame(width: 0).opacity(0)
}.listRowSeparator(.hidden)
- HStack { // buttons just set "buttonSelected" so the
NavigationLink will trigger
- Button("Deposit\n\(currency)") { buttonSelected = 1 }
- .multilineTextAlignment(.center)
- .buttonStyle(TalerButtonStyle(type: .bordered))
- .disabled(true) // TODO: after implementing Deposit check
available
+ let sendTitle = depositTitle + "\n" + currency // TODO:
amount.currencyStr
+ let recvTitle = withdrawTitle + "\n" + currency // TODO:
amount.currencyStr
+ if needVStack(currency) {
+ VStack {
+ TwoRowButtons(sendTitle: sendTitle,
+ recvTitle: recvTitle,
+ lineLimit: 5, sendDisabled: true, // TODO:
amount.isZero
+ sendAction: { selectAndUpdate(1) },
+ recvAction: { selectAndUpdate(2) })
+ }
+ } else {
+ HStack { // buttons just set "buttonSelected" so the
NavigationLink will trigger
+ TwoRowButtons(sendTitle: sendTitle,
+ recvTitle: recvTitle,
+ lineLimit: 5, sendDisabled: true, // TODO:
amount.isZero
+ sendAction: { selectAndUpdate(1) },
+ recvAction: { selectAndUpdate(2) })
- Button("Withdraw\n\(currency)") { buttonSelected = 2 }
- .multilineTextAlignment(.center)
- .buttonStyle(TalerButtonStyle(type: .bordered))
- }.listRowSeparator(.visible)
-// .listRowSeparatorTint(.red)
- .fixedSize(horizontal: false, vertical: true)
+ }
+ }
}
}
/// This view shows the currency name in an exchange section
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-ios] 19/32: AccessibilityNotification.Announcement, (continued)
- [taler-taler-ios] 19/32: AccessibilityNotification.Announcement, gnunet, 2023/10/15
- [taler-taler-ios] 01/32: products seem no longer mandatory, gnunet, 2023/10/15
- [taler-taler-ios] 18/32: updateExchange, gnunet, 2023/10/15
- [taler-taler-ios] 14/32: fix bars, gnunet, 2023/10/15
- [taler-taler-ios] 03/32: Debugging, gnunet, 2023/10/15
- [taler-taler-ios] 17/32: getCurrencySpecification, gnunet, 2023/10/15
- [taler-taler-ios] 02/32: Layout for QR-View and ThreeAmounts, gnunet, 2023/10/15
- [taler-taler-ios] 08/32: cleanup, gnunet, 2023/10/15
- [taler-taler-ios] 13/32: width of rendered string, gnunet, 2023/10/15
- [taler-taler-ios] 10/32: secret token, gnunet, 2023/10/15
- [taler-taler-ios] 15/32: TwoRowButtons,
gnunet <=
- [taler-taler-ios] 05/32: No spellout, gnunet, 2023/10/15
- [taler-taler-ios] 09/32: TabBar for Taler Wallet - GNU Taler stays on SideView, gnunet, 2023/10/15
- [taler-taler-ios] 16/32: Source of Truth for balances, gnunet, 2023/10/15
- [taler-taler-ios] 30/32: font, gnunet, 2023/10/15
- [taler-taler-ios] 27/32: SingleAxisGeometryReader, gnunet, 2023/10/15
- [taler-taler-ios] 06/32: More CallStack for Debugging, gnunet, 2023/10/15
- [taler-taler-ios] 07/32: AsyncSemaphore, gnunet, 2023/10/15
- [taler-taler-ios] 23/32: fix for broken scalable font (not finished), gnunet, 2023/10/15
- [taler-taler-ios] 11/32: bankAccessApiBaseUrl -> corebankApiBaseUrl, gnunet, 2023/10/15
- [taler-taler-ios] 12/32: AsyncSemaphore to serialize Getbalances, gnunet, 2023/10/15