aboutsummaryrefslogtreecommitdiff
path: root/Hotline/macOS/Files/FilePreviewQuickLookView.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2025-11-10 21:00:43 -0800
committerDustin Mierau <dustin@mierau.me>2025-11-10 21:00:43 -0800
commitddb9c69b24a67ac140af9ff20f5c36bdef6fb51b (patch)
tree0bb994f1ac7a608c90b33c402629b0c8b21caff4 /Hotline/macOS/Files/FilePreviewQuickLookView.swift
parenta4263aea6e2875fa77783685985e5c8f7991337f (diff)
Remove "New" suffix from our transfer clients. Further cleanup. Allow previewing certain files with HFS types (but no extensions). Cleanup preview files when window closes.
Diffstat (limited to 'Hotline/macOS/Files/FilePreviewQuickLookView.swift')
-rw-r--r--Hotline/macOS/Files/FilePreviewQuickLookView.swift53
1 files changed, 21 insertions, 32 deletions
diff --git a/Hotline/macOS/Files/FilePreviewQuickLookView.swift b/Hotline/macOS/Files/FilePreviewQuickLookView.swift
index 26bd286..a504a7a 100644
--- a/Hotline/macOS/Files/FilePreviewQuickLookView.swift
+++ b/Hotline/macOS/Files/FilePreviewQuickLookView.swift
@@ -11,16 +11,16 @@ struct FilePreviewQuickLookView: View {
@Environment(\.dismiss) private var dismiss
@Binding var info: PreviewFileInfo?
- @State var preview: FilePreviewState? = nil
+ @State private var preview: FilePreviewState? = nil
@FocusState private var focusField: FilePreviewFocus?
var body: some View {
Group {
- if preview?.state != .loaded {
+ if self.preview?.state != .loaded {
VStack(alignment: .center, spacing: 0) {
Spacer()
- ProgressView(value: max(0.0, min(1.0, preview?.progress ?? 0.0)))
+ ProgressView(value: max(0.0, min(1.0, self.preview?.progress ?? 0.0)))
.focusable(false)
.progressViewStyle(.circular)
.controlSize(.extraLarge)
@@ -33,7 +33,7 @@ struct FilePreviewQuickLookView: View {
.padding()
}
else {
- if let fileURL = preview?.fileURL {
+ if let fileURL = self.preview?.fileURL {
QuickLookPreviewView(fileURL: fileURL)
.frame(minWidth: 400, maxWidth: .infinity, minHeight: 400, maxHeight: .infinity)
}
@@ -68,25 +68,15 @@ struct FilePreviewQuickLookView: View {
.focusable()
.focusEffectDisabled()
.background(Color(nsColor: .textBackgroundColor))
- .focused($focusField, equals: .window)
- .navigationTitle(info?.name ?? "File Preview")
- .background {
- if let fileURL = self.preview?.fileURL {
- WindowConfigurator { window in
- window.representedURL = fileURL
- window.standardWindowButton(.documentIconButton)?.isHidden = false
- }
- }
- }
+ .focused(self.$focusField, equals: .window)
+ .navigationTitle(self.info?.name ?? "File Preview")
+ .applyNavigationDocumentIfPresent(self.preview?.fileURL)
.toolbar {
- if let _ = preview?.fileURL {
+ if let fileURL = self.preview?.fileURL {
if let info = info {
ToolbarItem(placement: .primaryAction) {
Button {
- if let fileURL = preview?.fileURL,
- let data = try? Data(contentsOf: fileURL) {
- let _ = data.saveAsFileToDownloads(filename: info.name)
- }
+ FileManager.default.copyToDownloads(from: fileURL, using: info.name, bounceDock: true)
} label: {
Label("Download File...", systemImage: "arrow.down")
}
@@ -96,28 +86,27 @@ struct FilePreviewQuickLookView: View {
}
}
.task {
- if let info = info {
- preview = FilePreviewState(info: info)
- preview?.download()
+ if let info = self.info {
+ self.preview = FilePreviewState(info: info)
+ self.preview?.download()
}
}
.onAppear {
- if info == nil {
- Task {
- dismiss()
- }
+ guard self.info != nil else {
+ self.dismiss()
return
}
- focusField = .window
+ self.focusField = .window
}
.onDisappear {
- preview?.cancel()
- dismiss()
+ self.preview?.cancel()
+ self.preview?.cleanup()
+ self.dismiss()
}
- .onChange(of: preview?.state) {
- if preview?.state == .failed {
- dismiss()
+ .onChange(of: self.preview?.state) {
+ if self.preview?.state == .failed {
+ self.dismiss()
}
}
.preferredColorScheme(.dark)