commit 3559d3680d5df0a1d76302c1b70436619473e457
parent fa60cb70ea24cfd58d4fd5ae87196d338d758338
Author: Marc Stibane <marc@taler.net>
Date: Sat, 4 Nov 2023 07:44:59 +0100
Accessibility
Diffstat:
6 files changed, 56 insertions(+), 44 deletions(-)
diff --git a/TalerWallet1/Views/Balances/BalanceRowView.swift b/TalerWallet1/Views/Balances/BalanceRowView.swift
@@ -33,8 +33,9 @@ struct BalanceButton: View {
}
} .disabled(false)
.buttonStyle(TalerButtonStyle(type: iconOnly ? .plain : .balance, aligned: .trailing))
- .accessibilityElement(children: /*@START_MENU_TOKEN@*/.ignore/*@END_MENU_TOKEN@*/)
- .accessibilityLabel(balanceTitleStr + " " + amountStr) // TODO: CurrencyFormatter!
+ .accessibilityElement(children: .combine)
+ .accessibilityHint("will go to main transactions list")
+// .accessibilityLabel(balanceTitleStr + " " + amountStr) // TODO: CurrencyFormatter!
}
}
diff --git a/TalerWallet1/Views/Exchange/ExchangeSectionView.swift b/TalerWallet1/Views/Exchange/ExchangeSectionView.swift
@@ -28,7 +28,6 @@ struct ExchangeSectionView: View {
currency: currency, // TODO: (balance.available) amount.isZero to disable Deposit-button
centsToTransfer: $centsToTransfer)
}
- .accessibilityElement(children: .combine)
} header: {
BarGraphHeader(stack: stack.push(), currency: currency)
}
diff --git a/TalerWallet1/Views/HelperViews/SelectDays.swift b/TalerWallet1/Views/HelperViews/SelectDays.swift
@@ -34,40 +34,54 @@ struct SelectDays: View {
}
var body: some View {
- HStack {
- Button(action: oneDayAction) {
- if developerMode {
- Text(verbatim: "3 Min.")
- } else {
- Text("\(ONEDAY) Day", comment: "1 Day, might get plural (e.g. 2..3 Days), 4 letters max., abbreviate if longer") // TODO: Plural
- }
- }.buttonStyle(TalerButtonStyle(type: (selected == ONEDAY) ? .prominent : .bordered, dimmed: true))
- .disabled(!isEnabled)
+ let selectedStr = String(localized: "selected", comment: "VoiceOver hint which button is selected")
+ let emptyStr = ""
- Button(action: sevenDayAction) {
- if developerMode {
- Text(verbatim: "1 Hour")
- } else {
- Text("\(SEVENDAYS) Days", comment: "7 Days, always plural (3..9), 4 letters max., abbreviate if longer")
- }
- }.buttonStyle(TalerButtonStyle(type: (selected == SEVENDAYS) ? .prominent : .bordered, dimmed: true))
- .disabled(!isEnabled || maxExpiration < SEVENDAYS)
+ Section { // (alignment: .leading)
+ Text("Expires in:")
+ .accessibilityLabel("Choose the expiration duration")
+ .accessibilityAddTraits(.isHeader)
+ .accessibilityFont(.title3)
+ HStack {
+ Button(action: oneDayAction) {
+ if developerMode {
+ Text(verbatim: "3 Min.")
+ } else {
+ Text("\(ONEDAY) Day", comment: "1 Day, might get plural (e.g. 2..3 Days), 4 letters max., abbreviate if longer") // TODO: Plural
+ }
+ }.buttonStyle(TalerButtonStyle(type: (selected == ONEDAY) ? .prominent : .bordered, dimmed: true))
+ .accessibilityHint((selected == ONEDAY) ? selectedStr : emptyStr)
+ .disabled(!isEnabled)
- Button(action: thirtyDayAction) {
- if developerMode {
- Text(verbatim: "1 Day")
- } else {
- Text("\(THIRTYDAYS) Days", comment: "30 Days, always plural (10..30), 4 letters max., abbreviate if longer")
- }
- }.buttonStyle(TalerButtonStyle(type: (selected == THIRTYDAYS) ? .prominent : .bordered, dimmed: true))
- .disabled(!isEnabled || maxExpiration < THIRTYDAYS)
- } // 3 buttons
+ Button(action: sevenDayAction) {
+ if developerMode {
+ Text(verbatim: "1 Hour")
+ } else {
+ Text("\(SEVENDAYS) Days", comment: "7 Days, always plural (3..9), 4 letters max., abbreviate if longer")
+ }
+ }.buttonStyle(TalerButtonStyle(type: (selected == SEVENDAYS) ? .prominent : .bordered, dimmed: true))
+ .accessibilityHint((selected == SEVENDAYS) ? selectedStr : emptyStr)
+ .disabled(!isEnabled || maxExpiration < SEVENDAYS)
+
+ Button(action: thirtyDayAction) {
+ if developerMode {
+ Text(verbatim: "1 Day")
+ } else {
+ Text("\(THIRTYDAYS) Days", comment: "30 Days, always plural (10..30), 4 letters max., abbreviate if longer")
+ }
+ }.buttonStyle(TalerButtonStyle(type: (selected == THIRTYDAYS) ? .prominent : .bordered, dimmed: true))
+ .accessibilityHint((selected == THIRTYDAYS) ? selectedStr : emptyStr)
+ .disabled(!isEnabled || maxExpiration < THIRTYDAYS)
+ } // 3 buttons
+ }
}
}
-
-//struct SelectDays_Previews: PreviewProvider {
-// static var previews: some View {
-// @State var expireDays: UInt = 1
-// SelectDays(selected: $expireDays, maxExpiration: 20)
-// }
-//}
+// MARK: -
+#if DEBUG
+struct SelectDays_Previews: PreviewProvider {
+ static var previews: some View {
+ @State var expireDays: UInt = 1
+ SelectDays(selected: $expireDays, maxExpiration: 20)
+ }
+}
+#endif
diff --git a/TalerWallet1/Views/HelperViews/TextFieldAlert.swift b/TalerWallet1/Views/HelperViews/TextFieldAlert.swift
@@ -19,6 +19,7 @@ struct TextFieldAlert: ViewModifier {
VStack {
Text(title)
.accessibilityFont(.headline)
+ .accessibilityAddTraits(.isHeader)
.padding()
TextField(placeholder, text: $text).textFieldStyle(.roundedBorder).padding()
Divider()
diff --git a/TalerWallet1/Views/Peer2peer/PaymentPurpose.swift b/TalerWallet1/Views/Peer2peer/PaymentPurpose.swift
@@ -56,15 +56,12 @@ struct PaymentPurpose: View {
Text(verbatim: "\(summary.count)/100")
} // maximum 100 characters
- Text("Expires in:")
- .accessibilityFont(.title3)
-
SelectDays(selected: $expireDays, maxExpiration: THIRTYDAYS)
.disabled(false)
.padding(.bottom)
+ let emptyStr = ""
let disabled = (expireDays == 0) || (summary.count < 1)
-
NavigationLink(destination: LazyView {
SendDone(stack: stack.push(),
amountToSend: nil,
@@ -77,6 +74,7 @@ struct PaymentPurpose: View {
}
.buttonStyle(TalerButtonStyle(type: .prominent))
.disabled(disabled)
+ .accessibilityHint(disabled ? "enabled when subject and expiration are set" : emptyStr)
Spacer()
}
diff --git a/TalerWallet1/Views/Peer2peer/SendPurpose.swift b/TalerWallet1/Views/Peer2peer/SendPurpose.swift
@@ -73,16 +73,13 @@ struct SendPurpose: View {
.accessibilityFont(.body)
} // maximum 100 characters
- Text("Expires in:")
- .accessibilityFont(.title3)
-
// TODO: compute max Expiration day from peerPushCheck to disable 30 (and even 7)
SelectDays(selected: $expireDays, maxExpiration: THIRTYDAYS)
.disabled(false)
.padding(.bottom)
+ let emptyStr = ""
let disabled = (expireDays == 0) || (summary.count < 1) // TODO: check amountAvailable
-
NavigationLink(destination: LazyView {
SendDone(stack: stack.push(),
amountToSend: amount,
@@ -94,6 +91,8 @@ struct SendPurpose: View {
}
.buttonStyle(TalerButtonStyle(type: .prominent))
.disabled(disabled)
+ .accessibilityHint(disabled ? "enabled when subject and expiration are set" : emptyStr)
+
Spacer()
}