commit 8f3d5473891677535960c3328c166fe41ef17fe4
parent 8767f5abddd2f4eb7e8635c2907d71f1b1abc87f
Author: Marc Stibane <marc@taler.net>
Date: Thu, 26 Oct 2023 07:38:03 +0200
Accessibility: QR, Date
Diffstat:
6 files changed, 35 insertions(+), 8 deletions(-)
diff --git a/TalerWallet1/Helper/TalerDater.swift b/TalerWallet1/Helper/TalerDater.swift
@@ -54,21 +54,29 @@ public class TalerDater: DateFormatter {
}
}
+// public static func date(from: Timestamp) -> Date {
+// let milliseconds = try from.milliseconds()
+// let date = Date(milliseconds: milliseconds)
+// return date
+// }
+
/// converts a timestamp into a formatted date string
- public static func dateString(from: Timestamp, relative: Bool = false) -> String {
+ public static func dateString(from: Timestamp, relative: Bool = false) -> (String, Date?) {
do {
let milliseconds = try from.milliseconds()
let date = Date(milliseconds: milliseconds)
+// let date = date(from: from)
if relative {
let now = Date.now
let timeInterval = now.timeIntervalSince(date)
if let relativeDate = relativeDate(from: timeInterval) {
- return relativeDate
+ return (relativeDate, date)
}
}
- return shared.string(from: date)
+ return (shared.string(from: date), date)
} catch { // Never
- return "Never"
+// let never = LocalizedString("Never")
+ return ("Never", nil)
}
}
diff --git a/TalerWallet1/Views/Balances/BalanceRowView.swift b/TalerWallet1/Views/Balances/BalanceRowView.swift
@@ -104,7 +104,7 @@ struct BalanceRowView: View {
HStack(spacing: HSPACING) { twoRowButtons }
}
}
- .accessibilityElement(children: .combine)
+// .accessibilityElement(children: .combine)
}
}
}
diff --git a/TalerWallet1/Views/HelperViews/QRCodeDetailView.swift b/TalerWallet1/Views/HelperViews/QRCodeDetailView.swift
@@ -36,6 +36,7 @@ struct QRCodeDetailView: View {
HStack {
Spacer()
QRGeneratorView(text: talerURI)
+ .accessibilityLabel("QR Code")
Spacer()
}
.listRowSeparator(.hidden)
diff --git a/TalerWallet1/Views/Settings/Pending/PendingOpView.swift b/TalerWallet1/Views/Settings/Pending/PendingOpView.swift
@@ -28,7 +28,7 @@ struct PendingOpView: View {
let isDue = "isDue"
Toggle(isDue, isOn: $isDue)
.disabled(true)
- let dateString = TalerDater.dateString(from: pendingOp.timestampDue)
+ let (dateString, date) = TalerDater.dateString(from: pendingOp.timestampDue)
Text(dateString)
}
.accessibilityFont(.body)
diff --git a/TalerWallet1/Views/Transactions/TransactionDetailView.swift b/TalerWallet1/Views/Transactions/TransactionDetailView.swift
@@ -45,6 +45,20 @@ struct TransactionDetailView: View {
@State var transaction: Transaction = Transaction(dummyCurrency: DEMOCURRENCY)
@State var viewId = UUID()
+ func accessibilityDate(_ date: Date?) -> String? {
+ if let date {
+ let dateString = DateFormatter.localizedString(from: date,
+ dateStyle: .short,
+ timeStyle: .none)
+ let hourComponents = Calendar.current.dateComponents([.hour, .minute], from: date)
+ if let timeString = DateComponentsFormatter.localizedString(from: hourComponents, unitsStyle: .spellOut) {
+ return dateString + ", " + timeString
+ }
+ return dateString
+ }
+ return nil
+ }
+
var body: some View {
#if DEBUG
let _ = Self._printChanges()
@@ -52,7 +66,10 @@ struct TransactionDetailView: View {
#endif
let common = transaction.common
let pending = transaction.isPending
- let dateString = TalerDater.dateString(from: common.timestamp)
+ let locale = TalerDater.shared.locale
+ let (dateString, date) = TalerDater.dateString(from: common.timestamp)
+ let accessibilityDate = accessibilityDate(date) ??
+ dateString
let navTitle2 = transaction.localizedType
Group {
List {
@@ -68,6 +85,7 @@ struct TransactionDetailView: View {
} // Suspend + Resume buttons
Text(dateString)
.accessibilityFont(.body)
+ .accessibilityLabel(accessibilityDate)
.foregroundColor(.secondary)
.listRowSeparator(.hidden)
HStack {
diff --git a/TalerWallet1/Views/Transactions/TransactionRowView.swift b/TalerWallet1/Views/Transactions/TransactionRowView.swift
@@ -32,7 +32,7 @@ struct TransactionRowView: View {
let details = transaction.detailsToShow()
let keys = details.keys
- let dateString = TalerDater.dateString(from: common.timestamp, relative: true)
+ let (dateString, date) = TalerDater.dateString(from: common.timestamp, relative: true)
let incoming = common.incoming()
let foreColor = pending ? WalletColors().pendingColor(incoming)
: done ? WalletColors().transactionColor(incoming)