taler-ios

iOS apps for GNU Taler (wallet)
Log | Files | Refs | README | LICENSE

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 }