Add TravelAlbum, ProfileSpace, and wired camera transfer modules.
Introduce travel album entry with Sony PTP tethering pipeline, profile space settings page, home routing updates, Launch Screen storyboard, and related tests/docs. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -0,0 +1,46 @@
|
||||
//
|
||||
// TravelAlbumCodeSheet.swift
|
||||
// suixinkan
|
||||
//
|
||||
// Created by Codex on 2026/6/29.
|
||||
//
|
||||
|
||||
import SwiftUI
|
||||
|
||||
/// 旅拍相册小程序码弹窗。
|
||||
struct TravelAlbumCodeSheet: View {
|
||||
let state: TravelAlbumCodeSheetState
|
||||
|
||||
var body: some View {
|
||||
NavigationStack {
|
||||
VStack(spacing: AppMetrics.Spacing.large) {
|
||||
Text(state.albumName)
|
||||
.font(.system(size: AppMetrics.FontSize.title3, weight: .semibold))
|
||||
|
||||
if state.isLoading {
|
||||
ProgressView("加载小程序码…")
|
||||
.frame(height: 220)
|
||||
} else if state.qrImageURL.isEmpty {
|
||||
AppContentUnavailableView("暂无小程序码", systemImage: "qrcode")
|
||||
.frame(height: 220)
|
||||
} else {
|
||||
RemoteImage(urlString: state.qrImageURL) {
|
||||
Image(systemName: "qrcode")
|
||||
.font(.system(size: 48))
|
||||
.foregroundStyle(AppDesign.placeholder)
|
||||
}
|
||||
.frame(width: 220, height: 220)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 12))
|
||||
}
|
||||
|
||||
Text("用户可扫码进入小程序选片")
|
||||
.font(.system(size: AppMetrics.FontSize.subheadline))
|
||||
.foregroundStyle(AppDesign.textSecondary)
|
||||
}
|
||||
.padding(AppMetrics.Spacing.pageHorizontal)
|
||||
.navigationTitle("相册码")
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
}
|
||||
.presentationDetents([.medium])
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user