[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-ios] branch master updated (735c721 -> 7d32de8)
From: |
gnunet |
Subject: |
[taler-taler-ios] branch master updated (735c721 -> 7d32de8) |
Date: |
Sat, 02 Sep 2023 22:01:01 +0200 |
This is an automated email from the git hooks/post-receive script.
marc-stibane pushed a change to branch master
in repository taler-ios.
from 735c721 UI improvements
new 8646727 Patch for CCCamp, removed extra, bump version to 0.9.3 (18)
new 5661536 Changed "Invoice" to "Request" (private mode - "Invoice" will
be used in business mode post 1.0), roundedBorder for input fields
new 6c25aed Use sqlite3
new 8c2b7c0 Rename
new 045242d Comment
new 5ed6289 Rename
new 567770c secret-token:secret
new 2dd7100 IntegrationTest on test
new 8459372 Accessibility String for Payment Sounds
new f13f823 Comment
new c521342 Settings: Font: AtkinsonHyperlegible
new 459811c CachePath for data not to be backed up
new a747968 ScopedCurrencyInfo, SuperScriptDigit
new 625b0a5 CurrencyFormatter
new 8fa083a group
new 22a6192 Rename, fix
new d28f26e GNU Taler, Taler Wallet
new e9e27e9 Nunito Font
new 7d32de8 Font Settings
The 19 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
Info.plist => GNU_Taler Info.plist | 8 +-
GNU Taler.entitlements => GNU_Taler.entitlements | 0
TalerWallet.xcodeproj/project.pbxproj | 506 +++++++++++++++++++--
TalerWallet1/Backend/Transaction.swift | 8 +-
TalerWallet1/Controllers/Controller.swift | 11 +-
TalerWallet1/Controllers/DebugViewC.swift | 24 +-
TalerWallet1/Controllers/TalerWallet1App.swift | 3 +-
.../Atkinson-Hyperlegible-Bold-102.otf | Bin
.../Atkinson-Hyperlegible-BoldItalic-102.otf | Bin
...tkinson-Hyperlegible-Font-License-2020-1104.pdf | Bin
.../Atkinson-Hyperlegible-Italic-102.otf | Bin
.../Atkinson-Hyperlegible-Regular-102.otf | Bin
TalerWallet1/Fonts/Nunito/Nunito-Bold.ttf | Bin 0 -> 131672 bytes
TalerWallet1/Fonts/Nunito/Nunito-BoldItalic.ttf | Bin 0 -> 134540 bytes
TalerWallet1/Fonts/Nunito/Nunito-Italic.ttf | Bin 0 -> 134664 bytes
TalerWallet1/Fonts/Nunito/Nunito-Regular.ttf | Bin 0 -> 131736 bytes
TalerWallet1/Fonts/Nunito/OFL.txt | 93 ++++
...{playSound.swift => Controller+playSound.swift} | 1 +
TalerWallet1/Helper/CurrencyFormatter.swift | 23 +-
TalerWallet1/Helper/Font+Taler.swift | 117 +++++
TalerWallet1/Model/Model+Exchange.swift | 6 -
TalerWallet1/Model/Model+P2P.swift | 8 +-
TalerWallet1/Model/Model+Payment.swift | 4 +-
TalerWallet1/Model/Model+Settings.swift | 3 +-
TalerWallet1/Model/WalletModel.swift | 40 +-
.../Views/Balances/BalancesSectionView.swift | 14 +-
TalerWallet1/Views/HelperViews/AmountView.swift | 4 +-
TalerWallet1/Views/HelperViews/CurrencyField.swift | 3 +-
.../Views/HelperViews/CurrencyInputView.swift | 6 +-
TalerWallet1/Views/Payment/PaymentView.swift | 4 +-
TalerWallet1/Views/Peer2peer/PaymentPurpose.swift | 8 +-
TalerWallet1/Views/Peer2peer/RequestPayment.swift | 9 +-
TalerWallet1/Views/Peer2peer/SendDone.swift | 2 +-
TalerWallet1/Views/Peer2peer/SendPurpose.swift | 7 +-
TalerWallet1/Views/Settings/SettingsItem.swift | 77 +++-
TalerWallet1/Views/Settings/SettingsView.swift | 35 +-
.../Views/Sheets/P2P_Sheets/P2pAcceptDone.swift | 2 +-
.../Views/Sheets/P2P_Sheets/P2pPayURIView.swift | 6 +-
.../WithdrawBankIntegrated/WithdrawURIView.swift | 6 +-
Info.plist => Taler_Wallet Info.plist | 8 +-
...Taler.entitlements => Taler_Wallet.entitlements | 0
TestFlight/WhatToTest.en-US.txt | 5 +
taler-swift/Sources/taler-swift/Amount.swift | 32 +-
43 files changed, 930 insertions(+), 153 deletions(-)
copy Info.plist => GNU_Taler Info.plist (84%)
copy GNU Taler.entitlements => GNU_Taler.entitlements (100%)
rename {Atkinson-Hyperlegible =>
TalerWallet1/Fonts/Atkinson-Hyperlegible}/Atkinson-Hyperlegible-Bold-102.otf
(100%)
rename {Atkinson-Hyperlegible =>
TalerWallet1/Fonts/Atkinson-Hyperlegible}/Atkinson-Hyperlegible-BoldItalic-102.otf
(100%)
rename {Atkinson-Hyperlegible =>
TalerWallet1/Fonts/Atkinson-Hyperlegible}/Atkinson-Hyperlegible-Font-License-2020-1104.pdf
(100%)
rename {Atkinson-Hyperlegible =>
TalerWallet1/Fonts/Atkinson-Hyperlegible}/Atkinson-Hyperlegible-Italic-102.otf
(100%)
rename {Atkinson-Hyperlegible =>
TalerWallet1/Fonts/Atkinson-Hyperlegible}/Atkinson-Hyperlegible-Regular-102.otf
(100%)
create mode 100644 TalerWallet1/Fonts/Nunito/Nunito-Bold.ttf
create mode 100644 TalerWallet1/Fonts/Nunito/Nunito-BoldItalic.ttf
create mode 100644 TalerWallet1/Fonts/Nunito/Nunito-Italic.ttf
create mode 100644 TalerWallet1/Fonts/Nunito/Nunito-Regular.ttf
create mode 100644 TalerWallet1/Fonts/Nunito/OFL.txt
rename TalerWallet1/Helper/{playSound.swift => Controller+playSound.swift}
(96%)
create mode 100644 TalerWallet1/Helper/Font+Taler.swift
rename Info.plist => Taler_Wallet Info.plist (84%)
rename GNU Taler.entitlements => Taler_Wallet.entitlements (100%)
diff --git a/Info.plist b/GNU_Taler Info.plist
similarity index 84%
copy from Info.plist
copy to GNU_Taler Info.plist
index 6cbe85d..5c6173c 100644
--- a/Info.plist
+++ b/GNU_Taler Info.plist
@@ -12,7 +12,7 @@
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleURLName</key>
- <string>com.taler-systems.gnutalerwallet09</string>
+ <string>com.taler-systems.talerwallet-1</string>
<key>CFBundleURLSchemes</key>
<array>
<string>taler</string>
@@ -27,9 +27,13 @@
<key>UIAppFonts</key>
<array>
<string>Atkinson-Hyperlegible-Regular-102.otf</string>
- <string>Atkinson-Hyperlegible-Italic-102.otf</string>
<string>Atkinson-Hyperlegible-Bold-102.otf</string>
<string>Atkinson-Hyperlegible-BoldItalic-102.otf</string>
+ <string>Atkinson-Hyperlegible-Italic-102.otf</string>
+ <string>Nunito-Regular.ttf</string>
+ <string>Nunito-Bold.ttf</string>
+ <string>Nunito-BoldItalic.ttf</string>
+ <string>Nunito-Italic.ttf</string>
</array>
<key>UIBackgroundModes</key>
<array>
diff --git a/GNU Taler.entitlements b/GNU_Taler.entitlements
similarity index 100%
copy from GNU Taler.entitlements
copy to GNU_Taler.entitlements
diff --git a/TalerWallet.xcodeproj/project.pbxproj
b/TalerWallet.xcodeproj/project.pbxproj
index 14555ba..aa9e2a0 100644
--- a/TalerWallet.xcodeproj/project.pbxproj
+++ b/TalerWallet.xcodeproj/project.pbxproj
@@ -19,10 +19,121 @@
4E3B4BC52A428AF700CC88B8 /* Model+Balances.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4E3B4BC42A428AF700CC88B8 /*
Model+Balances.swift */; };
4E3B4BC72A429F2A00CC88B8 /* View+Notification.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4E3B4BC62A429F2A00CC88B8 /*
View+Notification.swift */; };
4E3B4BC92A42BC4800CC88B8 /* Model+Exchange.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4E3B4BC82A42BC4800CC88B8 /*
Model+Exchange.swift */; };
+ 4E3EAE1D2A990778009F1BE8 /* SelectDays.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4ECB62812A0BB01D004ABBB7 /* SelectDays.swift */;
};
+ 4E3EAE1E2A990778009F1BE8 /* AgePicker.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E97968F2A3765ED006F73BC /* AgePicker.swift */;
};
+ 4E3EAE1F2A990778009F1BE8 /* Controller.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095012989C9BC0043A8A1 /* Controller.swift */;
};
+ 4E3EAE202A990778009F1BE8 /* MainView.swift in Sources */ = {isa
= PBXBuildFile; fileRef = 4EB095442989CBFE0043A8A1 /* MainView.swift */; };
+ 4E3EAE212A990778009F1BE8 /* Buttons.swift in Sources */ = {isa
= PBXBuildFile; fileRef = 4EB095472989CBFE0043A8A1 /* Buttons.swift */; };
+ 4E3EAE222A990778009F1BE8 /* TransactionButton.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EBA82AA2A3EB2CA00E5F39A /*
TransactionButton.swift */; };
+ 4E3EAE232A990778009F1BE8 /* BalancesSectionView.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4EB0953A2989CBFE0043A8A1 /*
BalancesSectionView.swift */; };
+ 4E3EAE242A990778009F1BE8 /* QRGeneratorView.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EEC157229F8242800D46A03 /*
QRGeneratorView.swift */; };
+ 4E3EAE252A990778009F1BE8 /* WithdrawAcceptDone.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4E5A88F62A3B9E5B00072618 /*
WithdrawAcceptDone.swift */; };
+ 4E3EAE262A990778009F1BE8 /* Transaction.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB0951E2989CBCB0043A8A1 /* Transaction.swift
*/; };
+ 4E3EAE272A990778009F1BE8 /* WalletColors.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E9320422A14F6EA00A87B0E /* WalletColors.swift
*/; };
+ 4E3EAE282A990778009F1BE8 /* BalancesListView.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB095372989CBFE0043A8A1 /*
BalancesListView.swift */; };
+ 4E3EAE292A990778009F1BE8 /* WalletBackendError.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB0951D2989CBCB0043A8A1 /*
WalletBackendError.swift */; };
+ 4E3EAE2A2A990778009F1BE8 /* PendingRowView.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EB095382989CBFE0043A8A1 /*
PendingRowView.swift */; };
+ 4E3EAE2B2A990778009F1BE8 /* LoadingView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB0954A2989CBFE0043A8A1 /* LoadingView.swift
*/; };
+ 4E3EAE2C2A990778009F1BE8 /* ManualWithdraw.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4E50B34F2A1BEE8000F9F01C /*
ManualWithdraw.swift */; };
+ 4E3EAE2D2A990778009F1BE8 /* Model+Exchange.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4E3B4BC82A42BC4800CC88B8 /*
Model+Exchange.swift */; };
+ 4E3EAE2E2A990778009F1BE8 /* QRCodeDetailView.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4E5A88F42A38A4FD00072618 /*
QRCodeDetailView.swift */; };
+ 4E3EAE2F2A990778009F1BE8 /* TransactionsEmptyView.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4E87C8722A31CB7F001C6406 /*
TransactionsEmptyView.swift */; };
+ 4E3EAE302A990778009F1BE8 /* UncompletedRowView.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4E87C8742A34B411001C6406 /*
UncompletedRowView.swift */; };
+ 4E3EAE312A990778009F1BE8 /* SendAmount.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E40E0BD29F25ABB00B85369 /* SendAmount.swift */;
};
+ 4E3EAE332A990778009F1BE8 /* EqualIconWidthDomain.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4E8E25322A1CD39700A27BFA /*
EqualIconWidthDomain.swift */; };
+ 4E3EAE342A990778009F1BE8 /* SuperScriptDigits.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EBA563E2A7FD9390084948B /*
SuperScriptDigits.swift */; };
+ 4E3EAE352A990778009F1BE8 /* P2pPayURIView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E578E932A4822D500F21F1C /* P2pPayURIView.swift
*/; };
+ 4E3EAE362A990778009F1BE8 /* Model+Payment.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB0952C2989CBFE0043A8A1 /* Model+Payment.swift
*/; };
+ 4E3EAE372A990778009F1BE8 /* SettingsView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095252989CBFE0043A8A1 /* SettingsView.swift
*/; };
+ 4E3EAE382A990778009F1BE8 /* PaymentView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB0952D2989CBFE0043A8A1 /* PaymentView.swift
*/; };
+ 4E3EAE392A990778009F1BE8 /* WithdrawURIView.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EB0953C2989CBFE0043A8A1 /*
WithdrawURIView.swift */; };
+ 4E3EAE3A2A990778009F1BE8 /* CopyShare.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EF840A62A0B85F400EE0D47 /* CopyShare.swift */;
};
+ 4E3EAE3B2A990778009F1BE8 /* TalerWallet1App.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EB094EC298979620043A8A1 /*
TalerWallet1App.swift */; };
+ 4E3EAE3C2A990778009F1BE8 /* WithdrawTOSView.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EB095402989CBFE0043A8A1 /*
WithdrawTOSView.swift */; };
+ 4E3EAE3D2A990778009F1BE8 /* Sheet.swift in Sources */ = {isa =
PBXBuildFile; fileRef = 4EEC157729F9032900D46A03 /* Sheet.swift */; };
+ 4E3EAE3E2A990778009F1BE8 /* ManualDetails.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E6EDD842A3615BE0031D520 /* ManualDetails.swift
*/; };
+ 4E3EAE3F2A990778009F1BE8 /* View+dismissTop.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EB095082989CB7C0043A8A1 /*
View+dismissTop.swift */; };
+ 4E3EAE402A990778009F1BE8 /* TransactionsListView.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4EB0952F2989CBFE0043A8A1 /*
TransactionsListView.swift */; };
+ 4E3EAE412A990778009F1BE8 /* WalletBackendRequest.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4EB0951B2989CBCB0043A8A1 /*
WalletBackendRequest.swift */; };
+ 4E3EAE422A990778009F1BE8 /* KeyboardResponder.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EAD117529F672FA008EDD0B /*
KeyboardResponder.swift */; };
+ 4E3EAE432A990778009F1BE8 /* TransactionRowView.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB095302989CBFE0043A8A1 /*
TransactionRowView.swift */; };
+ 4E3EAE442A990778009F1BE8 /* PublicConstants.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EA1ABBD29A3833A008821EA /*
PublicConstants.swift */; };
+ 4E3EAE452A990778009F1BE8 /* SendDone.swift in Sources */ = {isa
= PBXBuildFile; fileRef = 4EB3136029FEE79B007D68BC /* SendDone.swift */; };
+ 4E3EAE462A990778009F1BE8 /* TextFieldAlert.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EB095482989CBFE0043A8A1 /*
TextFieldAlert.swift */; };
+ 4E3EAE472A990778009F1BE8 /* QuiteSomeCoins.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EBA82AC2A3F580500E5F39A /*
QuiteSomeCoins.swift */; };
+ 4E3EAE482A990778009F1BE8 /* PayTemplateView.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EBA56402A7FF5200084948B /*
PayTemplateView.swift */; };
+ 4E3EAE492A990778009F1BE8 /* ManualWithdrawDone.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB431662A1E55C700C5690E /*
ManualWithdrawDone.swift */; };
+ 4E3EAE4A2A990778009F1BE8 /* PaymentPurpose.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4E9320462A164BC700A87B0E /*
PaymentPurpose.swift */; };
+ 4E3EAE4B2A990778009F1BE8 /* ShareSheet.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E753A072A0B6A5F002D9328 /* ShareSheet.swift */;
};
+ 4E3EAE4C2A990778009F1BE8 /* AmountView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095492989CBFE0043A8A1 /* AmountView.swift */;
};
+ 4E3EAE4D2A990778009F1BE8 /* P2pAcceptDone.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E3B4BC22A42252300CC88B8 /* P2pAcceptDone.swift
*/; };
+ 4E3EAE4E2A990778009F1BE8 /* AnyTransition+backslide.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4E363CBD2A23CB2100D7E98C /*
AnyTransition+backslide.swift */; };
+ 4E3EAE4F2A990778009F1BE8 /* BalanceRowButtons.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB065432A4CD1A80039B91D /*
BalanceRowButtons.swift */; };
+ 4E3EAE502A990778009F1BE8 /* Model+Transactions.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB095322989CBFE0043A8A1 /*
Model+Transactions.swift */; };
+ 4E3EAE512A990778009F1BE8 /* Controller+playSound.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4E578E912A481D8600F21F1C /*
Controller+playSound.swift */; };
+ 4E3EAE522A990778009F1BE8 /* WalletEmptyView.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EB095392989CBFE0043A8A1 /*
WalletEmptyView.swift */; };
+ 4E3EAE532A990778009F1BE8 /* CurrencyFormatter.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4E16E12229F3BB99008B9C86 /*
CurrencyFormatter.swift */; };
+ 4E3EAE542A990778009F1BE8 /* TalerDater.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095062989CB7C0043A8A1 /* TalerDater.swift */;
};
+ 4E3EAE552A990778009F1BE8 /* Model+Balances.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4E3B4BC42A428AF700CC88B8 /*
Model+Balances.swift */; };
+ 4E3EAE562A990778009F1BE8 /* LocalizedAlertError.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4E363CC12A2621C200D7E98C /*
LocalizedAlertError.swift */; };
+ 4E3EAE572A990778009F1BE8 /* quickjs.swift in Sources */ = {isa
= PBXBuildFile; fileRef = 4EB0950D2989CB9A0043A8A1 /* quickjs.swift */; };
+ 4E3EAE582A990778009F1BE8 /* CurrencyField.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E53A33629F50B7B00830EC2 /* CurrencyField.swift
*/; };
+ 4E3EAE592A990778009F1BE8 /* Model+Settings.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EB095102989CBB00043A8A1 /*
Model+Settings.swift */; };
+ 4E3EAE5A2A990778009F1BE8 /* ErrorView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095452989CBFE0043A8A1 /* ErrorView.swift */;
};
+ 4E3EAE5B2A990778009F1BE8 /* View+Notification.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4E3B4BC62A429F2A00CC88B8 /*
View+Notification.swift */; };
+ 4E3EAE5C2A990778009F1BE8 /* Model+Pending.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB0954C2989CBFE0043A8A1 /* Model+Pending.swift
*/; };
+ 4E3EAE5D2A990778009F1BE8 /* ExchangeListView.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB095292989CBFE0043A8A1 /*
ExchangeListView.swift */; };
+ 4E3EAE5E2A990778009F1BE8 /* WithdrawProgressView.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4EB0953F2989CBFE0043A8A1 /*
WithdrawProgressView.swift */; };
+ 4E3EAE5F2A990778009F1BE8 /* QRSheet.swift in Sources */ = {isa
= PBXBuildFile; fileRef = 4EEC157929F9427F00D46A03 /* QRSheet.swift */; };
+ 4E3EAE602A990778009F1BE8 /* P2pReceiveURIView.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4E3B4BC02A41E6C200CC88B8 /*
P2pReceiveURIView.swift */; };
+ 4E3EAE612A990778009F1BE8 /* ListStyle.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E6EDD862A363D8D0031D520 /* ListStyle.swift */;
};
+ 4E3EAE622A990778009F1BE8 /* TransactionDetailView.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4EB095312989CBFE0043A8A1 /*
TransactionDetailView.swift */; };
+ 4E3EAE632A990778009F1BE8 /* WalletCore.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB0951C2989CBCB0043A8A1 /* WalletCore.swift */;
};
+ 4E3EAE642A990778009F1BE8 /* LaunchAnimationView.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4EB095432989CBFE0043A8A1 /*
LaunchAnimationView.swift */; };
+ 4E3EAE652A990778009F1BE8 /* SideBarView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095422989CBFE0043A8A1 /* SideBarView.swift
*/; };
+ 4E3EAE662A990778009F1BE8 /* PendingOpView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB0954D2989CBFE0043A8A1 /* PendingOpView.swift
*/; };
+ 4E3EAE672A990778009F1BE8 /* PendingOpsListView.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EB0954E2989CBFE0043A8A1 /*
PendingOpsListView.swift */; };
+ 4E3EAE682A990778009F1BE8 /* WalletModel.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095112989CBB00043A8A1 /* WalletModel.swift
*/; };
+ 4E3EAE692A990778009F1BE8 /* URLSheet.swift in Sources */ = {isa
= PBXBuildFile; fileRef = 4EB095332989CBFE0043A8A1 /* URLSheet.swift */; };
+ 4E3EAE6A2A990778009F1BE8 /* ThreeAmounts.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4ED2F94A2A278F5100453B40 /* ThreeAmounts.swift
*/; };
+ 4E3EAE6B2A990778009F1BE8 /* Model+Withdraw.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EB0953D2989CBFE0043A8A1 /*
Model+Withdraw.swift */; };
+ 4E3EAE6C2A990778009F1BE8 /* ExchangeSectionView.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4EC90C772A1B528B0071DC58 /*
ExchangeSectionView.swift */; };
+ 4E3EAE6D2A990778009F1BE8 /* SendPurpose.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E7940DD29FC307C00A9AEA1 /* SendPurpose.swift
*/; };
+ 4E3EAE6E2A990778009F1BE8 /* Model+P2P.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4ECB627F2A0BA6DF004ABBB7 /* Model+P2P.swift */;
};
+ 4E3EAE6F2A990778009F1BE8 /* TalerStrings.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095072989CB7C0043A8A1 /* TalerStrings.swift
*/; };
+ 4E3EAE702A990778009F1BE8 /* CurrencyInputView.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4EA551242A2C923600FEC9A8 /*
CurrencyInputView.swift */; };
+ 4E3EAE712A990778009F1BE8 /* URL+id+iban.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E363CBB2A237E0900D7E98C /* URL+id+iban.swift
*/; };
+ 4E3EAE722A990778009F1BE8 /* RequestPayment.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4E9320442A1645B600A87B0E /*
RequestPayment.swift */; };
+ 4E3EAE732A990778009F1BE8 /* SettingsItem.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4EB095262989CBFE0043A8A1 /* SettingsItem.swift
*/; };
+ 4E3EAE742A990778009F1BE8 /* BalanceRowView.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4EB095362989CBFE0043A8A1 /*
BalanceRowView.swift */; };
+ 4E3EAE752A990778009F1BE8 /* DebugViewC.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E753A052A0952F7002D9328 /* DebugViewC.swift */;
};
+ 4E3EAE772A990778009F1BE8 /* AnyCodable in Frameworks */ = {isa
= PBXBuildFile; productRef = 4E3EAE162A990778009F1BE8 /* AnyCodable */; };
+ 4E3EAE782A990778009F1BE8 /* SymLog in Frameworks */ = {isa =
PBXBuildFile; productRef = 4E3EAE182A990778009F1BE8 /* SymLog */; };
+ 4E3EAE792A990778009F1BE8 /* FTalerWalletcore.framework in
Frameworks */ = {isa = PBXBuildFile; fileRef = 4EB094F729897CA20043A8A1 /*
FTalerWalletcore.framework */; };
+ 4E3EAE7A2A990778009F1BE8 /* taler-swift in Frameworks */ = {isa
= PBXBuildFile; productRef = 4E3EAE152A990778009F1BE8 /* taler-swift */; };
+ 4E3EAE7B2A990778009F1BE8 /* CodeScanner in Frameworks */ = {isa
= PBXBuildFile; productRef = 4E3EAE1A2A990778009F1BE8 /* CodeScanner */; };
+ 4E3EAE7E2A990778009F1BE8 /* Settings.bundle in Resources */ =
{isa = PBXBuildFile; fileRef = 4E363CBF2A24754200D7E98C /* Settings.bundle */;
};
+ 4E3EAE7F2A990778009F1BE8 /*
Atkinson-Hyperlegible-Regular-102.otf in Resources */ = {isa = PBXBuildFile;
fileRef = 4E8C171C2A6509BB005B2392 /* Atkinson-Hyperlegible-Regular-102.otf */;
};
+ 4E3EAE802A990778009F1BE8 /* Atkinson-Hyperlegible-Bold-102.otf
in Resources */ = {isa = PBXBuildFile; fileRef = 4E8C171E2A6509BB005B2392 /*
Atkinson-Hyperlegible-Bold-102.otf */; };
+ 4E3EAE812A990778009F1BE8 /*
Atkinson-Hyperlegible-BoldItalic-102.otf in Resources */ = {isa = PBXBuildFile;
fileRef = 4E8C171F2A6509BB005B2392 /* Atkinson-Hyperlegible-BoldItalic-102.otf
*/; };
+ 4E3EAE822A990778009F1BE8 /* payment_received.m4a in Resources
*/ = {isa = PBXBuildFile; fileRef = 4E2254952A822B8100E41D29 /*
payment_received.m4a */; };
+ 4E3EAE832A990778009F1BE8 /*
Atkinson-Hyperlegible-Italic-102.otf in Resources */ = {isa = PBXBuildFile;
fileRef = 4E8C171D2A6509BB005B2392 /* Atkinson-Hyperlegible-Italic-102.otf */;
};
+ 4E3EAE842A990778009F1BE8 /* Assets.xcassets in Resources */ =
{isa = PBXBuildFile; fileRef = 4EB094EF298979D30043A8A1 /* Assets.xcassets */;
};
+ 4E3EAE852A990778009F1BE8 /* payment_sent.m4a in Resources */ =
{isa = PBXBuildFile; fileRef = 4E2254962A822B8100E41D29 /* payment_sent.m4a */;
};
+ 4E3EAE8C2AA0933C009F1BE8 /* Font+Taler.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E3EAE8B2AA0933C009F1BE8 /* Font+Taler.swift */;
};
+ 4E3EAE8D2AA0933C009F1BE8 /* Font+Taler.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E3EAE8B2AA0933C009F1BE8 /* Font+Taler.swift */;
};
+ 4E3EAE9C2AA12467009F1BE8 /* Nunito-Regular.ttf in Resources */
= {isa = PBXBuildFile; fileRef = 4E3EAE9A2AA12467009F1BE8 /* Nunito-Regular.ttf
*/; };
+ 4E3EAE9D2AA12467009F1BE8 /* Nunito-Regular.ttf in Resources */
= {isa = PBXBuildFile; fileRef = 4E3EAE9A2AA12467009F1BE8 /* Nunito-Regular.ttf
*/; };
+ 4E3EAE9E2AA12467009F1BE8 /* Nunito-Bold.ttf in Resources */ =
{isa = PBXBuildFile; fileRef = 4E3EAE9B2AA12467009F1BE8 /* Nunito-Bold.ttf */;
};
+ 4E3EAE9F2AA12467009F1BE8 /* Nunito-Bold.ttf in Resources */ =
{isa = PBXBuildFile; fileRef = 4E3EAE9B2AA12467009F1BE8 /* Nunito-Bold.ttf */;
};
+ 4E3EAEA22AA12582009F1BE8 /* Nunito-Italic.ttf in Resources */ =
{isa = PBXBuildFile; fileRef = 4E3EAEA02AA12582009F1BE8 /* Nunito-Italic.ttf
*/; };
+ 4E3EAEA32AA12582009F1BE8 /* Nunito-Italic.ttf in Resources */ =
{isa = PBXBuildFile; fileRef = 4E3EAEA02AA12582009F1BE8 /* Nunito-Italic.ttf
*/; };
+ 4E3EAEA42AA12582009F1BE8 /* Nunito-BoldItalic.ttf in Resources
*/ = {isa = PBXBuildFile; fileRef = 4E3EAEA12AA12582009F1BE8 /*
Nunito-BoldItalic.ttf */; };
+ 4E3EAEA52AA12582009F1BE8 /* Nunito-BoldItalic.ttf in Resources
*/ = {isa = PBXBuildFile; fileRef = 4E3EAEA12AA12582009F1BE8 /*
Nunito-BoldItalic.ttf */; };
4E40E0BE29F25ABB00B85369 /* SendAmount.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E40E0BD29F25ABB00B85369 /* SendAmount.swift */;
};
4E50B3502A1BEE8000F9F01C /* ManualWithdraw.swift in Sources */
= {isa = PBXBuildFile; fileRef = 4E50B34F2A1BEE8000F9F01C /*
ManualWithdraw.swift */; };
4E53A33729F50B7B00830EC2 /* CurrencyField.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E53A33629F50B7B00830EC2 /* CurrencyField.swift
*/; };
- 4E578E922A481D8600F21F1C /* playSound.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E578E912A481D8600F21F1C /* playSound.swift */;
};
+ 4E578E922A481D8600F21F1C /* Controller+playSound.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4E578E912A481D8600F21F1C /*
Controller+playSound.swift */; };
4E578E942A4822D500F21F1C /* P2pPayURIView.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E578E932A4822D500F21F1C /* P2pPayURIView.swift
*/; };
4E5A88F52A38A4FD00072618 /* QRCodeDetailView.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4E5A88F42A38A4FD00072618 /*
QRCodeDetailView.swift */; };
4E5A88F72A3B9E5B00072618 /* WithdrawAcceptDone.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4E5A88F62A3B9E5B00072618 /*
WithdrawAcceptDone.swift */; };
@@ -133,6 +244,15 @@
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
+ 4E3EAE7C2A990778009F1BE8 /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 12;
+ dstPath = "";
+ dstSubfolderSpec = 7;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
D11250FA26B12D4400D02E00 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 12;
@@ -152,16 +272,21 @@
4E363CBD2A23CB2100D7E98C /* AnyTransition+backslide.swift */ =
{isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
sourcecode.swift; path = "AnyTransition+backslide.swift"; sourceTree =
"<group>"; };
4E363CBF2A24754200D7E98C /* Settings.bundle */ = {isa =
PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path =
Settings.bundle; sourceTree = "<group>"; };
4E363CC12A2621C200D7E98C /* LocalizedAlertError.swift */ = {isa
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift;
path = LocalizedAlertError.swift; sourceTree = "<group>"; };
- 4E3AE7EF29A7E8F40070BEC4 /* Taler Wallet.entitlements */ = {isa
= PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "Taler
Wallet.entitlements"; sourceTree = "<group>"; };
4E3B4BC02A41E6C200CC88B8 /* P2pReceiveURIView.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= P2pReceiveURIView.swift; sourceTree = "<group>"; };
4E3B4BC22A42252300CC88B8 /* P2pAcceptDone.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= P2pAcceptDone.swift; sourceTree = "<group>"; };
4E3B4BC42A428AF700CC88B8 /* Model+Balances.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= "Model+Balances.swift"; sourceTree = "<group>"; };
4E3B4BC62A429F2A00CC88B8 /* View+Notification.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= "View+Notification.swift"; sourceTree = "<group>"; };
4E3B4BC82A42BC4800CC88B8 /* Model+Exchange.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= "Model+Exchange.swift"; sourceTree = "<group>"; };
- 4E40E0BD29F25ABB00B85369 /* SendAmount.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name
= SendAmount.swift; path = TalerWallet1/Views/Peer2peer/SendAmount.swift;
sourceTree = SOURCE_ROOT; };
+ 4E3EAE892A990778009F1BE8 /* GNU_Taler.app */ = {isa =
PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0;
path = GNU_Taler.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ 4E3EAE8B2AA0933C009F1BE8 /* Font+Taler.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= "Font+Taler.swift"; sourceTree = "<group>"; };
+ 4E3EAE9A2AA12467009F1BE8 /* Nunito-Regular.ttf */ = {isa =
PBXFileReference; lastKnownFileType = file; path = "Nunito-Regular.ttf";
sourceTree = "<group>"; };
+ 4E3EAE9B2AA12467009F1BE8 /* Nunito-Bold.ttf */ = {isa =
PBXFileReference; lastKnownFileType = file; path = "Nunito-Bold.ttf";
sourceTree = "<group>"; };
+ 4E3EAEA02AA12582009F1BE8 /* Nunito-Italic.ttf */ = {isa =
PBXFileReference; lastKnownFileType = file; path = "Nunito-Italic.ttf";
sourceTree = "<group>"; };
+ 4E3EAEA12AA12582009F1BE8 /* Nunito-BoldItalic.ttf */ = {isa =
PBXFileReference; lastKnownFileType = file; path = "Nunito-BoldItalic.ttf";
sourceTree = "<group>"; };
+ 4E40E0BD29F25ABB00B85369 /* SendAmount.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= SendAmount.swift; sourceTree = "<group>"; };
4E50B34F2A1BEE8000F9F01C /* ManualWithdraw.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= ManualWithdraw.swift; sourceTree = "<group>"; };
4E53A33629F50B7B00830EC2 /* CurrencyField.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= CurrencyField.swift; sourceTree = "<group>"; };
- 4E578E912A481D8600F21F1C /* playSound.swift */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.swift; path = playSound.swift;
sourceTree = "<group>"; };
+ 4E578E912A481D8600F21F1C /* Controller+playSound.swift */ =
{isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path =
"Controller+playSound.swift"; sourceTree = "<group>"; };
4E578E932A4822D500F21F1C /* P2pPayURIView.swift */ = {isa =
PBXFileReference; lastKnownFileType = sourcecode.swift; path =
P2pPayURIView.swift; sourceTree = "<group>"; };
4E5A88F42A38A4FD00072618 /* QRCodeDetailView.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= QRCodeDetailView.swift; sourceTree = "<group>"; };
4E5A88F62A3B9E5B00072618 /* WithdrawAcceptDone.swift */ = {isa
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift;
path = WithdrawAcceptDone.swift; sourceTree = "<group>"; };
@@ -192,7 +317,6 @@
4EB094D929896D030043A8A1 /* TalerWalletUITestsLaunchTests.swift
*/ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType =
sourcecode.swift; path = TalerWalletUITestsLaunchTests.swift; sourceTree =
"<group>"; };
4EB094DA29896D030043A8A1 /* TalerUITests.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= TalerUITests.swift; sourceTree = "<group>"; };
4EB094DB29896D030043A8A1 /* TalerWalletUITests.swift */ = {isa
= PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift;
path = TalerWalletUITests.swift; sourceTree = "<group>"; };
- 4EB094E129896FED0043A8A1 /* Info.plist */ = {isa =
PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist;
sourceTree = "<group>"; };
4EB094EC298979620043A8A1 /* TalerWallet1App.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= TalerWallet1App.swift; sourceTree = "<group>"; };
4EB094EF298979D30043A8A1 /* Assets.xcassets */ = {isa =
PBXFileReference; lastKnownFileType = folder.assetcatalog; path =
Assets.xcassets; sourceTree = "<group>"; };
4EB094F329897A510043A8A1 /* Preview Assets.xcassets */ = {isa =
PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview
Assets.xcassets"; sourceTree = "<group>"; };
@@ -253,12 +377,24 @@
4EEC157929F9427F00D46A03 /* QRSheet.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= QRSheet.swift; sourceTree = "<group>"; };
4EF840A62A0B85F400EE0D47 /* CopyShare.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= CopyShare.swift; sourceTree = "<group>"; };
AB710490285995B6008B04F0 /* taler-swift */ = {isa =
PBXFileReference; lastKnownFileType = text; path = "taler-swift"; sourceTree =
SOURCE_ROOT; };
- D14AFD1D24D232B300C51073 /* GNU Taler.app */ = {isa =
PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0;
path = "GNU Taler.app"; sourceTree = BUILT_PRODUCTS_DIR; };
+ D14AFD1D24D232B300C51073 /* Taler_Wallet.app */ = {isa =
PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0;
path = Taler_Wallet.app; sourceTree = BUILT_PRODUCTS_DIR; };
D14AFD3324D232B500C51073 /* TalerTests.xctest */ = {isa =
PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path
= TalerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
D14AFD3E24D232B500C51073 /* TalerUITests.xctest */ = {isa =
PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path
= TalerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
+ 4E3EAE762A990778009F1BE8 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 4E3EAE772A990778009F1BE8 /* AnyCodable in
Frameworks */,
+ 4E3EAE782A990778009F1BE8 /* SymLog in
Frameworks */,
+ 4E3EAE792A990778009F1BE8 /*
FTalerWalletcore.framework in Frameworks */,
+ 4E3EAE7A2A990778009F1BE8 /* taler-swift in
Frameworks */,
+ 4E3EAE7B2A990778009F1BE8 /* CodeScanner in
Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
D14AFD1A24D232B300C51073 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -307,6 +443,26 @@
path = P2P_Sheets;
sourceTree = "<group>";
};
+ 4E3EAE992AA12467009F1BE8 /* Nunito */ = {
+ isa = PBXGroup;
+ children = (
+ 4E3EAE9A2AA12467009F1BE8 /* Nunito-Regular.ttf
*/,
+ 4E3EAE9B2AA12467009F1BE8 /* Nunito-Bold.ttf */,
+ 4E3EAEA12AA12582009F1BE8 /*
Nunito-BoldItalic.ttf */,
+ 4E3EAEA02AA12582009F1BE8 /* Nunito-Italic.ttf
*/,
+ );
+ path = Nunito;
+ sourceTree = "<group>";
+ };
+ 4E3EAEA62AA12750009F1BE8 /* Fonts */ = {
+ isa = PBXGroup;
+ children = (
+ 4E8C171B2A6509BB005B2392 /*
Atkinson-Hyperlegible */,
+ 4E3EAE992AA12467009F1BE8 /* Nunito */,
+ );
+ path = Fonts;
+ sourceTree = "<group>";
+ };
4E7CFD362A532C7A00CBAFF3 /* TestFlight */ = {
isa = PBXGroup;
children = (
@@ -319,12 +475,12 @@
isa = PBXGroup;
children = (
4E8C171C2A6509BB005B2392 /*
Atkinson-Hyperlegible-Regular-102.otf */,
- 4E8C171D2A6509BB005B2392 /*
Atkinson-Hyperlegible-Italic-102.otf */,
4E8C171E2A6509BB005B2392 /*
Atkinson-Hyperlegible-Bold-102.otf */,
4E8C171F2A6509BB005B2392 /*
Atkinson-Hyperlegible-BoldItalic-102.otf */,
+ 4E8C171D2A6509BB005B2392 /*
Atkinson-Hyperlegible-Italic-102.otf */,
);
path = "Atkinson-Hyperlegible";
- sourceTree = SOURCE_ROOT;
+ sourceTree = "<group>";
};
4EB094EE298979840043A8A1 /* TalerWallet1 */ = {
isa = PBXGroup;
@@ -337,7 +493,7 @@
4EB0950C2989CB9A0043A8A1 /* Quickjs */,
4EB094EF298979D30043A8A1 /* Assets.xcassets */,
4E2254942A822B8100E41D29 /* Sounds */,
- 4E8C171B2A6509BB005B2392 /*
Atkinson-Hyperlegible */,
+ 4E3EAEA62AA12750009F1BE8 /* Fonts */,
4E363CBF2A24754200D7E98C /* Settings.bundle */,
4EB094F529897A9A0043A8A1 /* Preview Content */,
);
@@ -380,9 +536,10 @@
4E16E12229F3BB99008B9C86 /*
CurrencyFormatter.swift */,
4EAD117529F672FA008EDD0B /*
KeyboardResponder.swift */,
4E363CC12A2621C200D7E98C /*
LocalizedAlertError.swift */,
- 4E578E912A481D8600F21F1C /* playSound.swift */,
+ 4E578E912A481D8600F21F1C /*
Controller+playSound.swift */,
4EB095062989CB7C0043A8A1 /* TalerDater.swift */,
4EB095072989CB7C0043A8A1 /* TalerStrings.swift
*/,
+ 4E3EAE8B2AA0933C009F1BE8 /* Font+Taler.swift */,
4EB095082989CB7C0043A8A1 /*
View+dismissTop.swift */,
4E3B4BC62A429F2A00CC88B8 /*
View+Notification.swift */,
4E363CBB2A237E0900D7E98C /* URL+id+iban.swift
*/,
@@ -582,8 +739,6 @@
children = (
4E7CFD362A532C7A00CBAFF3 /* TestFlight */,
4EB094EE298979840043A8A1 /* TalerWallet1 */,
- 4EB094E129896FED0043A8A1 /* Info.plist */,
- 4E3AE7EF29A7E8F40070BEC4 /* Taler
Wallet.entitlements */,
AB710490285995B6008B04F0 /* taler-swift */,
D14AFD3624D232B500C51073 /* TalerTests */,
D14AFD4124D232B500C51073 /* TalerUITests */,
@@ -595,7 +750,8 @@
D14AFD1E24D232B300C51073 /* Products */ = {
isa = PBXGroup;
children = (
- D14AFD1D24D232B300C51073 /* GNU Taler.app */,
+ 4E3EAE892A990778009F1BE8 /* GNU_Taler.app */,
+ D14AFD1D24D232B300C51073 /* Taler_Wallet.app */,
D14AFD3324D232B500C51073 /* TalerTests.xctest
*/,
D14AFD3E24D232B500C51073 /* TalerUITests.xctest
*/,
);
@@ -624,6 +780,30 @@
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
+ 4E3EAE142A990778009F1BE8 /* GNU_Taler */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 4E3EAE862A990778009F1BE8 /*
Build configuration list for PBXNativeTarget "GNU_Taler" */;
+ buildPhases = (
+ 4E3EAE1C2A990778009F1BE8 /* Sources */,
+ 4E3EAE762A990778009F1BE8 /* Frameworks */,
+ 4E3EAE7C2A990778009F1BE8 /* CopyFiles */,
+ 4E3EAE7D2A990778009F1BE8 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = GNU_Taler;
+ packageProductDependencies = (
+ 4E3EAE152A990778009F1BE8 /* taler-swift */,
+ 4E3EAE162A990778009F1BE8 /* AnyCodable */,
+ 4E3EAE182A990778009F1BE8 /* SymLog */,
+ 4E3EAE1A2A990778009F1BE8 /* CodeScanner */,
+ );
+ productName = Taler;
+ productReference = 4E3EAE892A990778009F1BE8 /*
GNU_Taler.app */;
+ productType = "com.apple.product-type.application";
+ };
D14AFD1C24D232B300C51073 /* Taler_Wallet */ = {
isa = PBXNativeTarget;
buildConfigurationList = D14AFD4724D232B500C51073 /*
Build configuration list for PBXNativeTarget "Taler_Wallet" */;
@@ -645,7 +825,7 @@
4EEC157529F8ECBF00D46A03 /* CodeScanner */,
);
productName = Taler;
- productReference = D14AFD1D24D232B300C51073 /* GNU
Taler.app */;
+ productReference = D14AFD1D24D232B300C51073 /*
Taler_Wallet.app */;
productType = "com.apple.product-type.application";
};
D14AFD3224D232B500C51073 /* TalerTests */ = {
@@ -728,6 +908,7 @@
projectDirPath = "";
projectRoot = "";
targets = (
+ 4E3EAE142A990778009F1BE8 /* GNU_Taler */,
D14AFD1C24D232B300C51073 /* Taler_Wallet */,
D14AFD3224D232B500C51073 /* TalerTests */,
D14AFD3D24D232B500C51073 /* TalerUITests */,
@@ -736,17 +917,40 @@
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
+ 4E3EAE7D2A990778009F1BE8 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 4E3EAE7E2A990778009F1BE8 /* Settings.bundle in
Resources */,
+ 4E3EAE842A990778009F1BE8 /* Assets.xcassets in
Resources */,
+ 4E3EAE7F2A990778009F1BE8 /*
Atkinson-Hyperlegible-Regular-102.otf in Resources */,
+ 4E3EAE802A990778009F1BE8 /*
Atkinson-Hyperlegible-Bold-102.otf in Resources */,
+ 4E3EAE812A990778009F1BE8 /*
Atkinson-Hyperlegible-BoldItalic-102.otf in Resources */,
+ 4E3EAE832A990778009F1BE8 /*
Atkinson-Hyperlegible-Italic-102.otf in Resources */,
+ 4E3EAE9C2AA12467009F1BE8 /* Nunito-Regular.ttf
in Resources */,
+ 4E3EAE9E2AA12467009F1BE8 /* Nunito-Bold.ttf in
Resources */,
+ 4E3EAEA42AA12582009F1BE8 /*
Nunito-BoldItalic.ttf in Resources */,
+ 4E3EAEA22AA12582009F1BE8 /* Nunito-Italic.ttf
in Resources */,
+ 4E3EAE822A990778009F1BE8 /*
payment_received.m4a in Resources */,
+ 4E3EAE852A990778009F1BE8 /* payment_sent.m4a in
Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
D14AFD1B24D232B300C51073 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
4E363CC02A24754200D7E98C /* Settings.bundle in
Resources */,
+ 4EB094F0298979D30043A8A1 /* Assets.xcassets in
Resources */,
4E8C17202A6509BB005B2392 /*
Atkinson-Hyperlegible-Regular-102.otf in Resources */,
4E8C17222A6509BB005B2392 /*
Atkinson-Hyperlegible-Bold-102.otf in Resources */,
4E8C17232A6509BB005B2392 /*
Atkinson-Hyperlegible-BoldItalic-102.otf in Resources */,
- 4E2254972A822B8100E41D29 /*
payment_received.m4a in Resources */,
4E8C17212A6509BB005B2392 /*
Atkinson-Hyperlegible-Italic-102.otf in Resources */,
- 4EB094F0298979D30043A8A1 /* Assets.xcassets in
Resources */,
+ 4E3EAE9D2AA12467009F1BE8 /* Nunito-Regular.ttf
in Resources */,
+ 4E3EAE9F2AA12467009F1BE8 /* Nunito-Bold.ttf in
Resources */,
+ 4E3EAEA52AA12582009F1BE8 /*
Nunito-BoldItalic.ttf in Resources */,
+ 4E3EAEA32AA12582009F1BE8 /* Nunito-Italic.ttf
in Resources */,
+ 4E2254972A822B8100E41D29 /*
payment_received.m4a in Resources */,
4E2254982A822B8100E41D29 /* payment_sent.m4a in
Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -768,6 +972,102 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
+ 4E3EAE1C2A990778009F1BE8 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 4E3EAE1D2A990778009F1BE8 /* SelectDays.swift in
Sources */,
+ 4E3EAE1E2A990778009F1BE8 /* AgePicker.swift in
Sources */,
+ 4E3EAE1F2A990778009F1BE8 /* Controller.swift in
Sources */,
+ 4E3EAE202A990778009F1BE8 /* MainView.swift in
Sources */,
+ 4E3EAE212A990778009F1BE8 /* Buttons.swift in
Sources */,
+ 4E3EAE222A990778009F1BE8 /*
TransactionButton.swift in Sources */,
+ 4E3EAE232A990778009F1BE8 /*
BalancesSectionView.swift in Sources */,
+ 4E3EAE242A990778009F1BE8 /*
QRGeneratorView.swift in Sources */,
+ 4E3EAE252A990778009F1BE8 /*
WithdrawAcceptDone.swift in Sources */,
+ 4E3EAE262A990778009F1BE8 /* Transaction.swift
in Sources */,
+ 4E3EAE272A990778009F1BE8 /* WalletColors.swift
in Sources */,
+ 4E3EAE282A990778009F1BE8 /*
BalancesListView.swift in Sources */,
+ 4E3EAE292A990778009F1BE8 /*
WalletBackendError.swift in Sources */,
+ 4E3EAE2A2A990778009F1BE8 /*
PendingRowView.swift in Sources */,
+ 4E3EAE2B2A990778009F1BE8 /* LoadingView.swift
in Sources */,
+ 4E3EAE8C2AA0933C009F1BE8 /* Font+Taler.swift in
Sources */,
+ 4E3EAE2C2A990778009F1BE8 /*
ManualWithdraw.swift in Sources */,
+ 4E3EAE2D2A990778009F1BE8 /*
Model+Exchange.swift in Sources */,
+ 4E3EAE2E2A990778009F1BE8 /*
QRCodeDetailView.swift in Sources */,
+ 4E3EAE2F2A990778009F1BE8 /*
TransactionsEmptyView.swift in Sources */,
+ 4E3EAE302A990778009F1BE8 /*
UncompletedRowView.swift in Sources */,
+ 4E3EAE312A990778009F1BE8 /* SendAmount.swift in
Sources */,
+ 4E3EAE332A990778009F1BE8 /*
EqualIconWidthDomain.swift in Sources */,
+ 4E3EAE342A990778009F1BE8 /*
SuperScriptDigits.swift in Sources */,
+ 4E3EAE352A990778009F1BE8 /* P2pPayURIView.swift
in Sources */,
+ 4E3EAE362A990778009F1BE8 /* Model+Payment.swift
in Sources */,
+ 4E3EAE372A990778009F1BE8 /* SettingsView.swift
in Sources */,
+ 4E3EAE382A990778009F1BE8 /* PaymentView.swift
in Sources */,
+ 4E3EAE392A990778009F1BE8 /*
WithdrawURIView.swift in Sources */,
+ 4E3EAE3A2A990778009F1BE8 /* CopyShare.swift in
Sources */,
+ 4E3EAE3B2A990778009F1BE8 /*
TalerWallet1App.swift in Sources */,
+ 4E3EAE3C2A990778009F1BE8 /*
WithdrawTOSView.swift in Sources */,
+ 4E3EAE3D2A990778009F1BE8 /* Sheet.swift in
Sources */,
+ 4E3EAE3E2A990778009F1BE8 /* ManualDetails.swift
in Sources */,
+ 4E3EAE3F2A990778009F1BE8 /*
View+dismissTop.swift in Sources */,
+ 4E3EAE402A990778009F1BE8 /*
TransactionsListView.swift in Sources */,
+ 4E3EAE412A990778009F1BE8 /*
WalletBackendRequest.swift in Sources */,
+ 4E3EAE422A990778009F1BE8 /*
KeyboardResponder.swift in Sources */,
+ 4E3EAE432A990778009F1BE8 /*
TransactionRowView.swift in Sources */,
+ 4E3EAE442A990778009F1BE8 /*
PublicConstants.swift in Sources */,
+ 4E3EAE452A990778009F1BE8 /* SendDone.swift in
Sources */,
+ 4E3EAE462A990778009F1BE8 /*
TextFieldAlert.swift in Sources */,
+ 4E3EAE472A990778009F1BE8 /*
QuiteSomeCoins.swift in Sources */,
+ 4E3EAE482A990778009F1BE8 /*
PayTemplateView.swift in Sources */,
+ 4E3EAE492A990778009F1BE8 /*
ManualWithdrawDone.swift in Sources */,
+ 4E3EAE4A2A990778009F1BE8 /*
PaymentPurpose.swift in Sources */,
+ 4E3EAE4B2A990778009F1BE8 /* ShareSheet.swift in
Sources */,
+ 4E3EAE4C2A990778009F1BE8 /* AmountView.swift in
Sources */,
+ 4E3EAE4D2A990778009F1BE8 /* P2pAcceptDone.swift
in Sources */,
+ 4E3EAE4E2A990778009F1BE8 /*
AnyTransition+backslide.swift in Sources */,
+ 4E3EAE4F2A990778009F1BE8 /*
BalanceRowButtons.swift in Sources */,
+ 4E3EAE502A990778009F1BE8 /*
Model+Transactions.swift in Sources */,
+ 4E3EAE512A990778009F1BE8 /*
Controller+playSound.swift in Sources */,
+ 4E3EAE522A990778009F1BE8 /*
WalletEmptyView.swift in Sources */,
+ 4E3EAE532A990778009F1BE8 /*
CurrencyFormatter.swift in Sources */,
+ 4E3EAE542A990778009F1BE8 /* TalerDater.swift in
Sources */,
+ 4E3EAE552A990778009F1BE8 /*
Model+Balances.swift in Sources */,
+ 4E3EAE562A990778009F1BE8 /*
LocalizedAlertError.swift in Sources */,
+ 4E3EAE572A990778009F1BE8 /* quickjs.swift in
Sources */,
+ 4E3EAE582A990778009F1BE8 /* CurrencyField.swift
in Sources */,
+ 4E3EAE592A990778009F1BE8 /*
Model+Settings.swift in Sources */,
+ 4E3EAE5A2A990778009F1BE8 /* ErrorView.swift in
Sources */,
+ 4E3EAE5B2A990778009F1BE8 /*
View+Notification.swift in Sources */,
+ 4E3EAE5C2A990778009F1BE8 /* Model+Pending.swift
in Sources */,
+ 4E3EAE5D2A990778009F1BE8 /*
ExchangeListView.swift in Sources */,
+ 4E3EAE5E2A990778009F1BE8 /*
WithdrawProgressView.swift in Sources */,
+ 4E3EAE5F2A990778009F1BE8 /* QRSheet.swift in
Sources */,
+ 4E3EAE602A990778009F1BE8 /*
P2pReceiveURIView.swift in Sources */,
+ 4E3EAE612A990778009F1BE8 /* ListStyle.swift in
Sources */,
+ 4E3EAE622A990778009F1BE8 /*
TransactionDetailView.swift in Sources */,
+ 4E3EAE632A990778009F1BE8 /* WalletCore.swift in
Sources */,
+ 4E3EAE642A990778009F1BE8 /*
LaunchAnimationView.swift in Sources */,
+ 4E3EAE652A990778009F1BE8 /* SideBarView.swift
in Sources */,
+ 4E3EAE662A990778009F1BE8 /* PendingOpView.swift
in Sources */,
+ 4E3EAE672A990778009F1BE8 /*
PendingOpsListView.swift in Sources */,
+ 4E3EAE682A990778009F1BE8 /* WalletModel.swift
in Sources */,
+ 4E3EAE692A990778009F1BE8 /* URLSheet.swift in
Sources */,
+ 4E3EAE6A2A990778009F1BE8 /* ThreeAmounts.swift
in Sources */,
+ 4E3EAE6B2A990778009F1BE8 /*
Model+Withdraw.swift in Sources */,
+ 4E3EAE6C2A990778009F1BE8 /*
ExchangeSectionView.swift in Sources */,
+ 4E3EAE6D2A990778009F1BE8 /* SendPurpose.swift
in Sources */,
+ 4E3EAE6E2A990778009F1BE8 /* Model+P2P.swift in
Sources */,
+ 4E3EAE6F2A990778009F1BE8 /* TalerStrings.swift
in Sources */,
+ 4E3EAE702A990778009F1BE8 /*
CurrencyInputView.swift in Sources */,
+ 4E3EAE712A990778009F1BE8 /* URL+id+iban.swift
in Sources */,
+ 4E3EAE722A990778009F1BE8 /*
RequestPayment.swift in Sources */,
+ 4E3EAE732A990778009F1BE8 /* SettingsItem.swift
in Sources */,
+ 4E3EAE742A990778009F1BE8 /*
BalanceRowView.swift in Sources */,
+ 4E3EAE752A990778009F1BE8 /* DebugViewC.swift in
Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
D14AFD1924D232B300C51073 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -787,6 +1087,7 @@
4EB095212989CBCB0043A8A1 /*
WalletBackendError.swift in Sources */,
4EB0955E2989CBFE0043A8A1 /*
PendingRowView.swift in Sources */,
4EB0956D2989CBFE0043A8A1 /* LoadingView.swift
in Sources */,
+ 4E3EAE8D2AA0933C009F1BE8 /* Font+Taler.swift in
Sources */,
4E50B3502A1BEE8000F9F01C /*
ManualWithdraw.swift in Sources */,
4E3B4BC92A42BC4800CC88B8 /*
Model+Exchange.swift in Sources */,
4E5A88F52A38A4FD00072618 /*
QRCodeDetailView.swift in Sources */,
@@ -823,7 +1124,7 @@
4E363CBE2A23CB2100D7E98C /*
AnyTransition+backslide.swift in Sources */,
4EB065442A4CD1A80039B91D /*
BalanceRowButtons.swift in Sources */,
4EB095592989CBFE0043A8A1 /*
Model+Transactions.swift in Sources */,
- 4E578E922A481D8600F21F1C /* playSound.swift in
Sources */,
+ 4E578E922A481D8600F21F1C /*
Controller+playSound.swift in Sources */,
4EB0955F2989CBFE0043A8A1 /*
WalletEmptyView.swift in Sources */,
4E16E12329F3BB99008B9C86 /*
CurrencyFormatter.swift in Sources */,
4EB095092989CB7C0043A8A1 /* TalerDater.swift in
Sources */,
@@ -898,6 +1199,85 @@
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
+ 4E3EAE872A990778009F1BE8 /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS =
"$(TARGET_NAME).entitlements";
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 18;
+ DEVELOPMENT_TEAM = GUDDQ9428Y;
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = "$(TARGET_NAME) Info.plist";
+ INFOPLIST_KEY_CFBundleDisplayName = "GNU Taler";
+ INFOPLIST_KEY_LSApplicationCategoryType =
"public.app-category.finance";
+ INFOPLIST_KEY_NSCameraUsageDescription = "Scan
QR Codes";
+ INFOPLIST_KEY_NSHumanReadableCopyright = "©
Taler-Systems.com";
+
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
+ INFOPLIST_KEY_UILaunchScreen_Generation = YES;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations
= UIInterfaceOrientationPortrait;
+
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad =
"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 0.9.3;
+ PRODUCT_BUNDLE_IDENTIFIER =
"com.taler-systems.talerwallet-1";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SUPPORTED_PLATFORMS = "iphoneos
iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ TARGETED_DEVICE_FAMILY = 1;
+ VALIDATE_WORKSPACE = YES;
+ };
+ name = Debug;
+ };
+ 4E3EAE882A990778009F1BE8 /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME
= AccentColor;
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_ENTITLEMENTS =
"$(TARGET_NAME).entitlements";
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 18;
+ DEVELOPMENT_TEAM = GUDDQ9428Y;
+ ENABLE_PREVIEWS = YES;
+ GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_FILE = "$(TARGET_NAME) Info.plist";
+ INFOPLIST_KEY_CFBundleDisplayName = "GNU Taler";
+ INFOPLIST_KEY_LSApplicationCategoryType =
"public.app-category.finance";
+ INFOPLIST_KEY_NSCameraUsageDescription = "Scan
QR Codes";
+ INFOPLIST_KEY_NSHumanReadableCopyright = "©
Taler-Systems.com";
+
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
+ INFOPLIST_KEY_UILaunchScreen_Generation = YES;
+ INFOPLIST_KEY_UISupportedInterfaceOrientations
= UIInterfaceOrientationPortrait;
+
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad =
"UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
+ IPHONEOS_DEPLOYMENT_TARGET = 15.0;
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ );
+ MARKETING_VERSION = 0.9.3;
+ PRODUCT_BUNDLE_IDENTIFIER =
"com.taler-systems.talerwallet-1";
+ PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SUPPORTED_PLATFORMS = "iphoneos
iphonesimulator";
+ SUPPORTS_MACCATALYST = NO;
+ SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+ SWIFT_EMIT_LOC_STRINGS = YES;
+ TARGETED_DEVICE_FAMILY = 1;
+ VALIDATE_WORKSPACE = YES;
+ };
+ name = Release;
+ };
D14AFD4524D232B500C51073 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -1018,16 +1398,15 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
- CODE_SIGN_ENTITLEMENTS = "GNU
Taler.entitlements";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone
Developer";
- CODE_SIGN_STYLE = Manual;
- CURRENT_PROJECT_VERSION = 17;
- DEVELOPMENT_TEAM = "";
- "DEVELOPMENT_TEAM[sdk=iphoneos*]" = GUDDQ9428Y;
+ CODE_SIGN_ENTITLEMENTS =
"$(TARGET_NAME).entitlements";
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 18;
+ DEVELOPMENT_TEAM = GUDDQ9428Y;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_FILE = Info.plist;
- INFOPLIST_KEY_CFBundleDisplayName = "GNU Taler";
+ INFOPLIST_FILE = "$(TARGET_NAME) Info.plist";
+ INFOPLIST_KEY_CFBundleDisplayName = "Taler
Wallet";
INFOPLIST_KEY_LSApplicationCategoryType =
"public.app-category.finance";
INFOPLIST_KEY_NSCameraUsageDescription = "Scan
QR Codes";
INFOPLIST_KEY_NSHumanReadableCopyright = "©
Taler-Systems.com";
@@ -1041,10 +1420,9 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.9.3;
- PRODUCT_BUNDLE_IDENTIFIER =
"com.taler-systems.talerwallet-1";
- PRODUCT_NAME = "GNU Taler";
+ PRODUCT_BUNDLE_IDENTIFIER =
"com.taler-systems.talerwallet-2";
+ PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
- "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]"
= 230701iOS;
SUPPORTED_PLATFORMS = "iphoneos
iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@@ -1060,16 +1438,15 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME
= AccentColor;
CLANG_ENABLE_MODULES = YES;
- CODE_SIGN_ENTITLEMENTS = "GNU
Taler.entitlements";
- "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone
Distribution";
- CODE_SIGN_STYLE = Manual;
- CURRENT_PROJECT_VERSION = 17;
- DEVELOPMENT_TEAM = "";
- "DEVELOPMENT_TEAM[sdk=iphoneos*]" = GUDDQ9428Y;
+ CODE_SIGN_ENTITLEMENTS =
"$(TARGET_NAME).entitlements";
+ CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_STYLE = Automatic;
+ CURRENT_PROJECT_VERSION = 18;
+ DEVELOPMENT_TEAM = GUDDQ9428Y;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
- INFOPLIST_FILE = Info.plist;
- INFOPLIST_KEY_CFBundleDisplayName = "GNU Taler";
+ INFOPLIST_FILE = "$(TARGET_NAME) Info.plist";
+ INFOPLIST_KEY_CFBundleDisplayName = "Taler
Wallet";
INFOPLIST_KEY_LSApplicationCategoryType =
"public.app-category.finance";
INFOPLIST_KEY_NSCameraUsageDescription = "Scan
QR Codes";
INFOPLIST_KEY_NSHumanReadableCopyright = "©
Taler-Systems.com";
@@ -1083,10 +1460,9 @@
"@executable_path/Frameworks",
);
MARKETING_VERSION = 0.9.3;
- PRODUCT_BUNDLE_IDENTIFIER =
"com.taler-systems.talerwallet-1";
- PRODUCT_NAME = "GNU Taler";
+ PRODUCT_BUNDLE_IDENTIFIER =
"com.taler-systems.talerwallet-2";
+ PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
- "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]"
= iOS_Distribution_230606;
SUPPORTED_PLATFORMS = "iphoneos
iphonesimulator";
SUPPORTS_MACCATALYST = NO;
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
@@ -1192,6 +1568,15 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
+ 4E3EAE862A990778009F1BE8 /* Build configuration list for
PBXNativeTarget "GNU_Taler" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 4E3EAE872A990778009F1BE8 /* Debug */,
+ 4E3EAE882A990778009F1BE8 /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
D14AFD1824D232B300C51073 /* Build configuration list for
PBXProject "TalerWallet" */ = {
isa = XCConfigurationList;
buildConfigurations = (
@@ -1231,6 +1616,30 @@
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
+ 4E3EAE172A990778009F1BE8 /* XCRemoteSwiftPackageReference
"AnyCodable" */ = {
+ isa = XCRemoteSwiftPackageReference;
+ repositoryURL =
"https://github.com/Flight-School/AnyCodable";
+ requirement = {
+ kind = upToNextMajorVersion;
+ minimumVersion = 0.6.5;
+ };
+ };
+ 4E3EAE192A990778009F1BE8 /* XCRemoteSwiftPackageReference
"SymLog" */ = {
+ isa = XCRemoteSwiftPackageReference;
+ repositoryURL = "https://github.com/Fesh-com/SymLog";
+ requirement = {
+ kind = upToNextMajorVersion;
+ minimumVersion = 0.1.0;
+ };
+ };
+ 4E3EAE1B2A990778009F1BE8 /* XCRemoteSwiftPackageReference
"CodeScanner" */ = {
+ isa = XCRemoteSwiftPackageReference;
+ repositoryURL =
"https://github.com/twostraws/CodeScanner";
+ requirement = {
+ kind = upToNextMajorVersion;
+ minimumVersion = 2.0.0;
+ };
+ };
4EB094FB29897D280043A8A1 /* XCRemoteSwiftPackageReference
"SymLog" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/Fesh-com/SymLog";
@@ -1258,6 +1667,25 @@
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
+ 4E3EAE152A990778009F1BE8 /* taler-swift */ = {
+ isa = XCSwiftPackageProductDependency;
+ productName = "taler-swift";
+ };
+ 4E3EAE162A990778009F1BE8 /* AnyCodable */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 4E3EAE172A990778009F1BE8 /*
XCRemoteSwiftPackageReference "AnyCodable" */;
+ productName = AnyCodable;
+ };
+ 4E3EAE182A990778009F1BE8 /* SymLog */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 4E3EAE192A990778009F1BE8 /*
XCRemoteSwiftPackageReference "SymLog" */;
+ productName = SymLog;
+ };
+ 4E3EAE1A2A990778009F1BE8 /* CodeScanner */ = {
+ isa = XCSwiftPackageProductDependency;
+ package = 4E3EAE1B2A990778009F1BE8 /*
XCRemoteSwiftPackageReference "CodeScanner" */;
+ productName = CodeScanner;
+ };
4EB094FC29897D280043A8A1 /* SymLog */ = {
isa = XCSwiftPackageProductDependency;
package = 4EB094FB29897D280043A8A1 /*
XCRemoteSwiftPackageReference "SymLog" */;
diff --git a/TalerWallet1/Backend/Transaction.swift
b/TalerWallet1/Backend/Transaction.swift
index ffbdd38..7f2aac5 100644
--- a/TalerWallet1/Backend/Transaction.swift
+++ b/TalerWallet1/Backend/Transaction.swift
@@ -166,13 +166,13 @@ struct TransactionCommon: Decodable {
comment: "TransactionType")
case .reward: return String(localized: "Reward",
comment: "TransactionType")
- case .peerPushDebit: return String(localized: "P2P Send",
+ case .peerPushDebit: return String(localized: "Send Money",
comment: "TransactionType,
send coins to another wallet")
- case .scanPushCredit: return String(localized: "P2P Receive",
+ case .scanPushCredit: return String(localized: "Receive Money",
comment: "TransactionType,
scan to receive coins sent from another wallet")
- case .peerPullCredit: return String(localized: "P2P Invoice",
+ case .peerPullCredit: return String(localized: "Request Money",
// Invoice?
comment: "TransactionType,
send invoice to another wallet")
- case .scanPullDebit: return String(localized: "P2P Payment",
+ case .scanPullDebit: return String(localized: "Pay Request",
// Pay Invoice is the same as Payment
comment: "TransactionType,
scan invoice to pay to another wallet")
}
}
diff --git a/TalerWallet1/Controllers/Controller.swift
b/TalerWallet1/Controllers/Controller.swift
index d2d3c30..0dbd42c 100644
--- a/TalerWallet1/Controllers/Controller.swift
+++ b/TalerWallet1/Controllers/Controller.swift
@@ -33,22 +33,29 @@ class Controller: ObservableObject {
@Published var backendState: BackendState = .none // only used for
launch animation
@AppStorage("playSounds") var playSounds: Int = 0 // extension
mustn't define this, so it must be here
+ @AppStorage("talerFont") var talerFont: Int = 0 // extension
mustn't define this, so it must be here
let logger = Logger (subsystem: "net.taler.gnu", category: "Controller")
let player = AVQueuePlayer()
var messageForSheet: String? = nil
init() {
+// for family in UIFont.familyNames {
+// print(family)
+// for names in UIFont.fontNames(forFamilyName: family) {
+// print("== \(names)")
+// }
+// }
backendState = .instantiated
}
@MainActor
- func initWalletCore(_ model: WalletModel)
+ func initWalletCore(_ model: WalletModel, sqlite3: Bool)
async throws {
if backendState == .instantiated {
backendState = .initing
do {
- let versionInfo = try await model.initWalletCoreT()
+ let versionInfo = try await model.initWalletCoreT(sqlite3:
sqlite3)
WalletCore.shared.versionInfo = versionInfo
backendState = .ready // dismiss the
launch animation
} catch { // rethrows
diff --git a/TalerWallet1/Controllers/DebugViewC.swift
b/TalerWallet1/Controllers/DebugViewC.swift
index 4cd365c..89209f9 100644
--- a/TalerWallet1/Controllers/DebugViewC.swift
+++ b/TalerWallet1/Controllers/DebugViewC.swift
@@ -49,17 +49,23 @@ public let VIEW_DEPOSIT = VIEW_WITHDRAWAL + 10
// 40 Deposi
//public let VIEW_DEPOSIT_TOS // 41 -
user already accepted the ToS at withdrawal, invoice or receive
public let VIEW_DEPOSIT_ACCEPT = VIEW_DEPOSIT + 2 // 42
-// MARK: P2P Invoice (from Balances)
-// pull credit from another wallet ==> shows QR code to be scanned / link to
be sent by mail or messenger
-public let VIEW_INVOICE_P2P = VIEW_DEPOSIT + 10 // 50
Invoice Amount
-public let VIEW_INVOICE_TOS = VIEW_INVOICE_P2P + 1 // 51
Invoice ToS
-public let VIEW_INVOICE_PURPOSE = VIEW_INVOICE_TOS + 1 // 52
Invoice Purpose
-
// MARK: P2P Send Coins (from Balances)
// push debit to another wallet ==> shows QR code to be scanned / link to be
sent by mail or messenger
-public let VIEW_SEND_P2P = VIEW_INVOICE_P2P + 10 // 60 Send
Coins
-//public let VIEW_SEND_TOS // 61 -
user already accepted the ToS at withdrawal, invoice or receive
-public let VIEW_SEND_PURPOSE = VIEW_SEND_P2P + 2 // 62
+public let VIEW_SEND_P2P = VIEW_DEPOSIT + 10 // 50 Send
Coins
+//public let VIEW_SEND_TOS // 51 -
user already accepted the ToS at withdrawal, invoice or receive
+public let VIEW_SEND_PURPOSE = VIEW_SEND_P2P + 2 // 52
+
+// MARK: P2P Private Receive (from Balances)
+// pull credit from another wallet ==> shows QR code to be scanned / link to
be sent by mail or messenger
+public let VIEW_RECEIVE_P2P = VIEW_SEND_P2P + 10 // 60
Receive Amount
+public let VIEW_RECEIVE_TOS = VIEW_RECEIVE_P2P + 1 // 61
Receive ToS
+public let VIEW_RECEIVE_PURPOSE = VIEW_RECEIVE_TOS + 1 // 62
Receive Purpose
+
+// MARK: P2P Business Invoice (from Balances)
+// pull credit from another wallet ==> shows QR code to be scanned / link to
be sent by mail or messenger
+public let VIEW_INVOICE_P2P = VIEW_RECEIVE_P2P + 10 // 70
Invoice Amount
+public let VIEW_INVOICE_TOS = VIEW_INVOICE_P2P + 1 // 71
Invoice ToS
+public let VIEW_INVOICE_PURPOSE = VIEW_INVOICE_TOS + 1 // 72
Invoice Purpose
diff --git a/TalerWallet1/Controllers/TalerWallet1App.swift
b/TalerWallet1/Controllers/TalerWallet1App.swift
index bff3e7a..d46b6d3 100644
--- a/TalerWallet1/Controllers/TalerWallet1App.swift
+++ b/TalerWallet1/Controllers/TalerWallet1App.swift
@@ -27,6 +27,7 @@ struct TalerWallet1App: App {
private let model = WalletModel.shared
private let debugViewC = DebugViewC.shared
let logger = Logger (subsystem: "net.taler.gnu", category: "Main App")
+ let sqlite3 = true
// true = SQLITE3, false = JSON
func scheduleAppRefresh() {
let request = BGAppRefreshTaskRequest(identifier:
"net.taler.gnu.refresh")
@@ -45,7 +46,7 @@ struct TalerWallet1App: App {
/// we handle them in .onOpenURL in MainView.swift
.handlesExternalEvents(preferring: ["*"], allowing: ["*"])
.task {
- try! await controller.initWalletCore(model) // will
(and should) crash on failure
+ try! await controller.initWalletCore(model, sqlite3:
sqlite3) // will (and should) crash on failure
}
.onReceive(NotificationCenter.default.publisher(for:
UIApplication.didBecomeActiveNotification, object: nil)) { _ in
logger.log("❗️App Did Become Active")
diff --git a/Atkinson-Hyperlegible/Atkinson-Hyperlegible-Bold-102.otf
b/TalerWallet1/Fonts/Atkinson-Hyperlegible/Atkinson-Hyperlegible-Bold-102.otf
similarity index 100%
rename from Atkinson-Hyperlegible/Atkinson-Hyperlegible-Bold-102.otf
rename to
TalerWallet1/Fonts/Atkinson-Hyperlegible/Atkinson-Hyperlegible-Bold-102.otf
diff --git a/Atkinson-Hyperlegible/Atkinson-Hyperlegible-BoldItalic-102.otf
b/TalerWallet1/Fonts/Atkinson-Hyperlegible/Atkinson-Hyperlegible-BoldItalic-102.otf
similarity index 100%
rename from Atkinson-Hyperlegible/Atkinson-Hyperlegible-BoldItalic-102.otf
rename to
TalerWallet1/Fonts/Atkinson-Hyperlegible/Atkinson-Hyperlegible-BoldItalic-102.otf
diff --git
a/Atkinson-Hyperlegible/Atkinson-Hyperlegible-Font-License-2020-1104.pdf
b/TalerWallet1/Fonts/Atkinson-Hyperlegible/Atkinson-Hyperlegible-Font-License-2020-1104.pdf
similarity index 100%
rename from
Atkinson-Hyperlegible/Atkinson-Hyperlegible-Font-License-2020-1104.pdf
rename to
TalerWallet1/Fonts/Atkinson-Hyperlegible/Atkinson-Hyperlegible-Font-License-2020-1104.pdf
diff --git a/Atkinson-Hyperlegible/Atkinson-Hyperlegible-Italic-102.otf
b/TalerWallet1/Fonts/Atkinson-Hyperlegible/Atkinson-Hyperlegible-Italic-102.otf
similarity index 100%
rename from Atkinson-Hyperlegible/Atkinson-Hyperlegible-Italic-102.otf
rename to
TalerWallet1/Fonts/Atkinson-Hyperlegible/Atkinson-Hyperlegible-Italic-102.otf
diff --git a/Atkinson-Hyperlegible/Atkinson-Hyperlegible-Regular-102.otf
b/TalerWallet1/Fonts/Atkinson-Hyperlegible/Atkinson-Hyperlegible-Regular-102.otf
similarity index 100%
rename from Atkinson-Hyperlegible/Atkinson-Hyperlegible-Regular-102.otf
rename to
TalerWallet1/Fonts/Atkinson-Hyperlegible/Atkinson-Hyperlegible-Regular-102.otf
diff --git a/TalerWallet1/Fonts/Nunito/Nunito-Bold.ttf
b/TalerWallet1/Fonts/Nunito/Nunito-Bold.ttf
new file mode 100644
index 0000000..14be6b7
Binary files /dev/null and b/TalerWallet1/Fonts/Nunito/Nunito-Bold.ttf differ
diff --git a/TalerWallet1/Fonts/Nunito/Nunito-BoldItalic.ttf
b/TalerWallet1/Fonts/Nunito/Nunito-BoldItalic.ttf
new file mode 100644
index 0000000..ed63eb5
Binary files /dev/null and b/TalerWallet1/Fonts/Nunito/Nunito-BoldItalic.ttf
differ
diff --git a/TalerWallet1/Fonts/Nunito/Nunito-Italic.ttf
b/TalerWallet1/Fonts/Nunito/Nunito-Italic.ttf
new file mode 100644
index 0000000..5c906d4
Binary files /dev/null and b/TalerWallet1/Fonts/Nunito/Nunito-Italic.ttf differ
diff --git a/TalerWallet1/Fonts/Nunito/Nunito-Regular.ttf
b/TalerWallet1/Fonts/Nunito/Nunito-Regular.ttf
new file mode 100644
index 0000000..dfd0fcb
Binary files /dev/null and b/TalerWallet1/Fonts/Nunito/Nunito-Regular.ttf differ
diff --git a/TalerWallet1/Fonts/Nunito/OFL.txt
b/TalerWallet1/Fonts/Nunito/OFL.txt
new file mode 100644
index 0000000..9a43a3a
--- /dev/null
+++ b/TalerWallet1/Fonts/Nunito/OFL.txt
@@ -0,0 +1,93 @@
+Copyright 2014 The Nunito Project Authors
(https://github.com/googlefonts/nunito)
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded,
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/TalerWallet1/Helper/playSound.swift
b/TalerWallet1/Helper/Controller+playSound.swift
similarity index 96%
rename from TalerWallet1/Helper/playSound.swift
rename to TalerWallet1/Helper/Controller+playSound.swift
index 14f4077..31aca38 100644
--- a/TalerWallet1/Helper/playSound.swift
+++ b/TalerWallet1/Helper/Controller+playSound.swift
@@ -7,6 +7,7 @@ import AVFoundation
extension Controller {
+ /// 0 = failure, 1 = received, 2 = sent
func playSound(_ number: Int) {
var soundID: SystemSoundID = 0
if number > 9 {
diff --git a/TalerWallet1/Helper/CurrencyFormatter.swift
b/TalerWallet1/Helper/CurrencyFormatter.swift
index 42f391b..b997731 100644
--- a/TalerWallet1/Helper/CurrencyFormatter.swift
+++ b/TalerWallet1/Helper/CurrencyFormatter.swift
@@ -6,19 +6,22 @@ import Foundation
import taler_swift
public class CurrencyFormatter: NumberFormatter {
- public static var shared = CurrencyFormatter()
+ public static let shared = CurrencyFormatter()
- private override convenience init() {
- self.init(fractionDigits: 2)
- }
-
- public init(fractionDigits: Int) {
+ public override init() {
super.init()
- self.numberStyle = .decimal // currency could be changed by user
- self.minimumFractionDigits = fractionDigits
- self.maximumFractionDigits = fractionDigits
- self.usesGroupingSeparator = true
self.locale = Locale.current
+ self.numberStyle = .currency // currencyISOCode,
currencyPlural, (currencyAccounting)
+ self.numberStyle = .currencyISOCode
+ self.numberStyle = .spellOut
+
+// self.currencyCode = code // EUR, USD, JPY, GBP
+// self.minimumFractionDigits = fractionDigits
+// self.maximumFractionDigits = fractionDigits
+// self.groupingSize = 3 // thousands
+// self.groupingSeparator = ","
+// self.usesGroupingSeparator = true
+// self.decimalSeparator = "."
}
required init?(coder aDecoder: NSCoder) {
diff --git a/TalerWallet1/Helper/Font+Taler.swift
b/TalerWallet1/Helper/Font+Taler.swift
new file mode 100644
index 0000000..bc0511a
--- /dev/null
+++ b/TalerWallet1/Helper/Font+Taler.swift
@@ -0,0 +1,117 @@
+/*
+ * This file is part of GNU Taler, ©2022-23 Taler Systems S.A.
+ * See LICENSE.md
+ */
+import SwiftUI
+
+// Use enums for multiple font types and functions for the set custom font.
+
+fileprivate let ATKINSON = "AtkinsonHyperlegible-"
+fileprivate let NUNITO = "Nunito-"
+
+fileprivate let REGULAR = "Regular"
+fileprivate let BOLD = "Bold"
+fileprivate let BOLDITALIC = "BoldItalic"
+fileprivate let ITALIC = "Italic"
+
+extension Font {
+ enum TalerFont {
+ case regular
+ case bold
+ case boldItalic
+ case italic
+ case custom(String)
+
+ var value: String {
+ switch self {
+ case .regular: return REGULAR
+ case .bold: return BOLD
+ case .boldItalic: return BOLDITALIC
+ case .italic: return ITALIC
+
+ case .custom(let name):
+ return name
+ }
+ }
+ }
+
+ static func talerFont(_ type: TalerFont, size: CGFloat = 17) -> Font {
+ return .custom(type.value, size: size)
+ }
+
+ static func talerFontName(_ index: Int) -> String {
+ if index == 1 {
+ return ATKINSON
+ } else {
+ return NUNITO
+ }
+ }
+
+ static var talerLargeTitle: Font {
+ Controller.shared.talerFont == 0 ? .largeTitle :
+ .custom(talerFontName(Controller.shared.talerFont) + REGULAR,
size: 38, relativeTo: .largeTitle)
+ } // 34 -> 38
+ static var talerTitle: Font {
+ Controller.shared.talerFont == 0 ? .title :
+ .custom(talerFontName(Controller.shared.talerFont) + REGULAR,
size: 31, relativeTo: .title)
+ } // 28 -> 31
+ static var talerTitle2: Font {
+ Controller.shared.talerFont == 0 ? .title2 :
+ .custom(talerFontName(Controller.shared.talerFont) + REGULAR,
size: 25, relativeTo: .title2)
+ } // 22 -> 25
+ static var talerTitle3: Font {
+ Controller.shared.talerFont == 0 ? .title3 :
+ .custom(talerFontName(Controller.shared.talerFont) + REGULAR,
size: 23, relativeTo: .title3)
+ } // 20 -> 23
+ static var talerHeadline: Font {
+ Controller.shared.talerFont == 0 ? .headline :
+ .custom(talerFontName(Controller.shared.talerFont) + BOLD, size:
19, relativeTo: .headline)
+ } // 17 bold -> 19 bold
+ static var talerBody: Font {
+ Controller.shared.talerFont == 0 ? .body :
+ .custom(talerFontName(Controller.shared.talerFont) + REGULAR,
size: 19, relativeTo: .body)
+ } // 17 -> 19
+ static var talerCallout: Font {
+ Controller.shared.talerFont == 0 ? .callout :
+ .custom(talerFontName(Controller.shared.talerFont) + REGULAR,
size: 18, relativeTo: .callout)
+ } // 16 -> 18
+ static var talerSubheadline: Font {
+ Controller.shared.talerFont == 0 ? .subheadline :
+ .custom(talerFontName(Controller.shared.talerFont) + REGULAR,
size: 17, relativeTo: .subheadline)
+ } // 15 -> 17
+ static var talerFootnote: Font {
+ Controller.shared.talerFont == 0 ? .footnote :
+ .custom(talerFontName(Controller.shared.talerFont) + REGULAR,
size: 15, relativeTo: .footnote)
+ } // 13 -> 15
+ static var talerCaption: Font {
+ Controller.shared.talerFont == 0 ? .caption :
+ .custom(talerFontName(Controller.shared.talerFont) + REGULAR,
size: 13, relativeTo: .caption)
+ } // 12 -> 13
+ static var talerCaption2: Font {
+ Controller.shared.talerFont == 0 ? .caption2 :
+ .custom(talerFontName(Controller.shared.talerFont) + REGULAR,
size: 12, relativeTo: .caption2)
+ } // 11 -> 12
+}
+
+struct ContentViewFonts: View {
+ var body: some View {
+ VStack {
+ Text("Text demo")
+ .font(.talerFont(.regular))
+ Text("Text demo")
+ .font(.talerFont(.italic))
+ Text("Text demo")
+ .font(.talerFont(.bold))
+ Text("Text demo")
+ .font(.talerFont(.boldItalic))
+
+ Text("Text demo")
+ .font(.talerBody)
+
+ }
+ }
+}
+
+#Preview("Font View") {
+ ContentViewFonts()
+}
diff --git a/TalerWallet1/Model/Model+Exchange.swift
b/TalerWallet1/Model/Model+Exchange.swift
index 434311d..f52ee75 100644
--- a/TalerWallet1/Model/Model+Exchange.swift
+++ b/TalerWallet1/Model/Model+Exchange.swift
@@ -78,12 +78,6 @@ fileprivate struct AddExchange:
WalletBackendFormattedRequest {
}
/// A request to get info about a currency
-struct ScopedCurrencyInfo: Decodable {
- var decimalSeparator: String
- var numFractionalDigits: Int // 0 Yen, 2 €,$, 3 arabic
- var numTinyDigits: Int // SuperScriptDigits
- var isCurrencyNameLeading: Bool
-}
fileprivate struct GetScopedCurrencyInfo: WalletBackendFormattedRequest {
typealias Response = ScopedCurrencyInfo
diff --git a/TalerWallet1/Model/Model+P2P.swift
b/TalerWallet1/Model/Model+P2P.swift
index a671673..3cafc8a 100644
--- a/TalerWallet1/Model/Model+P2P.swift
+++ b/TalerWallet1/Model/Model+P2P.swift
@@ -99,7 +99,7 @@ extension WalletModel {
}
} // initiatePeerPushDebitM
// MARK: - PeerPullCredit
-/// Check fees before sending an invoice to another wallet
+/// Check fees before sending a request(invoice) to another wallet
struct CheckPeerPullCreditResponse: Codable {
let scopeInfo: ScopeInfo?
let exchangeBaseUrl: String?
@@ -131,7 +131,7 @@ extension WalletModel {
}
} // checkPeerPullCreditM
// - - - - - -
-/// Initiate an outgoing peer pull payment, send an invoice
+/// Initiate an outgoing peer pull payment, send a request(invoice)
struct InitiatePeerPullCreditResponse: Codable {
let talerUri: String
let transactionId: String
@@ -209,7 +209,7 @@ extension WalletModel {
}
} // acceptPeerPushCreditM
// MARK: - PeerPullDebit
-/// Prepare an incoming peer push invoice, pay coins
+/// Prepare an incoming peer push request(invoice), pay coins
struct PreparePeerPullDebitResponse: Codable {
let contractTerms: PeerContractTerms
let amountRaw: Amount
@@ -237,7 +237,7 @@ extension WalletModel {
}
} // preparePeerPullDebitM
// - - - - - -
-/// Confirm incoming peer push invoice and pay
+/// Confirm incoming peer push request(invoice) and pay
fileprivate struct ConfirmPeerPullDebit: WalletBackendFormattedRequest {
struct Response: Decodable {} // no result - getting no error back means
success
func operation() -> String { return "confirmPeerPullDebit" }
diff --git a/TalerWallet1/Model/Model+Payment.swift
b/TalerWallet1/Model/Model+Payment.swift
index 88872e2..b183d36 100644
--- a/TalerWallet1/Model/Model+Payment.swift
+++ b/TalerWallet1/Model/Model+Payment.swift
@@ -42,7 +42,7 @@ struct MerchantContractTerms: Codable {
let wireFeeAmortization: Int? // Share of the wire fee that must be
settled with one payment
let maxWireFee: Amount? // Maximum wire fee that the merchant
agrees to pay for
let minimumAge: Int?
- let extra: Extra // Extra data, interpreted by the
mechant only
+// let extra: Extra? // Extra data, interpreted by the
mechant only
// let auditors: [Auditor]?
enum CodingKeys: String, CodingKey {
@@ -73,7 +73,7 @@ struct MerchantContractTerms: Codable {
case wireFeeAmortization = "wire_fee_amortization"
case maxWireFee = "max_wire_fee"
case minimumAge = "minimum_age"
- case extra
+// case extra
// case auditors
}
}
diff --git a/TalerWallet1/Model/Model+Settings.swift
b/TalerWallet1/Model/Model+Settings.swift
index fb9a855..c34a3fa 100644
--- a/TalerWallet1/Model/Model+Settings.swift
+++ b/TalerWallet1/Model/Model+Settings.swift
@@ -8,7 +8,8 @@ import SymLog
fileprivate let ASYNCDELAY: UInt = 0 //set e.g to 6 or 9 seconds for
debugging
fileprivate let APIBASEURL = "/demobanks/default/access-api/"
-fileprivate let MERCHANTAUTHTOKEN = "secret-token:sandbox"
+//fileprivate let MERCHANTAUTHTOKEN = "secret-token:sandbox"
+fileprivate let MERCHANTAUTHTOKEN = "secret-token:secret"
// MARK: -
/// A request to add a test balance to the wallet.
diff --git a/TalerWallet1/Model/WalletModel.swift
b/TalerWallet1/Model/WalletModel.swift
index d5dc714..eea87e4 100644
--- a/TalerWallet1/Model/WalletModel.swift
+++ b/TalerWallet1/Model/WalletModel.swift
@@ -101,25 +101,45 @@ fileprivate struct InitRequest:
WalletBackendFormattedRequest {
extension WalletModel {
/// initalize Wallet-Core. Will do networking
- func initWalletCoreT() async throws -> VersionInfo {
+ func initWalletCoreT(sqlite3: Bool) async throws -> VersionInfo {
// T for any Thread
- let docPath = try docPath()
+ let docPath = try docPath(sqlite3: sqlite3)
let request = InitRequest(persistentStoragePath: docPath)
let response = try await sendRequest(request, 0) // no Delay
return response.versionInfo
}
- private func docPath () throws -> String {
- let documentUrls = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask)
- if (documentUrls.count > 0) {
- var storageDir = documentUrls[0]
- storageDir.appendPathComponent(DATABASE, isDirectory: false)
- storageDir.appendPathExtension("json")
- let docPath = storageDir.path
+ private func docPath (sqlite3: Bool) throws -> String {
+ if let documentsUrl = FileManager.default.urls(for:
.documentDirectory, in: .userDomainMask).first {
+ let documentUrl = documentsUrl.appendingPathComponent(DATABASE,
isDirectory: false)
+ .appendingPathExtension(sqlite3 ?
"sqlite3" : "json")
+ let docPath = documentUrl.path
logger.debug("\(docPath)")
return docPath
} else { // should never happen
- logger.error("documentURLs empty")
+ logger.error("No documentDirectory")
+ throw WalletBackendError.initializationError
+ }
+ }
+
+ private func cachePath () throws -> String {
+ let fileManager = FileManager.default
+ if let cachesURL = fileManager.urls(for: .cachesDirectory, in:
.userDomainMask).first {
+ let cacheURL = cachesURL.appendingPathComponent("cache.json")
+ let cachePath = cacheURL.path
+ logger.debug("\(cachePath)")
+
+ if !fileManager.fileExists(atPath: cachePath) {
+ let contents = Data() /// Initialize an empty `Data`.
+ fileManager.createFile(atPath: cachePath, contents: contents)
+ print("File \(cachePath) created")
+ } else {
+ print("File \(cachePath) already exists")
+ }
+
+ return cachePath
+ } else { // should never happen
+ logger.error("No cachesDirectory")
throw WalletBackendError.initializationError
}
}
diff --git a/TalerWallet1/Views/Balances/BalancesSectionView.swift
b/TalerWallet1/Views/Balances/BalancesSectionView.swift
index bc93f93..6423dbe 100644
--- a/TalerWallet1/Views/Balances/BalancesSectionView.swift
+++ b/TalerWallet1/Views/Balances/BalancesSectionView.swift
@@ -200,23 +200,23 @@ fileprivate struct NavigationLinksView : View {
NavigationLink(destination: LazyView {
SendAmount(amountAvailable: balance.available,
centsToTransfer: $centsToTransfer,
- summary: $summary)
+ summary: $summary)
}, tag: 1, selection: $buttonSelected
) { EmptyView() }.frame(width: 0).opacity(0).hidden() //
SendAmount
NavigationLink(destination: LazyView {
RequestPayment(scopeInfo: balance.scopeInfo,
- centsToTransfer: $centsToTransfer,
- summary: $summary)
+ centsToTransfer: $centsToTransfer,
+ summary: $summary)
}, tag: 2, selection: $buttonSelected
) { EmptyView() }.frame(width: 0).opacity(0).hidden() //
RequestPayment
NavigationLink(destination: LazyView {
TransactionsListView(navTitle: String(localized:
"Transactions"), currency: currency,
- transactions: completedTransactions,
- showUpDown: true,
- reloadAllAction: reloadAllAction,
- reloadOneAction: reloadOneAction)
+ transactions: completedTransactions,
+ showUpDown: true,
+ reloadAllAction: reloadAllAction,
+ reloadOneAction: reloadOneAction)
}, tag: 3, selection: $buttonSelected
) { EmptyView() }.frame(width: 0).opacity(0).hidden() //
TransactionsListView
diff --git a/TalerWallet1/Views/HelperViews/AmountView.swift
b/TalerWallet1/Views/HelperViews/AmountView.swift
index ceaa457..8702ac5 100644
--- a/TalerWallet1/Views/HelperViews/AmountView.swift
+++ b/TalerWallet1/Views/HelperViews/AmountView.swift
@@ -13,14 +13,16 @@ struct AmountView: View {
var body: some View {
VStack(alignment: .leading) {
Text(title)
+ .fixedSize(horizontal: false, vertical: true) // wrap in
scrollview
.multilineTextAlignment(.leading)
.font(.body)
HStack {
Spacer()
Text(value)
+ .fixedSize(horizontal: false, vertical: true) // wrap in
scrollview
.multilineTextAlignment(.center)
.font(large ? .title : .title2)
-// .fontWeight(large ? .medium : .regular) //
@available(iOS 16.0, *)
+// .fontWeight(large ? .medium : .regular) //
@available(iOS 16.0, *)
.foregroundColor(color)
.monospacedDigit()
Spacer()
diff --git a/TalerWallet1/Views/HelperViews/CurrencyField.swift
b/TalerWallet1/Views/HelperViews/CurrencyField.swift
index 8f2e525..91cb70a 100644
--- a/TalerWallet1/Views/HelperViews/CurrencyField.swift
+++ b/TalerWallet1/Views/HelperViews/CurrencyField.swift
@@ -65,9 +65,10 @@ public struct CurrencyField: View {
// Set as priority so CurrencyInputField size doesn't affect parent
Text(label)
.layoutPriority(1)
-
+
// Input text field to handle UI
currencyInputField
+// .textFieldStyle(.roundedBorder)
}
}
}
diff --git a/TalerWallet1/Views/HelperViews/CurrencyInputView.swift
b/TalerWallet1/Views/HelperViews/CurrencyInputView.swift
index e6f0d38..e4405b3 100644
--- a/TalerWallet1/Views/HelperViews/CurrencyInputView.swift
+++ b/TalerWallet1/Views/HelperViews/CurrencyInputView.swift
@@ -5,7 +5,6 @@
// Created by Marc Stibane on 2023-06-04.
// Copyright © 2023 Taler. All rights reserved.
//
-
import SwiftUI
struct CurrencyInputView: View {
@@ -22,8 +21,8 @@ struct CurrencyInputView: View {
.frame(maxWidth: .infinity, alignment: .trailing)
.foregroundColor(WalletColors().fieldForeground) // text
color
.background(WalletColors().fieldBackground)
- .font(.title)
- .border(.primary)
+ .font(.title2)
+ .textFieldStyle(.roundedBorder)
}.onAppear { // make CurrencyField show the keyboard after 0.4
seconds
if hasBeenShown {
print("❗️Yikes: CurrencyInputView hasBeenShown")
@@ -39,6 +38,7 @@ struct CurrencyInputView: View {
}
}
}
+// MARK: -
#if DEBUG
fileprivate struct BindingViewContainer : View {
@State var centsToTransfer: UInt64 = 0
diff --git a/TalerWallet1/Views/Payment/PaymentView.swift
b/TalerWallet1/Views/Payment/PaymentView.swift
index 27db640..6b6bc0f 100644
--- a/TalerWallet1/Views/Payment/PaymentView.swift
+++ b/TalerWallet1/Views/Payment/PaymentView.swift
@@ -135,8 +135,8 @@ struct PaymentURIView_Previews: PreviewProvider {
fulfillmentMessageI18n: nil,
wireFeeAmortization: 0,
maxWireFee: try! Amount(fromString:
LONGCURRENCY + ":0.2"),
- minimumAge: nil,
- extra: extra
+ minimumAge: nil
+// extra: extra,
// auditors: [],
)
let details = PreparePayResult(
diff --git a/TalerWallet1/Views/Peer2peer/PaymentPurpose.swift
b/TalerWallet1/Views/Peer2peer/PaymentPurpose.swift
index eb4a054..766aa6d 100644
--- a/TalerWallet1/Views/Peer2peer/PaymentPurpose.swift
+++ b/TalerWallet1/Views/Peer2peer/PaymentPurpose.swift
@@ -42,7 +42,7 @@ struct PaymentPurpose: View {
.font(.title)
.foregroundColor(WalletColors().fieldForeground) //
text color
.background(WalletColors().fieldBackground)
- .border(.primary)
+ .textFieldStyle(.roundedBorder)
.focused($isFocused)
.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) {
@@ -69,7 +69,7 @@ struct PaymentPurpose: View {
amountToReceive: amount,
summary: summary, expireDays: expireDays)
}) {
- Text("Invoice \(label) \(scopeInfo.currency)")
+ Text("Request \(label) \(scopeInfo.currency)")
.font(buttonFont)
}
.buttonStyle(TalerButtonStyle(type: .prominent))
@@ -80,10 +80,10 @@ struct PaymentPurpose: View {
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.horizontal)
}
- .navigationTitle("Invoice")
+ .navigationTitle("Request")
.background(WalletColors().backgroundColor.edgesIgnoringSafeArea(.all))
.onAppear {
- DebugViewC.shared.setViewID(VIEW_INVOICE_PURPOSE)
+ DebugViewC.shared.setViewID(VIEW_RECEIVE_PURPOSE)
print("❗️ PaymentPurpose onAppear")
}
.onDisappear {
diff --git a/TalerWallet1/Views/Peer2peer/RequestPayment.swift
b/TalerWallet1/Views/Peer2peer/RequestPayment.swift
index 18ee298..76da5d9 100644
--- a/TalerWallet1/Views/Peer2peer/RequestPayment.swift
+++ b/TalerWallet1/Views/Peer2peer/RequestPayment.swift
@@ -25,12 +25,12 @@ struct RequestPayment: View {
let _ = symLog.vlog() // just to get the # to compare it with
.onAppear & onDisappear
#endif
let currency = scopeInfo.currency
- let navTitle = String(localized: "Request \(currency)", comment:
"Request currency, Dialog Title")
+ let navTitle = String(localized: "Request Money", comment: "Dialog
Title")
let currencyField = CurrencyField(value: $centsToTransfer, currency:
currency)
ScrollView { VStack {
CurrencyInputView(currencyField: currencyField,
- title: String(localized: "Amount to receive:"))
+ title: String(localized: "Amount to request:"))
let someCoins = SomeCoins(details: peerPullCheck)
QuiteSomeCoins(someCoins: someCoins, shouldShowFee: true,
@@ -47,7 +47,8 @@ struct RequestPayment: View {
expireDays: $expireDays)
// { deactivateAction() }
}) {
- Text("Create invoice")
+ let amount = Amount.amountFromCents(currency,
centsToTransfer)
+ Text("Request \(amount.readableDescription)")
}
.buttonStyle(TalerButtonStyle(type: .prominent))
.disabled(disabled)
@@ -59,7 +60,7 @@ struct RequestPayment: View {
.background(WalletColors().backgroundColor.edgesIgnoringSafeArea(.all))
.navigationTitle(navTitle)
.onAppear { // make CurrencyField show the keyboard
- DebugViewC.shared.setViewID(VIEW_INVOICE_P2P)
+ DebugViewC.shared.setViewID(VIEW_RECEIVE_P2P)
symLog.log("❗️Yikes \(navTitle) onAppear")
}
.onDisappear {
diff --git a/TalerWallet1/Views/Peer2peer/SendDone.swift
b/TalerWallet1/Views/Peer2peer/SendDone.swift
index 3abc1dd..0830374 100644
--- a/TalerWallet1/Views/Peer2peer/SendDone.swift
+++ b/TalerWallet1/Views/Peer2peer/SendDone.swift
@@ -6,7 +6,7 @@ import SwiftUI
import taler_swift
import SymLog
-// Called when initiating a P2P transaction (Send coins or Send Invoice)
+// Called when initiating a P2P transaction: Send coins or Send
Request(Invoice)
struct SendDone: View {
private let symLog = SymLogV()
let navTitle = String(localized: "P2P Ready")
diff --git a/TalerWallet1/Views/Peer2peer/SendPurpose.swift
b/TalerWallet1/Views/Peer2peer/SendPurpose.swift
index 40f5ef1..49086df 100644
--- a/TalerWallet1/Views/Peer2peer/SendPurpose.swift
+++ b/TalerWallet1/Views/Peer2peer/SendPurpose.swift
@@ -38,12 +38,12 @@ struct SendPurpose: View {
.font(.title2)
if #available(iOS 16.0, *) {
- TextField("Purpose", text: $summary)
+ TextField("Purpose", text: $summary, axis: .vertical)
.font(.title2)
.lineLimit(2...)
.foregroundColor(WalletColors().fieldForeground)
// text color
.background(WalletColors().fieldBackground)
- .border(.primary)
+ .textFieldStyle(.roundedBorder)
.focused($isFocused)
.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() +
0.4) {
@@ -56,7 +56,7 @@ struct SendPurpose: View {
// .lineLimit(2...5) // lineLimit' is only available
in iOS 16.0 or newer
.foregroundColor(WalletColors().fieldForeground)
// text color
.background(WalletColors().fieldBackground)
- .border(.primary)
+ .textFieldStyle(.roundedBorder)
.focused($isFocused)
.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() +
0.4) {
@@ -93,6 +93,7 @@ struct SendPurpose: View {
Spacer()
}
+ .textFieldStyle(.roundedBorder)
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.horizontal)
}
diff --git a/TalerWallet1/Views/Settings/SettingsItem.swift
b/TalerWallet1/Views/Settings/SettingsItem.swift
index df26904..919ea48 100644
--- a/TalerWallet1/Views/Settings/SettingsItem.swift
+++ b/TalerWallet1/Views/Settings/SettingsItem.swift
@@ -20,12 +20,12 @@ struct SettingsItem<Content: View>: View {
VStack {
Text(name)
.frame(maxWidth: .infinity, alignment: .leading)
- .font(.title2)
+ .font(.talerTitle2)
.padding([.bottom], 0.01)
if let desc = description {
Text(desc)
.frame(maxWidth: .infinity, alignment: .leading)
- .font(.caption)
+ .font(.talerCaption)
}
}
content()
@@ -42,7 +42,7 @@ struct SettingsToggle: View {
var body: some View {
VStack {
Toggle(name, isOn: $value.animation())
- .font(.title2)
+ .font(.talerTitle2)
.onChange(of: value) { value in
action()
}
@@ -50,36 +50,89 @@ struct SettingsToggle: View {
if let desc = description {
Text(desc)
.frame(maxWidth: .infinity, alignment: .leading)
- .font(.caption)
+ .font(.talerCaption)
}
}.padding([.bottom], 4)
}
}
// MARK: -
+struct SettingsFont: View {
+ let title: String
+ let value: Int
+ let action: (Int) -> Void
+
+ @State private var selected = 0
+ let fonts = [String(localized: "Standard iOS Font"),
"Atkinson-Hyperlegible", "Nunito"]
+
+ var body: some View {
+ Picker(title, selection: $selected, content: {
+ ForEach(0..<fonts.count, id: \.self, content: { index in
+ Text(fonts[index]).tag(index)
+ })
+ })
+ .font(.talerTitle2)
+ .pickerStyle(.menu)
+ .onAppear() {
+ withAnimation { selected = value }
+ }
+ .onChange(of: selected) { selected in
+ action(selected)
+ }
+ }
+}
+// MARK: -
+struct SettingsStyle: View {
+ let title: String
+ @Binding var myListStyle: MyListStyle
+
+ var body: some View {
+ HStack {
+ Text(title)
+ .font(.talerTitle2)
+ Spacer()
+ Picker(selection: $myListStyle) {
+ ForEach(MyListStyle.allCases, id: \.self) {
+ Text($0.displayName.capitalized).tag($0)
+ .font(.talerTitle2)
+ }
+ } label: {}
+ .pickerStyle(.menu)
+// .frame(alignment: .trailing)
+// .background(WalletColors().buttonBackColor(pressed: false,
disabled: false)) TODO: RoundRect
+ }
+ }
+}
+// MARK: -
struct SettingsSpeaker: View {
var name: String
@Binding var value: Int
var description: String?
var action: (_ value: Int) -> Void = {value in }
+ func imageName(_ value: Int) -> (String, String) {
+ return (value == 0) ? ("speaker.slash", String(localized:"off",
comment: "Accessibility String for Payment Sounds Off"))
+ : (value == 1) ? ("speaker.fill", String(localized:"Taler
Sounds", comment: "Accessibility String for Payment Sounds"))
+ : ("speaker", String(localized:"Apple Sounds",
comment: "Accessibility String for Payment Sounds"))
+ }
var body: some View {
VStack {
- let image = (value == 0) ? "speaker.slash"
- : (value == 1) ? "speaker.fill"
- : "speaker"
+ let image = imageName(value)
HStack {
Text(name)
- .font(.title2)
+ .font(.talerTitle2)
Text(" ")
- .font(.largeTitle)
+ .font(.talerLargeTitle)
Spacer()
- Image(systemName: image)
- .font(.largeTitle)
+ Image(systemName: image.0)
+ .font(.talerLargeTitle)
+ .accessibilityLabel(image.1)
.onTapGesture {
if value > 0 {
value = -1
+ Controller.shared.playSound(1)
} else {
value = value + 1
+ Controller.shared.playSound(value)
}
}
}
@@ -90,7 +143,7 @@ struct SettingsSpeaker: View {
if let desc = description {
Text(desc)
.frame(maxWidth: .infinity, alignment: .leading)
- .font(.caption)
+ .font(.talerCaption)
}
}.padding([.bottom], 4)
}
diff --git a/TalerWallet1/Views/Settings/SettingsView.swift
b/TalerWallet1/Views/Settings/SettingsView.swift
index e9c458b..6394d07 100644
--- a/TalerWallet1/Views/Settings/SettingsView.swift
+++ b/TalerWallet1/Views/Settings/SettingsView.swift
@@ -27,6 +27,7 @@ struct SettingsView: View {
@AppStorage("developerMode") var developerMode: Bool = false
#endif
@AppStorage("playSounds") var playSounds: Int = 0
+ @AppStorage("talerFont") var talerFont: Int = 0
@AppStorage("developDelay") var developDelay: Bool = false
@AppStorage("myListStyle") var myListStyle: MyListStyle = .automatic
@@ -64,7 +65,14 @@ struct SettingsView: View {
}
}
}
+ @State private var listID = UUID()
+ func redraw(_ newFont: Int) -> Void {
+ if newFont != talerFont {
+ talerFont = newFont
+ withAnimation { listID = UUID() }
+ }
+ }
var body: some View {
#if DEBUG
let _ = Self._printChanges()
@@ -74,21 +82,9 @@ struct SettingsView: View {
Group {
List {
SettingsSpeaker(name: String(localized: "Play Payment
Sounds"), value: $playSounds,
- description: String(localized: "After a transaction
finished"))
- HStack {
- Text("Liststyle:")
- .font(.title2)
- Spacer()
- Picker(selection: $myListStyle) {
- ForEach(MyListStyle.allCases, id: \.self) {
- Text($0.displayName.capitalized).tag($0)
- .font(.title2)
- }
- } label: {}
- .pickerStyle(.menu)
-// .frame(alignment: .trailing)
-// .background(WalletColors().buttonBackColor(pressed:
false, disabled: false)) TODO: RoundRect
- }
+ description: String(localized: "After a
transaction finished"))
+ SettingsFont(title: String(localized: "Font:"), value:
talerFont, action: redraw)
+ SettingsStyle(title: String(localized: "Liststyle:"),
myListStyle: $myListStyle)
if diagnosticModeEnabled {
SettingsToggle(name: String(localized: "Developer Mode"),
value: $developerMode,
description: String(localized: "More information
intended for debugging")) {
@@ -160,6 +156,14 @@ struct SettingsView: View {
description: String(localized: "Perform basic
test transactions")) {
Button("Test 1") {
checkDisabled = true // don't run twice
+ Task {
+ symLog.log("running integration test on
test")
+ do {
+ try await
model.runIntegrationTestM(newVersion: false, test: true)
+ } catch { // TODO: show error
+ symLog.log(error.localizedDescription)
+ }
+ }
}
.buttonStyle(.bordered)
.disabled(checkDisabled)
@@ -237,6 +241,7 @@ struct SettingsView: View {
}
} // App version info
}
+ .id(listID)
.listStyle(myListStyle.style).anyView
}
.navigationTitle(navTitle)
diff --git a/TalerWallet1/Views/Sheets/P2P_Sheets/P2pAcceptDone.swift
b/TalerWallet1/Views/Sheets/P2P_Sheets/P2pAcceptDone.swift
index 264c624..b3941ea 100644
--- a/TalerWallet1/Views/Sheets/P2P_Sheets/P2pAcceptDone.swift
+++ b/TalerWallet1/Views/Sheets/P2P_Sheets/P2pAcceptDone.swift
@@ -6,7 +6,7 @@ import SwiftUI
import taler_swift
import SymLog
-// Called when accepting a scanned P2P transaction (Receive coins or Pay
Invoice)
+// Called when accepting a scanned P2P transaction: Receive coins or Pay
Request(Invoice)
struct P2pAcceptDone: View {
private let symLog = SymLogV()
diff --git a/TalerWallet1/Views/Sheets/P2P_Sheets/P2pPayURIView.swift
b/TalerWallet1/Views/Sheets/P2P_Sheets/P2pPayURIView.swift
index 93d8eb0..cdcb99a 100644
--- a/TalerWallet1/Views/Sheets/P2P_Sheets/P2pPayURIView.swift
+++ b/TalerWallet1/Views/Sheets/P2P_Sheets/P2pPayURIView.swift
@@ -6,8 +6,8 @@ import SwiftUI
import taler_swift
import SymLog
-// Will be called either by the user scanning a QR code or tapping the
provided link,
-// from another user's SendInvoice. We show the P2P details.
+// Called either when scanning a QR code or tapping the provided link
+// from another user's Send Request(Invoice). We show the P2P details.
struct P2pPayURIView: View {
private let symLog = SymLogV()
let navTitle = String(localized: "Pay P2P")
@@ -42,7 +42,7 @@ struct P2pPayURIView: View {
P2pAcceptDone(transactionId:
peerPullDebitResponse.transactionId,
incoming: false)
}) {
- Text("Confirm Payment", comment:"pay P2P invoice")
// SHEET_PAY_P2P
+ Text("Confirm Payment", comment:"pay P2P
request/invoice") // SHEET_PAY_P2P
}.buttonStyle(TalerButtonStyle(type: .prominent))
.padding()
} else {
diff --git a/TalerWallet1/Views/WithdrawBankIntegrated/WithdrawURIView.swift
b/TalerWallet1/Views/WithdrawBankIntegrated/WithdrawURIView.swift
index 4ddeff0..c41d20c 100644
--- a/TalerWallet1/Views/WithdrawBankIntegrated/WithdrawURIView.swift
+++ b/TalerWallet1/Views/WithdrawBankIntegrated/WithdrawURIView.swift
@@ -6,9 +6,9 @@ import SwiftUI
import taler_swift
import SymLog
-// Will be called either by the user scanning a QR code or tapping the
provided link, both from the bank's website
-// we show the user the withdrawal details - but first the ToS must be accepted
-// after the user confirmed the withdrawal, we remind them to return to the
bank website to confirm there, too
+// Called either when scanning a QR code or tapping the provided link, both
from the bank's website.
+// We show the user the withdrawal details - but first the ToS must be
accepted.
+// After the user confirmed the withdrawal, we show a button to return to the
bank website to confirm there, too
struct WithdrawURIView: View {
private let symLog = SymLogV()
let navTitle = String(localized: "Withdrawal")
diff --git a/Info.plist b/Taler_Wallet Info.plist
similarity index 84%
rename from Info.plist
rename to Taler_Wallet Info.plist
index 6cbe85d..958c7e9 100644
--- a/Info.plist
+++ b/Taler_Wallet Info.plist
@@ -12,7 +12,7 @@
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleURLName</key>
- <string>com.taler-systems.gnutalerwallet09</string>
+ <string>com.taler-systems.talerwallet-2</string>
<key>CFBundleURLSchemes</key>
<array>
<string>taler</string>
@@ -27,9 +27,13 @@
<key>UIAppFonts</key>
<array>
<string>Atkinson-Hyperlegible-Regular-102.otf</string>
- <string>Atkinson-Hyperlegible-Italic-102.otf</string>
<string>Atkinson-Hyperlegible-Bold-102.otf</string>
<string>Atkinson-Hyperlegible-BoldItalic-102.otf</string>
+ <string>Atkinson-Hyperlegible-Italic-102.otf</string>
+ <string>Nunito-Regular.ttf</string>
+ <string>Nunito-Bold.ttf</string>
+ <string>Nunito-BoldItalic.ttf</string>
+ <string>Nunito-Italic.ttf</string>
</array>
<key>UIBackgroundModes</key>
<array>
diff --git a/GNU Taler.entitlements b/Taler_Wallet.entitlements
similarity index 100%
rename from GNU Taler.entitlements
rename to Taler_Wallet.entitlements
diff --git a/TestFlight/WhatToTest.en-US.txt b/TestFlight/WhatToTest.en-US.txt
index 6fb04f7..9611ffa 100644
--- a/TestFlight/WhatToTest.en-US.txt
+++ b/TestFlight/WhatToTest.en-US.txt
@@ -1,4 +1,9 @@
+Version 0.9.3 (18)
+
+- Should work now with https://kaufen.tschunk.shop
+
+
Version 0.9.3 (17)
• New Feature: Payment Sounds from carlo von lynX
diff --git a/taler-swift/Sources/taler-swift/Amount.swift
b/taler-swift/Sources/taler-swift/Amount.swift
index cfd01e0..647055b 100644
--- a/taler-swift/Sources/taler-swift/Amount.swift
+++ b/taler-swift/Sources/taler-swift/Amount.swift
@@ -4,6 +4,22 @@
*/
import Foundation
+public func SuperScriptDigit(_ number: UInt32) -> String {
+ switch number {
+ case 0: return String("\u{2070}")
+ case 1: return String("\u{00B9}")
+ case 2: return String("\u{00B2}")
+ case 3: return String("\u{00B3}")
+ case 4: return String("\u{2074}")
+ case 5: return String("\u{2075}")
+ case 6: return String("\u{2076}")
+ case 7: return String("\u{2077}")
+ case 8: return String("\u{2078}")
+ case 9: return String("\u{2079}")
+ default: return ""
+ }
+}
+
/// Errors for `Amount`.
enum AmountError: Error {
/// The string cannot be parsed to create an `Amount`.
@@ -22,6 +38,13 @@ enum AmountError: Error {
case divideByZero
}
+public struct ScopedCurrencyInfo: Codable {
+ var decimalSeparator: String
+ var numFractionalDigits: Int // 0 Yen, 2 €,$, 3 arabic
+ var numTinyDigits: Int // SuperScriptDigits
+ var isCurrencyNameLeading: Bool
+}
+
/// A value of some currency.
public class Amount: Codable, Hashable, CustomStringConvertible {
/// Format that a currency must match.
@@ -45,6 +68,9 @@ public class Amount: Codable, Hashable,
CustomStringConvertible {
/// The fractional value of the amount (number to the right of the decimal
point).
var fraction: UInt32
+ /// Additional info for formatting currency strings
+ var currencyInfo: ScopedCurrencyInfo?
+
public func hash(into hasher: inout Hasher) {
hasher.combine(currency)
if let normalized = try? normalizedCopy() {
@@ -69,6 +95,10 @@ public class Amount: Codable, Hashable,
CustomStringConvertible {
/// The string representation of the value, formatted as
"`integer`.`fraction`".
public var valueStr: String {
+ var decimalSeparator = "."
+ if let currencyInfo {
+ decimalSeparator = currencyInfo.decimalSeparator
+ }
if fraction == 0 {
return "\(integer)"
} else {
@@ -78,7 +108,7 @@ public class Amount: Codable, Hashable,
CustomStringConvertible {
fracStr += "\(frac / (Amount.fractionalBase / 10))"
frac = (frac * 10) % Amount.fractionalBase
}
- return "\(integer).\(fracStr)"
+ return "\(integer)\(decimalSeparator)\(fracStr)"
}
}
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-ios] branch master updated (735c721 -> 7d32de8),
gnunet <=
- [taler-taler-ios] 01/19: Patch for CCCamp, removed extra, bump version to 0.9.3 (18), gnunet, 2023/09/02
- [taler-taler-ios] 03/19: Use sqlite3, gnunet, 2023/09/02
- [taler-taler-ios] 04/19: Rename, gnunet, 2023/09/02
- [taler-taler-ios] 02/19: Changed "Invoice" to "Request" (private mode - "Invoice" will be used in business mode post 1.0), roundedBorder for input fields, gnunet, 2023/09/02
- [taler-taler-ios] 08/19: IntegrationTest on test, gnunet, 2023/09/02
- [taler-taler-ios] 13/19: ScopedCurrencyInfo, SuperScriptDigit, gnunet, 2023/09/02
- [taler-taler-ios] 05/19: Comment, gnunet, 2023/09/02
- [taler-taler-ios] 18/19: Nunito Font, gnunet, 2023/09/02
- [taler-taler-ios] 16/19: Rename, fix, gnunet, 2023/09/02
- [taler-taler-ios] 14/19: CurrencyFormatter, gnunet, 2023/09/02