Mercurial > public > simoleon
annotate Simoleon/Helpers/CurrencySelector.swift @ 19:94fd7ac93060
Redesign
author | Dennis Concepción Martín <dennisconcepcionmartin@gmail.com> |
---|---|
date | Sun, 18 Jul 2021 20:00:05 +0100 |
parents | |
children | c3dda63f50ed |
rev | line source |
---|---|
19
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
1 // |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
2 // CurrencySelector.swift |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
3 // Simoleon |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
4 // |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
5 // Created by Dennis Concepción Martín on 18/07/2021. |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
6 // |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
7 |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
8 import SwiftUI |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
9 |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
10 struct CurrencySelector: View { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
11 @Binding var mainCurrencySelected: String |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
12 @Binding var secondaryCurrencySelected: String |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
13 @Binding var showingCurrencySelector: Bool |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
14 @Binding var selectingMainCurrency: Bool |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
15 |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
16 var body: some View { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
17 NavigationView { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
18 Form { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
19 ForEach(generateCurrencyList(), id: \.self) { currency in |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
20 Button(action: { select(currency) }) { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
21 CurrencyRow(currency: currency) |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
22 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
23 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
24 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
25 .navigationTitle("Currencies") |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
26 .navigationBarTitleDisplayMode(.inline) |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
27 .toolbar { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
28 ToolbarItem(placement: .confirmationAction) { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
29 Button("OK", action: { showingCurrencySelector = false }) |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
30 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
31 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
32 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
33 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
34 |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
35 private func generateCurrencyList() -> [String] { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
36 let currencyPairs: [String] = parseJson("CurrencyPairs.json") |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
37 var currencies: [String] = [] |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
38 |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
39 for currencyPair in currencyPairs { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
40 let splittedCurrencies = currencyPair.split(separator: "/") |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
41 let mainCurrency = String(splittedCurrencies[0]) |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
42 if !currencies.contains(mainCurrency) { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
43 currencies.append(mainCurrency) |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
44 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
45 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
46 |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
47 return currencies |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
48 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
49 |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
50 private func select(_ currency: String) { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
51 if selectingMainCurrency { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
52 self.mainCurrencySelected = currency |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
53 } else { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
54 self.secondaryCurrencySelected = currency |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
55 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
56 |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
57 showingCurrencySelector = false |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
58 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
59 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
60 |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
61 struct CurrencySelector_Previews: PreviewProvider { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
62 static var previews: some View { |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
63 CurrencySelector(mainCurrencySelected: .constant(""), secondaryCurrencySelected: .constant(""), showingCurrencySelector: .constant(false), selectingMainCurrency: .constant(true)) |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
64 } |
94fd7ac93060
Redesign
Dennis Concepción Martín <dennisconcepcionmartin@gmail.com>
parents:
diff
changeset
|
65 } |