[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-ios] 04/10: Payment Sounds by carlo von lynX
From: |
gnunet |
Subject: |
[taler-taler-ios] 04/10: Payment Sounds by carlo von lynX |
Date: |
Tue, 08 Aug 2023 12:29:23 +0200 |
This is an automated email from the git hooks/post-receive script.
marc-stibane pushed a commit to branch master
in repository taler-ios.
commit d25e933457d24e1b2ddc43b0288bd79644e3454b
Author: Marc Stibane <marc@taler.net>
AuthorDate: Tue Aug 8 12:12:06 2023 +0200
Payment Sounds by carlo von lynX
---
TalerWallet.xcodeproj/project.pbxproj | 16 +++++++++
TalerWallet1/Controllers/Controller.swift | 5 ++-
TalerWallet1/Helper/playSound.swift | 19 +++++++---
TalerWallet1/Sounds/payment_received.m4a | Bin 0 -> 68854 bytes
TalerWallet1/Sounds/payment_sent.m4a | Bin 0 -> 69508 bytes
TalerWallet1/Views/Settings/SettingsItem.swift | 47 ++++++++++++++++++++++++-
TalerWallet1/Views/Settings/SettingsView.swift | 6 ++--
7 files changed, 84 insertions(+), 9 deletions(-)
diff --git a/TalerWallet.xcodeproj/project.pbxproj
b/TalerWallet.xcodeproj/project.pbxproj
index eae83d9..029de82 100644
--- a/TalerWallet.xcodeproj/project.pbxproj
+++ b/TalerWallet.xcodeproj/project.pbxproj
@@ -8,6 +8,8 @@
/* Begin PBXBuildFile section */
4E16E12329F3BB99008B9C86 /* CurrencyFormatter.swift in Sources
*/ = {isa = PBXBuildFile; fileRef = 4E16E12229F3BB99008B9C86 /*
CurrencyFormatter.swift */; };
+ 4E2254972A822B8100E41D29 /* payment_received.m4a in Resources
*/ = {isa = PBXBuildFile; fileRef = 4E2254952A822B8100E41D29 /*
payment_received.m4a */; };
+ 4E2254982A822B8100E41D29 /* payment_sent.m4a in Resources */ =
{isa = PBXBuildFile; fileRef = 4E2254962A822B8100E41D29 /* payment_sent.m4a */;
};
4E363CBC2A237E0900D7E98C /* URL+id+iban.swift in Sources */ =
{isa = PBXBuildFile; fileRef = 4E363CBB2A237E0900D7E98C /* URL+id+iban.swift
*/; };
4E363CBE2A23CB2100D7E98C /* AnyTransition+backslide.swift in
Sources */ = {isa = PBXBuildFile; fileRef = 4E363CBD2A23CB2100D7E98C /*
AnyTransition+backslide.swift */; };
4E363CC02A24754200D7E98C /* Settings.bundle in Resources */ =
{isa = PBXBuildFile; fileRef = 4E363CBF2A24754200D7E98C /* Settings.bundle */;
};
@@ -143,6 +145,8 @@
/* Begin PBXFileReference section */
4E16E12229F3BB99008B9C86 /* CurrencyFormatter.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= CurrencyFormatter.swift; sourceTree = "<group>"; };
+ 4E2254952A822B8100E41D29 /* payment_received.m4a */ = {isa =
PBXFileReference; lastKnownFileType = file; path = payment_received.m4a;
sourceTree = "<group>"; };
+ 4E2254962A822B8100E41D29 /* payment_sent.m4a */ = {isa =
PBXFileReference; lastKnownFileType = file; path = payment_sent.m4a; sourceTree
= "<group>"; };
4E363CBB2A237E0900D7E98C /* URL+id+iban.swift */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path
= "URL+id+iban.swift"; sourceTree = "<group>"; };
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>"; };
@@ -282,6 +286,15 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
+ 4E2254942A822B8100E41D29 /* Sounds */ = {
+ isa = PBXGroup;
+ children = (
+ 4E2254952A822B8100E41D29 /*
payment_received.m4a */,
+ 4E2254962A822B8100E41D29 /* payment_sent.m4a */,
+ );
+ path = Sounds;
+ sourceTree = "<group>";
+ };
4E3B4BBF2A41E64000CC88B8 /* P2P_Sheets */ = {
isa = PBXGroup;
children = (
@@ -321,6 +334,7 @@
4EB095052989CB7C0043A8A1 /* Helper */,
4EB0950C2989CB9A0043A8A1 /* Quickjs */,
4EB094EF298979D30043A8A1 /* Assets.xcassets */,
+ 4E2254942A822B8100E41D29 /* Sounds */,
4E8C171B2A6509BB005B2392 /*
Atkinson-Hyperlegible */,
4E363CBF2A24754200D7E98C /* Settings.bundle */,
4EB094F529897A9A0043A8A1 /* Preview Content */,
@@ -727,8 +741,10 @@
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 */,
+ 4E2254982A822B8100E41D29 /* payment_sent.m4a in
Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/TalerWallet1/Controllers/Controller.swift
b/TalerWallet1/Controllers/Controller.swift
index 17201f5..d2d3c30 100644
--- a/TalerWallet1/Controllers/Controller.swift
+++ b/TalerWallet1/Controllers/Controller.swift
@@ -3,6 +3,7 @@
* See LICENSE.md
*/
import Foundation
+import AVFoundation
import SwiftUI
import SymLog
import os.log
@@ -22,6 +23,7 @@ enum UrlCommand {
case payPull
case payPush
case payTemplate
+ case reward
}
// MARK: -
@@ -30,8 +32,9 @@ class Controller: ObservableObject {
private let symLog = SymLogC()
@Published var backendState: BackendState = .none // only used for
launch animation
- @AppStorage("playSounds") var playSounds: Bool = false // extension
mustn't define this, so it must be here
+ @AppStorage("playSounds") var playSounds: 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
diff --git a/TalerWallet1/Helper/playSound.swift
b/TalerWallet1/Helper/playSound.swift
index 0b4c428..14f4077 100644
--- a/TalerWallet1/Helper/playSound.swift
+++ b/TalerWallet1/Helper/playSound.swift
@@ -9,18 +9,29 @@ extension Controller {
func playSound(_ number: Int) {
var soundID: SystemSoundID = 0
- if number < 999 {
+ if number > 9 {
+ soundID = UInt32(number)
+ } else {
let sound = (number == 0) ? "payment_failure" :
(number == 1) ? "payment_success" : "PaymentReceived"
let fileURL = URL(fileURLWithPath:
"/System/Library/Audio/UISounds/"
+ sound + ".caf")
AudioServicesCreateSystemSoundID(fileURL as CFURL, &soundID)
logger.log("\(sound, privacy: .public) \(soundID)")
- } else {
- soundID = UInt32(number)
}
- if playSounds {
+ if number == 0 || number > 9 || playSounds < 0 {
AudioServicesPlaySystemSound(soundID);
+ } else if playSounds > 0 {
+ if let url = Bundle.main.url(forResource: (number == 1) ?
"payment_received"
+ :
"payment_sent",
+ withExtension: "m4a") {
+ player.removeAllItems()
+ player.insert(AVPlayerItem(url: url), after: nil)
+ logger.log("\(url, privacy: .public) \(soundID)")
+ player.play()
+ } else {
+ AudioServicesPlaySystemSound(soundID);
+ }
}
}
}
diff --git a/TalerWallet1/Sounds/payment_received.m4a
b/TalerWallet1/Sounds/payment_received.m4a
new file mode 100644
index 0000000..c15ff63
Binary files /dev/null and b/TalerWallet1/Sounds/payment_received.m4a differ
diff --git a/TalerWallet1/Sounds/payment_sent.m4a
b/TalerWallet1/Sounds/payment_sent.m4a
new file mode 100644
index 0000000..b16372a
Binary files /dev/null and b/TalerWallet1/Sounds/payment_sent.m4a differ
diff --git a/TalerWallet1/Views/Settings/SettingsItem.swift
b/TalerWallet1/Views/Settings/SettingsItem.swift
index b8443fe..df26904 100644
--- a/TalerWallet1/Views/Settings/SettingsItem.swift
+++ b/TalerWallet1/Views/Settings/SettingsItem.swift
@@ -56,13 +56,58 @@ struct SettingsToggle: View {
}
}
// MARK: -
+struct SettingsSpeaker: View {
+ var name: String
+ @Binding var value: Int
+ var description: String?
+ var action: (_ value: Int) -> Void = {value in }
+
+ var body: some View {
+ VStack {
+ let image = (value == 0) ? "speaker.slash"
+ : (value == 1) ? "speaker.fill"
+ : "speaker"
+ HStack {
+ Text(name)
+ .font(.title2)
+ Text(" ")
+ .font(.largeTitle)
+ Spacer()
+ Image(systemName: image)
+ .font(.largeTitle)
+ .onTapGesture {
+ if value > 0 {
+ value = -1
+ } else {
+ value = value + 1
+ }
+ }
+ }
+// .onChange(of: value) { value in
+// action(value)
+// }
+
+ if let desc = description {
+ Text(desc)
+ .frame(maxWidth: .infinity, alignment: .leading)
+ .font(.caption)
+ }
+ }.padding([.bottom], 4)
+ }
+}
+// MARK: -
#if DEBUG
struct SettingsItemPreview : View {
@State var developerMode: Bool = false
+ @State var playSounds: Int = 0
var body: some View {
VStack {
- SettingsToggle(name: "Developer Mode", value: $developerMode,
description: "More information intended for debugging")
+ SettingsToggle(name: "Developer Mode", value: $developerMode,
+ description: "More information intended for debugging")
+ SettingsSpeaker(name: String(localized: "Play Payment Sounds"),
value: $playSounds,
+ description: String(localized: "After a transaction
finished"))
+
}
}
}
diff --git a/TalerWallet1/Views/Settings/SettingsView.swift
b/TalerWallet1/Views/Settings/SettingsView.swift
index ee7d4e6..e9c458b 100644
--- a/TalerWallet1/Views/Settings/SettingsView.swift
+++ b/TalerWallet1/Views/Settings/SettingsView.swift
@@ -26,7 +26,7 @@ struct SettingsView: View {
#else
@AppStorage("developerMode") var developerMode: Bool = false
#endif
- @AppStorage("playSounds") var playSounds: Bool = false
+ @AppStorage("playSounds") var playSounds: Int = 0
@AppStorage("developDelay") var developDelay: Bool = false
@AppStorage("myListStyle") var myListStyle: MyListStyle = .automatic
@@ -73,8 +73,8 @@ struct SettingsView: View {
let walletCore = WalletCore.shared
Group {
List {
- SettingsToggle(name: String(localized: "Play Payment Sounds"),
value: $playSounds,
- description: String(localized: "After a transaction
finished"))
+ SettingsSpeaker(name: String(localized: "Play Payment
Sounds"), value: $playSounds,
+ description: String(localized: "After a transaction
finished"))
HStack {
Text("Liststyle:")
.font(.title2)
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-ios] branch master updated (dbf44d6 -> 7792241), gnunet, 2023/08/08
- [taler-taler-ios] 03/10: tip -> reward, gnunet, 2023/08/08
- [taler-taler-ios] 07/10: Wallet changes + bugfixes, gnunet, 2023/08/08
- [taler-taler-ios] 01/10: PaymentView, gnunet, 2023/08/08
- [taler-taler-ios] 10/10: iOS: bump version to 0.9.3 (17), gnunet, 2023/08/08
- [taler-taler-ios] 05/10: SuperScriptDigits, gnunet, 2023/08/08
- [taler-taler-ios] 04/10: Payment Sounds by carlo von lynX,
gnunet <=
- [taler-taler-ios] 02/10: started with PayTemplates, gnunet, 2023/08/08
- [taler-taler-ios] 09/10: Usability improved for manual withdrawal + P2P, gnunet, 2023/08/08
- [taler-taler-ios] 08/10: NavigationLinksView, gnunet, 2023/08/08
- [taler-taler-ios] 06/10: GetScopedCurrencyInfo, gnunet, 2023/08/08