[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-ios] 08/54: Preparations for localization + accessability
From: |
gnunet |
Subject: |
[taler-taler-ios] 08/54: Preparations for localization + accessability |
Date: |
Fri, 30 Jun 2023 22:33:40 +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 d30fe6eae6bd19ffbe710c5f676fb76dcc1c71ff
Author: Marc Stibane <marc@taler.net>
AuthorDate: Sat Jun 17 14:54:36 2023 +0200
Preparations for localization + accessability
---
TalerWallet1/Views/Main/MainView.swift | 36 +++++++++++++++++++------------
TalerWallet1/Views/Main/SideBarView.swift | 31 +++++++-------------------
2 files changed, 30 insertions(+), 37 deletions(-)
diff --git a/TalerWallet1/Views/Main/MainView.swift
b/TalerWallet1/Views/Main/MainView.swift
index e6ce3f1..841346a 100644
--- a/TalerWallet1/Views/Main/MainView.swift
+++ b/TalerWallet1/Views/Main/MainView.swift
@@ -20,7 +20,7 @@ struct MainView: View {
@State private var sheetPresented = false
@State private var urlToOpen: URL? = nil
- func sheetDismiss() -> Void {
+ func sheetDismissed() -> Void {
symLog.log("sheet dismiss")
}
var body: some View {
@@ -51,7 +51,7 @@ struct MainView: View {
DebugViewV()
.id("ViewID")
}
- .sheet(item: $urlToOpen, onDismiss: sheetDismiss) { url in
+ .sheet(item: $urlToOpen, onDismiss: sheetDismissed) { url in
let sheet = AnyView(URLSheet(urlToOpen: url))
Sheet(sheetView: sheet)
}
@@ -63,25 +63,34 @@ extension MainView {
let symLog: SymLogV?
@State var sidebarVisible: Bool = false
- @State var currentView: Int = 0
+ func hamburgerAction() {
+ sidebarVisible = !sidebarVisible
+ }
+ let balances = String(localized: "Balances")
+ let exchanges = String(localized: "Exchanges")
+ let settings = String(localized: "Settings")
var views: [SidebarItem] {[
- SidebarItem(name: String(localized: "Balances"),
+ SidebarItem(name: balances,
sysImage: "creditcard.fill", // TODO: Wallet Icon
- view: AnyView(BalancesListView(model:
BalancesModel.model(currency: "*"))
- { sidebarVisible = !sidebarVisible }
// hamburgerAction
+ view: AnyView(BalancesListView(navTitle: balances,
+ model:
BalancesModel.model(currency: "*"),
+ hamburgerAction:
hamburgerAction)
)),
- SidebarItem(name: String(localized: "Exchanges"),
+ SidebarItem(name: exchanges,
sysImage: "building.columns",
- view: AnyView(ExchangeListView(model:
ExchangeModel.model())
- { sidebarVisible = !sidebarVisible }
// hamburgerAction
+ view: AnyView(ExchangeListView(navTitle: exchanges,
+ model:
ExchangeModel.model(),
+ hamburgerAction:
hamburgerAction)
)),
- SidebarItem(name: String(localized: "Settings"), // TODO:
"About"?
+ SidebarItem(name: settings, // TODO: "About"?
sysImage: "gearshape.fill",
- view: AnyView(SettingsView()
- { sidebarVisible = !sidebarVisible }
// hamburgerAction
+ view: AnyView(SettingsView(navTitle: settings,
+ hamburgerAction: hamburgerAction)
))
]}
+ @State var currentView: Int = 0
+
var body: some View {
#if DEBUG
let _ = Self._printChanges()
@@ -89,12 +98,11 @@ extension MainView {
#endif
ZStack(alignment: .leading) {
views[currentView].view
- .frame(maxWidth: .infinity, maxHeight: .infinity,
alignment: .center)
.id(views[currentView].name)
+ .frame(maxWidth: .infinity, maxHeight: .infinity,
alignment: .center)
.transition(.backslide)
SideBarView(views: views, currentView: $currentView,
sidebarVisible: $sidebarVisible)
}
- .background(WalletColors().backgroundColor)
}
}
}
diff --git a/TalerWallet1/Views/Main/SideBarView.swift
b/TalerWallet1/Views/Main/SideBarView.swift
index db50a2c..fe100f7 100644
--- a/TalerWallet1/Views/Main/SideBarView.swift
+++ b/TalerWallet1/Views/Main/SideBarView.swift
@@ -22,19 +22,19 @@ struct SideBarView: View {
var body: some View {
HStack { // sideView left, clear dismiss target right
EqualIconWidthDomain {
- VStack {
- Spacer()
+ VStack(spacing: 10) {
+ Text("GNU Taler")
+ .font(.largeTitle).bold()
Image("taler-logo-2023-red")
.resizable()
.scaledToFit()
.frame(width: 100, height: 100)
- .padding(.top, 30)
+ .accessibilityHidden(true) // decorative logo
ForEach(0..<views.count, id: \.self) { i in
Button {
symLog.log("sidebar item \"\(views[i].name)\"
selected")
sidebarVisible = false // slide sidebar to
the left
withAnimation(.easeInOut) {currentView = i}
// switch to the view the user selected
-// withAnimation(.easeInOut(duration: 0.5))
{currentView = i} // switch to the view the user selected
} label: {
if let sysImage = views[i].sysImage {
Label(views[i].name, systemImage: sysImage)
@@ -46,35 +46,19 @@ struct SideBarView: View {
}
.buttonStyle(.bordered)
.font(.title)
- // .padding(.vertical)
+ .disabled(i == currentView)
+ .accessibilityHidden(i == currentView) // don't
suggest the current item
}
Spacer()
- Spacer()
- Spacer()
-// Button {
-// symLog.log("Scan QR selected")
-// sidebarVisible = false // slide sidebar to the
left
- // TODO: show scan sheet
-// } label: {
-// Label("Scan QR", systemImage: "qrcode.viewfinder")
-// .frame(maxWidth: sidebarWidth, alignment:
.leading)
-// }
-// .buttonStyle(.bordered)
-// .font(.title)
-// .padding(.bottom, 26.0)
}
.background(WalletColors().sideBackground)
.frame(width: sidebarWidth, alignment: .center)
// TODO: use leading instead of sidebarWidth for right-to-left
.offset(x: sidebarVisible ? 0 : -sidebarWidth)
- .animation(.easeInOut, value: sidebarVisible)
- .ignoresSafeArea()
// .onAppear can NOT be used here, because we don't show or
dismiss this view,
// but only slide it left or right - so it is always there.
- // .onAppear {} would be called once even before
LaunchScreen is dismissed and then never again
-
- // this is just a target for a tap gesture outside the sidebar
to dismiss it
}
+ // this is just a target for a tap gesture outside the sidebar to
dismiss it
Color.clear
.frame(maxWidth: sidebarVisible ? .infinity : 0, maxHeight:
.infinity, alignment: .leading)
// TODO: right-to-left ?
@@ -84,6 +68,7 @@ struct SideBarView: View {
sidebarVisible = false
}
}
+ .animation(sidebarVisible ? .easeOut : .easeIn, value: sidebarVisible)
}
}
// MARK: -
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-ios] 04/54: PopToRoot instead of dismiss sheet, (continued)
- [taler-taler-ios] 04/54: PopToRoot instead of dismiss sheet, gnunet, 2023/06/30
- [taler-taler-ios] 03/54: Cleaned up buttons, gnunet, 2023/06/30
- [taler-taler-ios] 11/54: Accessibility, gnunet, 2023/06/30
- [taler-taler-ios] 18/54: remove loaded, gnunet, 2023/06/30
- [taler-taler-ios] 09/54: Launch animation, SideBarView, gnunet, 2023/06/30
- [taler-taler-ios] 01/54: Big update after DD37, gnunet, 2023/06/30
- [taler-taler-ios] 13/54: Overhaul withdraw + p2p, gnunet, 2023/06/30
- [taler-taler-ios] 17/54: for debugging time-outs, gnunet, 2023/06/30
- [taler-taler-ios] 10/54: Reduce Logging, gnunet, 2023/06/30
- [taler-taler-ios] 12/54: Localization, gnunet, 2023/06/30
- [taler-taler-ios] 08/54: Preparations for localization + accessability,
gnunet <=
- [taler-taler-ios] 19/54: remove dismissFirst, gnunet, 2023/06/30
- [taler-taler-ios] 14/54: Made Model a Singleton, gnunet, 2023/06/30
- [taler-taler-ios] 40/54: TransactionType, gnunet, 2023/06/30
- [taler-taler-ios] 26/54: PeerPullDebit, gnunet, 2023/06/30
- [taler-taler-ios] 16/54: Dummy, gnunet, 2023/06/30
- [taler-taler-ios] 34/54: sizeCategory, task, gnunet, 2023/06/30
- [taler-taler-ios] 06/54: Notifications, gnunet, 2023/06/30
- [taler-taler-ios] 42/54: BalanceRow, gnunet, 2023/06/30
- [taler-taler-ios] 15/54: Suspend-Resume, gnunet, 2023/06/30
- [taler-taler-ios] 21/54: Sounds, P2P receive, gnunet, 2023/06/30