aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Shared/FileIconView.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2024-07-29 19:07:47 -0700
committerDustin Mierau <dustin@mierau.me>2024-07-29 19:07:47 -0700
commitc6996c3ac262616198e94197d1c6b310d44508ee (patch)
tree6a4a3e98b7a2449a3d200bb5f4cc1c3c8b92b4ad /Hotline/Shared/FileIconView.swift
parent5726ab32f161e4b62ee0d65303b76d9894769c92 (diff)
Add drag and drop suppport for files to upload. Tighten up spacing on heirarchical lists. Add some extra HFS type to UTType conversion. Update to latest packages.
Diffstat (limited to 'Hotline/Shared/FileIconView.swift')
-rw-r--r--Hotline/Shared/FileIconView.swift26
1 files changed, 21 insertions, 5 deletions
diff --git a/Hotline/Shared/FileIconView.swift b/Hotline/Shared/FileIconView.swift
index ffc9051..d0949fa 100644
--- a/Hotline/Shared/FileIconView.swift
+++ b/Hotline/Shared/FileIconView.swift
@@ -19,10 +19,11 @@ struct FolderIconView: View {
struct FileIconView: View {
let filename: String
+ let fileType: String?
#if os(iOS)
- private func fileIcon(filename: String) -> Image {
- let fileExtension = (filename as NSString).pathExtension
+ private func fileIcon() -> Image {
+ let fileExtension = (self.filename as NSString).pathExtension
if let fileType = UTType(filenameExtension: fileExtension) {
if fileType.isSubtype(of: .movie) {
return Image(systemName: "play.rectangle")
@@ -44,14 +45,29 @@ struct FileIconView: View {
return Image(systemName: "doc")
}
#elseif os(macOS)
- private func fileIcon(filename: String) -> Image {
- Image(nsImage: NSWorkspace.shared.icon(for: UTType(filenameExtension: (filename as NSString).pathExtension) ?? UTType.content))
+ private func fileIcon() -> Image {
+ let fileExtension = (self.filename as NSString).pathExtension
+
+ if !fileExtension.isEmpty,
+ let uttype = UTType(filenameExtension: fileExtension) {
+ return Image(nsImage: NSWorkspace.shared.icon(for: uttype))
+ }
+ else if let fileType = self.fileType,
+ let fileTypeExtension = FileManager.HFSTypeToExtension[fileType.lowercased()],
+ let uttype = UTType(filenameExtension: fileTypeExtension) {
+ return Image(nsImage: NSWorkspace.shared.icon(for: uttype))
+ }
+ else {
+ return Image(nsImage: NSWorkspace.shared.icon(for: UTType.data))
+ }
+
+// Image(nsImage: NSWorkspace.shared.icon(for: UTType(filenameExtension: (filename as NSString).pathExtension) ?? UTType.content))
}
#endif
var body: some View {
- fileIcon(filename: filename)
+ fileIcon()
.resizable()
.scaledToFit()
}