From 4d63b3778d1af9034ead75eb0c1a9560537116a1 Mon Sep 17 00:00:00 2001 From: marcoschmickler Date: Sun, 26 Jun 2022 23:14:52 +0200 Subject: [PATCH] Photos --- kplayer/core/DatabaseManager.swift | 37 +++++++++++++++++++++++------ kplayer/photo/SPhotoAlbumView.swift | 23 +++++++++++++----- kplayer/photo/SPhotoModel.swift | 10 +++++++- kplayer/photo/SPhotoScrubber.swift | 1 + 4 files changed, 57 insertions(+), 14 deletions(-) diff --git a/kplayer/core/DatabaseManager.swift b/kplayer/core/DatabaseManager.swift index 29f089e..011659c 100644 --- a/kplayer/core/DatabaseManager.swift +++ b/kplayer/core/DatabaseManager.swift @@ -107,6 +107,28 @@ class DatabaseManager { } func saveItemMetaData(_ item: MediaItem) { + if (item.type == ItemType.PICS) { + if let oid = item.objectID { + do { + let i = try managedObjectContext.existingObject(with: oid) + + if i != nil { + let snap = i as! KSnapshot + updateSnapshot(snap: snap, c: item) + print("DB -- Update snapshot at \(item.indexId)") + + } + } catch { + } + } + else { + let kitem = getKItem(item) + let snap = KSnapshot(context: managedObjectContext) + snap.index = Int32(item.indexId) + kitem.addToSnapshots(snap) + updateSnapshot(snap: snap, c: item) + } + } if (item.type == ItemType.SNAPSHOT) { if let oid = item.objectID { do { @@ -264,13 +286,14 @@ class DatabaseManager { let snapshots = t.tagged as! Set for s in snapshots { - let sitem = loadSnapshot(s: s) - sitem.parent = tag - if sitem.name == tag.name { - print(sitem.name) - } - else { - tag.children.append(sitem) + if s.item != nil { + let sitem = loadSnapshot(s: s) + sitem.parent = tag + if sitem.name == tag.name { + print(sitem.name) + } else { + tag.children.append(sitem) + } } } diff --git a/kplayer/photo/SPhotoAlbumView.swift b/kplayer/photo/SPhotoAlbumView.swift index 06df843..97914c0 100644 --- a/kplayer/photo/SPhotoAlbumView.swift +++ b/kplayer/photo/SPhotoAlbumView.swift @@ -47,19 +47,30 @@ struct SPhotoAlbumView: View { } if more { v.overlay(VStack { - KToggleButton(text: "spring", binding: $model.spring).frame(height: 30) - KToggleButton(text: "edit", binding: $edit).frame(height: 30) - } - .frame(width: 60, alignment: .top).offset(x: 0, y: 70), alignment: .topLeading).overlay(TagEditor(item: model.allItems[model.index]) + KToggleButton(text: "spring", binding: $model.spring).frame(height: 30) + Button(action: { + saveSelectedItem() + }, label: { + Text("save") + }) + .buttonStyle(BorderlessButtonStyle()) + } + .frame(width: 60, alignment: .top).offset(x: 0, y: 70), alignment: .topLeading) + .overlay(TagEditor(item: model.allItems[model.index]) .frame(width: 60, alignment: .top).offset(x: 0, y: 70), alignment: .topTrailing) - } - else { + } else { v } } + func saveSelectedItem() { + let item = model.selectedItem + + DatabaseManager.sharedInstance.saveItemMetaData(item) + } + func cleanup() { for i in model.allItems { i.thumbImage = nil diff --git a/kplayer/photo/SPhotoModel.swift b/kplayer/photo/SPhotoModel.swift index 71532ce..e402536 100644 --- a/kplayer/photo/SPhotoModel.swift +++ b/kplayer/photo/SPhotoModel.swift @@ -31,12 +31,20 @@ class SPhotoModel : ObservableObject { indexItems = [MediaItem]() var nj = -1 for i in 0...allItems.count-1 { - let j = Int((Double(i) / Double(allItems.count)) * 17.0) + allItems[i].indexId = i + let j = Int((Double(i) / Double(allItems.count)) * 17.0) if j > nj { nj = j indexItems.append(allItems[i]) } } } + + let m = MediaItem(name: selectedItem.name, path: selectedItem.path, root: selectedItem.root, type: selectedItem.type) + m.children = allItems + + DatabaseManager.sharedInstance.enrichItem(m) + + selectedItem.indexId = 0 } } diff --git a/kplayer/photo/SPhotoScrubber.swift b/kplayer/photo/SPhotoScrubber.swift index 3f2b175..652b0f3 100644 --- a/kplayer/photo/SPhotoScrubber.swift +++ b/kplayer/photo/SPhotoScrubber.swift @@ -71,6 +71,7 @@ struct SPhotoScrubber: View { } model.selectedItem = item + item.indexId = i if item.thumbUrl != nil && item.thumbImage == nil { item.thumbImage = UIImage(systemName: "repeat")