AProposScreen.swift
85 lignes · 3565 octets
import SwiftUI /// Écran « À propos » accessible depuis les Réglages. /// Version et nom lus depuis le bundle (jamais en dur). struct AProposScreen: View { let onBack: () -> Void private var appVersion: String { Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "—" } private var appName: String { Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String ?? Bundle.main.infoDictionary?["CFBundleName"] as? String ?? "PicLead" } var body: some View { VStack(spacing: 0) { ScreenTopBar(title: "À propos", onBack: onBack) ScrollView { VStack(alignment: .leading, spacing: 20) { // Nom + version VStack(alignment: .leading, spacing: 4) { Text(appName) .font(C2VFont.titleMedium) .foregroundColor(C2VColor.encre) Text("Version \(appVersion)") .font(C2VFont.bodyMedium) .foregroundColor(C2VColor.texteFaible) } C2VDivider() // Éditeur VStack(alignment: .leading, spacing: 4) { Text("Éditeur") .font(C2VFont.labelMedium) .foregroundColor(C2VColor.texteFaible) Text("Eric Bouhana Ingénierie Informatique (ebii)") .font(C2VFont.bodyLarge) .foregroundColor(C2VColor.ink) Button("https://www.ebii.fr/fr/editions/piclead") { ExternalLinks.web("https://www.ebii.fr/fr/editions/piclead") } .buttonStyle(.plain) .font(C2VFont.bodyMedium) .foregroundColor(C2VColor.link) Button("contact@ebii.fr") { ExternalLinks.email("contact@ebii.fr") } .buttonStyle(.plain) .font(C2VFont.bodyMedium) .foregroundColor(C2VColor.link) } C2VDivider() // Licence VStack(alignment: .leading, spacing: 4) { Text("Licence") .font(C2VFont.labelMedium) .foregroundColor(C2VColor.texteFaible) Text("GNU Affero General Public License v3 (AGPL-3.0)") .font(C2VFont.bodyLarge) .foregroundColor(C2VColor.ink) Text( "Ce logiciel est un logiciel libre distribué selon les termes de la " + "licence GNU AGPL v3. Vous pouvez le redistribuer et/ou le modifier " + "sous les conditions définies par la Free Software Foundation." ) .font(C2VFont.bodyMedium) .foregroundColor(C2VColor.texteFaible) } } .frame(maxWidth: .infinity, alignment: .leading) .padding(18) } } .frame(maxHeight: .infinity, alignment: .top) .background(C2VColor.fond) .toolbar(.hidden, for: .navigationBar) } }
GitRust