commit 77e69037b1c86de7013962a3751cd4cde884ff39
parent 0c31cb12e84eccb5334760a2f102ea9a0fff424c
Author: Marc Stibane <marc@taler.net>
Date: Sun, 1 Mar 2026 21:58:28 +0100
QRGenerator with Logo
Diffstat:
4 files changed, 27 insertions(+), 14 deletions(-)
diff --git a/TalerWallet1/Views/HelperViews/QRCodeDetailView.swift b/TalerWallet1/Views/HelperViews/QRCodeDetailView.swift
@@ -1,5 +1,5 @@
/*
- * This file is part of GNU Taler, ©2022-25 Taler Systems S.A.
+ * This file is part of GNU Taler, ©2022-26 Taler Systems S.A.
* See LICENSE.md
*/
/**
@@ -67,10 +67,11 @@ struct QRCodeDetailView: View {
let amountStr = amountStr(currencyInfo)
let scanLong = incoming ? (requesting(amountStr.0), requesting(amountStr.1))
: (sending(amountStr.0), sending(amountStr.1))
+ let logo = Image(TALER_LOGO_QR)
let size = 240.0
- let qrView = QRGeneratorView(text: talerURI, size: size, image: $qrImage)
- .frame(maxWidth: .infinity, alignment: .center)
- .accessibilityLabel(Text("QR Code", comment: "a11y"))
+ let logoSize = 88.0
+ let qrView = QRGeneratorView(text: talerURI, size: size, logo: logo, logoSize: logoSize, image: $qrImage)
+ .frame(maxWidth: .infinity, alignment: .center)
if #available(iOS 17.7, *) {
BorderWithHCE(talerURI: talerURI, nfcHint: true, size: size, scanHints: scanLong) {
qrView
diff --git a/TalerWallet1/Views/HelperViews/QRGeneratorView.swift b/TalerWallet1/Views/HelperViews/QRGeneratorView.swift
@@ -24,20 +24,31 @@ import SwiftUI
struct QRGeneratorView: View {
let text: String
let size: CGFloat
+ let logo: Image?
+ let logoSize: CGFloat
@Binding var image: UIImage?
var body: some View {
- VStack {
+ ZStack {
if let image {
Image(uiImage: image)
.interpolation(.none)
.resizable()
.scaledToFit()
.frame(width: size, height: size)
+ if let logo {
+ logo
+ .resizable()
+ .scaledToFit()
+ .frame(width: logoSize, height: logoSize)
+ }
} else {
EmptyView()
}
- }.onAppear {
+ }
+ .accessibilityElement(children: .combine)
+ .accessibilityLabel(Text("QR Code", comment: "a11y"))
+ .onAppear {
// if let uiImage = getQRCode(text: text) {
if let data = getQRCodeData(text: text) {
if let uiImage = UIImage(data: data) {
diff --git a/TalerWallet1/Views/OIM/OIMp2pReadyView.swift b/TalerWallet1/Views/OIM/OIMp2pReadyView.swift
@@ -1,5 +1,5 @@
/*
- * This file is part of GNU Taler, ©2022-25 Taler Systems S.A.
+ * This file is part of GNU Taler, ©2022-26 Taler Systems S.A.
* See LICENSE.md
*/
/**
@@ -38,7 +38,7 @@ struct OIMp2pReadyView: View {
Group {
Spacer()
let size = 240.0
- QRGeneratorView(text: talerURI, size: size, image: $qrImage)
+ QRGeneratorView(text: talerURI, size: size, logo: nil, logoSize: size / 4, image: $qrImage)
.frame(maxWidth: .infinity, alignment: .center)
.accessibilityLabel(Text("QR Code", comment: "a11y"))
Spacer()
diff --git a/TalerWallet1/Views/Transactions/QRcodesForPayto.swift b/TalerWallet1/Views/Transactions/QRcodesForPayto.swift
@@ -12,15 +12,14 @@ import taler_swift
struct QRcodeCopyShare: View {
let spec: QrCodeSpec
let textToShare: String
-
@State private var qrImage: UIImage? = nil
var body: some View {
- Text(spec.type)
- let size = 200.0
- QRGeneratorView(text: spec.qrContent, size: size, image: $qrImage)
+// Text(spec.type)
+ let logo = spec.type == "spc" ? Image(SWISS_QR) : nil
+ let size = 240.0
+ QRGeneratorView(text: spec.qrContent, size: size, logo: logo, logoSize: size / 4, image: $qrImage)
.frame(maxWidth: .infinity, alignment: .center)
- .accessibilityLabel(Text("QR Code", comment: "a11y"))
.listRowSeparator(.hidden)
HStack {
Text(verbatim: "|") // only reason for this leading-aligned text is to get a nice full length listRowSeparator
@@ -29,7 +28,7 @@ struct QRcodeCopyShare: View {
// Spacer()
CopyShare(textToCopy: textToShare, image: qrImage)
.disabled(false)
- }.listRowSeparator(.automatic)
+ }
}
}
@@ -47,6 +46,7 @@ struct QRcodesForPayto: View {
var body: some View {
let message = messageStr ?? EMPTYSTRING
let textToShare = String(receiverStr + "\n" + amountStr + "\n" + message)
+ let count = qrCodeSpecs.count
List {
if !minimalistic {
Text("If your banking software runs on another device, you can scan one of these QR codes:")
@@ -54,6 +54,7 @@ struct QRcodesForPayto: View {
}
ForEach(qrCodeSpecs, id: \.self) { spec in
QRcodeCopyShare(spec: spec, textToShare: textToShare)
+ .listRowSeparator(.automatic)
}
}
.navigationTitle(navTitle)