aboutsummaryrefslogtreecommitdiff
path: root/Hotline/macOS/Files
diff options
context:
space:
mode:
Diffstat (limited to 'Hotline/macOS/Files')
-rw-r--r--Hotline/macOS/Files/FilePreviewQuickLookView.swift53
-rw-r--r--Hotline/macOS/Files/FilesView.swift17
-rw-r--r--Hotline/macOS/Files/FolderItemView.swift2
3 files changed, 32 insertions, 40 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)
diff --git a/Hotline/macOS/Files/FilesView.swift b/Hotline/macOS/Files/FilesView.swift
index d4ba5c8..984b120 100644
--- a/Hotline/macOS/Files/FilesView.swift
+++ b/Hotline/macOS/Files/FilesView.swift
@@ -376,11 +376,11 @@ struct FilesView: View {
private func openPreviewWindow(_ previewInfo: PreviewFileInfo) {
switch previewInfo.previewType {
case .image:
- openWindow(id: "preview-quicklook", value: previewInfo)
+ self.openWindow(id: "preview-quicklook", value: previewInfo)
case .text:
- openWindow(id: "preview-quicklook", value: previewInfo)
+ self.openWindow(id: "preview-quicklook", value: previewInfo)
case .unknown:
- openWindow(id: "preview-quicklook", value: previewInfo)
+ self.openWindow(id: "preview-quicklook", value: previewInfo)
return
}
}
@@ -397,10 +397,10 @@ struct FilesView: View {
@MainActor private func downloadFile(_ file: FileInfo) {
if file.isFolder {
- model.downloadFolderNew(file.name, path: file.path)
+ model.downloadFolder(file.name, path: file.path)
}
else {
- model.downloadFileNew(file.name, path: file.path)
+ model.downloadFile(file.name, path: file.path)
}
}
@@ -442,9 +442,12 @@ struct FilesView: View {
return
}
- model.previewFile(file.name, path: file.path) { info in
+ self.model.previewFile(file.name, path: file.path) { info in
if let info = info {
- openPreviewWindow(info)
+ var extendedInfo = info
+ extendedInfo.creator = file.creator
+ extendedInfo.type = file.type
+ self.openPreviewWindow(extendedInfo)
}
}
}
diff --git a/Hotline/macOS/Files/FolderItemView.swift b/Hotline/macOS/Files/FolderItemView.swift
index 2b1b695..9b13cc0 100644
--- a/Hotline/macOS/Files/FolderItemView.swift
+++ b/Hotline/macOS/Files/FolderItemView.swift
@@ -81,7 +81,7 @@ struct FolderItemView: View {
.opacity(file.isUnavailable ? 0.5 : 1.0)
if loading {
- ProgressView().controlSize(.small).padding([.leading, .trailing], 5)
+ ProgressView().controlSize(.mini).padding([.leading, .trailing], 5)
}
Spacer()
if !file.isUnavailable {