Foto-Vorschau

This commit is contained in:
Gerrit Linnemann 2020-08-08 16:33:26 +02:00
parent 893829d0e5
commit 0dce6e3988
6 changed files with 122 additions and 47 deletions

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "file_jpg.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "placeholder-image.png",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -11,14 +11,16 @@ import SwiftUI
struct ContentView: View { struct ContentView: View {
@State var fileList = [YapsFile]() @State var fileList = [YapsFile]()
@State var previewImg = Image("placeholder-image")
var finderHelper: FinderHelper var finderHelper: FinderHelper
var body: some View { var body: some View {
HStack { HStack {
VStack { VStack(alignment: .leading) {
HStack { HStack {
Button(action: { Button(action: {
self.fileList.removeAll()
self.fileList.append(contentsOf: self.finderHelper.selectFolder()) self.fileList.append(contentsOf: self.finderHelper.selectFolder())
}) { }) {
Text("Select Folder") Text("Select Folder")
@ -28,21 +30,29 @@ struct ContentView: View {
List { List {
ForEach(self.fileList, id: \.self) { yapsFile in ForEach(self.fileList, id: \.self) { yapsFile in
HStack { HStack {
Image("file_raw").resizable().frame(width: 20, height: 20) self.finderHelper.getImageByFiletype(file: yapsFile.file).resizable().frame(width: 20, height: 20)
Text(yapsFile.name) Text(yapsFile.name)
} }
.onTapGesture(perform: { .onTapGesture(perform: {
let selectedImageURL: URL = yapsFile.file
print("pressed \(yapsFile.name)") print("pressed \(yapsFile.name)")
self.previewImg = self.finderHelper.getImageByURL(source: selectedImageURL)
.resizable()
}) })
} }
} }
.focusable()
Text("THUMBNAIL")
} }
.frame(width: 150.0)
Text("Hello, World!") GeometryReader { geo in
.frame(maxWidth: .infinity, maxHeight: .infinity) self.previewImg.self
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width: geo.size.width)
}
} }
} }
} }

View File

@ -42,7 +42,7 @@ class FinderHelper {
var fileList = [YapsFile]() var fileList = [YapsFile]()
do { do {
let items = try fm.contentsOfDirectory(at: path, includingPropertiesForKeys: nil, options: .skipsHiddenFiles) let items = try fm.contentsOfDirectory(at: path, includingPropertiesForKeys: nil, options: .skipsHiddenFiles).filter{ $0.pathExtension == "jpg" || $0.pathExtension == "jpeg" }
for item in items { for item in items {
let yapsFile: YapsFile = YapsFile(name: item.lastPathComponent, file: item) let yapsFile: YapsFile = YapsFile(name: item.lastPathComponent, file: item)
@ -54,4 +54,27 @@ class FinderHelper {
return fileList return fileList
} }
func getImageByFiletype(file: URL) -> Image {
let fileExtension = file.pathExtension
var image = Image("file")
switch fileExtension {
case "jpg":
image = Image("file_jpg")
case "raw":
image = Image("file_raw")
default:
print("No image found for extenstion \(fileExtension)")
}
return image
}
func getImageByURL(source: URL) -> Image {
let imageData:NSData = NSData(contentsOf: source)!
let image = NSImage(data: imageData as Data)!
return Image(nsImage: image)
}
} }