Swift Media Player
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

151 lines
7.3 KiB

//
// Created by Marco Schmickler on 26.06.22.
// Copyright (c) 2022 Marco Schmickler. All rights reserved.
//
import Foundation
import SwiftUI
struct SPhotoAlbumView: View {
var completionHandler: ((Bool) -> Void)?
@ObservedObject
var model: SPhotoModel
@State var single = true
@State var more = false
@State var edit = false
@State var embedded = false
@State var embDown = false
@State var faceResultImage: UIImage? = nil
init(completionHandler: ((Bool) -> ())?, model: SPhotoModel) {
self.completionHandler = completionHandler
self.model = model
}
var body: some View {
let v = VStack {
HStack {
Group {
VStack {
HStack {
Button(action: {
cleanup()
completionHandler!(true)
}, label: {
//Text("cancel")
Text("X").frame(width: 30)
})//.foregroundColor(update ? Color.yellow : Color.blue)
.buttonStyle(BorderlessButtonStyle())
Button(action: {
more.toggle()
}, label: {
Text("\(model.index)(\(model.folderIndex))").frame(width: 70)
})
.foregroundColor(model.scale > model.maxScale ? Color.yellow : Color.blue)
.buttonStyle(BorderlessButtonStyle())
Button(action: {
model.favorite.toggle()
model.dirty = true
let kitem = DatabaseManager.sharedInstance.getKItem(model.selectedItem)
kitem.favorite = model.favorite
DatabaseManager.sharedInstance.save()
}, label: {
Image(systemName: "heart.fill")
})
.foregroundColor(model.favorite ? Color.yellow : Color.blue).buttonStyle(BorderlessButtonStyle())
KToggleButton(text: "embd", binding: $embedded)
KToggleButton(text: "go", binding: $model.go)
}
Text("\(model.selectedItem.name)").foregroundColor(model.preloading > 0 ? Color.yellow : Color.blue)
}
Spacer()
SPhotoScrubber(model: model)
}
}
.frame(height: 50)
SPhotoView(model: model)
}.task() {
model.preload()
}
if embedded && !more {
v.overlay(SEmbeddedVideo(embedded: $embedded, down: $embDown).offset(y: embDown ? 0: 70), alignment: embDown ? .bottomLeading : .topLeading)
} else if more {
v.overlay(VStack (spacing: 15 ) {
KToggleButton(text: "single", binding: $single).frame(height: 30)
KToggleButton(text: "spring", binding: $model.spring).frame(height: 30)
Button(action: {
saveSelectedItem()
}, label: {
Text("save")
})
.buttonStyle(BorderlessButtonStyle())
Button(action: {
if let img = model.selectedItem.thumbImage {
UIPasteboard.general.image = img
}
else if let img = model.selectedItem.image {
UIPasteboard.general.image = img.scaleDown(1200)
}
}, label: {
Text("copy")
})
.buttonStyle(BorderlessButtonStyle())
Button(action: {faceSelectedItem("sarah"); more=false; }, label: {Text("sarah")}).buttonStyle(BorderlessButtonStyle())
Button(action: {faceSelectedItem("claudia"); more=false; }, label: {Text("claudia")}).buttonStyle(BorderlessButtonStyle())
Button(action: {faceSelectedItem("jessica"); more=false; }, label: {Text("jessica")}).buttonStyle(BorderlessButtonStyle())
Button(action: {faceSelectedItem("marleen"); more=false; }, label: {Text("marleen")}).buttonStyle(BorderlessButtonStyle())
Button(action: {faceSelectedItem("renate"); more=false; }, label: {Text("renate")}).buttonStyle(BorderlessButtonStyle())
Button(action: {faceSelectedItem("birgit"); more=false; }, label: {Text("birgit")}).buttonStyle(BorderlessButtonStyle())
Button(action: {faceSelectedItem("barbara"); more=false; }, label: {Text("barbara")}).buttonStyle(BorderlessButtonStyle())
Button(action: {faceSelectedItem("nina"); more=false; }, label: {Text("nina")}).buttonStyle(BorderlessButtonStyle())
Button(action: {faceSelectedItem("nicki"); more=false; }, label: {Text("nina")}).buttonStyle(BorderlessButtonStyle())
Button(action: {faceSelectedItem("mitra"); more=false; }, label: {Text("nina")}).buttonStyle(BorderlessButtonStyle())
Button(action: {faceSelectedItem("amruta"); more=false; }, label: {Text("amruta")}).buttonStyle(BorderlessButtonStyle())
}
.frame(width: 80, alignment: .top).offset(x: 0, y: 70), alignment: .topLeading)
.overlay(TagEditor(item: model.allItems[model.index], completionHandler: DatabaseManager.sharedInstance.saveItemMetaData)
.frame(width: 60, alignment: .top).offset(x: 0, y: 70),
alignment: .topTrailing)
} else {
v
}
}
func saveSelectedItem() {
let item = model.selectedItem
DatabaseManager.sharedInstance.saveItemMetaData(item)
}
func faceSelectedItem(_ name: String) {
let item = model.selectedItem
let path = item.fullPath.replacing("/srv/samba/ren", with: "z:")
let dirname = (path as NSString).lastPathComponent
let outpath1 = path.replacing("/", with: "")
let outpath = outpath1.replacing("z:", with: "z:/cut/images/"+name+"/"+dirname + "/")
print(path)
print(outpath1)
print(outpath)
Task {
if !single {
try await FaceManager.sharedInstance.processFolder(inputFolderPath: path, sourceFacePath: "benchmark/" + name + ".jpg", outputFolderPath: outpath)
}
else {
try! await FaceManager.sharedInstance.processImage(inputImagePath: "input", sourceFacePath: "benchmark/" + name + ".jpg")
}
//try! await FaceManager.sharedInstance.processImage(inputImagePath: "input", sourceFacePath: "benchmark/Renate.jpg")
}
}
func cleanup() {
for i in model.allItems {
i.thumbImage = nil
i.image = nil
}
}
}