aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Shared/FileIconView.swift
diff options
context:
space:
mode:
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()
}