LoadingView.swift (1916B)
1 /* 2 * This file is part of GNU Taler, ©2022-25 Taler Systems S.A. 3 * See LICENSE.md 4 */ 5 /** 6 * @author Marc Stibane 7 */ 8 import SwiftUI 9 import SymLog 10 11 struct LoadingView: View { 12 private let symLog = SymLogV(0) 13 let stack: CallStack 14 let scopeInfo: ScopeInfo? 15 let message: String? 16 17 // let backButtonHidden: Bool 18 let navTitle = String(localized: "Loading…") 19 20 @State private var rotationEnabled = true 21 22 var body: some View { 23 let view = VStack(alignment: .center) { 24 Spacer() 25 RotatingTaler(size: 100, 26 progress: true, // VoiceOver "In progress" 27 once: false, 28 rotationEnabled: $rotationEnabled) 29 .onTapGesture(count: 1) { 30 rotationEnabled.toggle() 31 } 32 Spacer() 33 if let scopeInfo { 34 if let urlStr = scopeInfo.url { 35 Text(urlStr.trimURL) 36 } else { 37 Text(scopeInfo.currency) 38 } 39 Spacer() 40 } 41 if let message { 42 Text(message) 43 } else { 44 Text(EMPTYSTRING) 45 } 46 Spacer() 47 Spacer() 48 } 49 .frame(maxWidth: .infinity) 50 .talerFont(.title) 51 .navigationTitle("Loading…") 52 .background(FullBackground()) 53 if #available(iOS 17.0, *) { 54 view.toolbarTitleDisplayMode(.inlineLarge) 55 } else { 56 view 57 } 58 59 } 60 } 61 // MARK: - 62 struct LoadingView_Previews: PreviewProvider { 63 static var previews: some View { 64 NavigationView { 65 LoadingView(stack: CallStack("Loading"), scopeInfo: nil, message: "test message") // , backButtonHidden: true) 66 .navigationBarTitleDisplayMode(.automatic) 67 }.navigationViewStyle(.stack) 68 } 69 }