From 7778f0433ce1553bc0954ab61a8569b8908b522f Mon Sep 17 00:00:00 2001 From: marcoschmickler Date: Tue, 29 Apr 2025 13:48:43 +0200 Subject: [PATCH] MasterDetail --- kplayer/core/DatabaseManager.swift | 1 + kplayer/photo/SPhotoAlbumView.swift | 11 +++++++++++ kplayer/video/SVideoPlayer.swift | 28 +++++++++++++++++----------- 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/kplayer/core/DatabaseManager.swift b/kplayer/core/DatabaseManager.swift index 2443ab3..2e3f4b3 100644 --- a/kplayer/core/DatabaseManager.swift +++ b/kplayer/core/DatabaseManager.swift @@ -289,6 +289,7 @@ rollback() let results = try! managedObjectContext.fetch(fetchRequest) allTags.removeAll() + allTags[""] = [String]() for t in results { var path = "" diff --git a/kplayer/photo/SPhotoAlbumView.swift b/kplayer/photo/SPhotoAlbumView.swift index 7dc8885..d8728b3 100644 --- a/kplayer/photo/SPhotoAlbumView.swift +++ b/kplayer/photo/SPhotoAlbumView.swift @@ -77,6 +77,17 @@ struct SPhotoAlbumView: View { 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()) } .frame(width: 60, alignment: .top).offset(x: 0, y: 70), alignment: .topLeading) .overlay(TagEditor(item: model.allItems[model.index], completionHandler: DatabaseManager.sharedInstance.saveItemMetaData) diff --git a/kplayer/video/SVideoPlayer.swift b/kplayer/video/SVideoPlayer.swift index 847af8b..4e56523 100644 --- a/kplayer/video/SVideoPlayer.swift +++ b/kplayer/video/SVideoPlayer.swift @@ -105,6 +105,11 @@ struct SVideoPlayer: View, EditItemDelegate { HStack { VStack { HStack { + Text(model.currentSnapshot.name).foregroundColor(Color.blue).fontWeight(Font.Weight.light) + } + LazyVGrid(columns: [ + GridItem(.adaptive(minimum: 45)) + ], spacing: 5) { Button(action: { if model.dirty { if LocalManager.sharedInstance.settings.confirm { @@ -130,7 +135,7 @@ struct SVideoPlayer: View, EditItemDelegate { closePlayer(withSave: false) } } - if !model.baseItem.compilation { + /* if !model.baseItem.compilation { Button(action: { if isEnd() { setEnd() @@ -151,7 +156,7 @@ struct SVideoPlayer: View, EditItemDelegate { blackShown = false } } - } + } */ KToggleButton(text: "\(relative())", binding: $more) Button(action: { @@ -201,9 +206,7 @@ struct SVideoPlayer: View, EditItemDelegate { KToggleButton(text: "embd", binding: $embedded).frame(height: 30) } - HStack { - Text(model.currentSnapshot.name).foregroundColor(Color.blue).fontWeight(Font.Weight.light) - } + } HStack { ScrollViewReader { scrollvalue in @@ -220,7 +223,7 @@ struct SVideoPlayer: View, EditItemDelegate { } } } - } + }.frame(height: 50) // .onChange(of: scrollTarget { target in // if let tg = target { // scrollTarget = nil @@ -233,7 +236,12 @@ struct SVideoPlayer: View, EditItemDelegate { Spacer() VStack { - HStack { + Text(""" + (\(model.codec) \(model.height), \(model.nominalFrameRate), \(model.bitRate)m)\n\(model.scale, specifier: "%.2f")x (\(model.dragOffset.width, specifier: "%.0f"),\(model.dragOffset.height, specifier: "%.0f")) + """).foregroundColor(Color.blue).fontWeight(Font.Weight.light) + LazyVGrid(columns: [ + GridItem(.adaptive(minimum: 45)) + ], spacing: 5) { Button(action: { model.edit.toggle() }, label: { Text("edit") }) @@ -254,13 +262,10 @@ struct SVideoPlayer: View, EditItemDelegate { } } - Text(""" - (\(model.codec) \(model.height), \(model.nominalFrameRate), \(model.bitRate)m)\n\(model.scale, specifier: "%.2f")x (\(model.dragOffset.width, specifier: "%.0f"),\(model.dragOffset.height, specifier: "%.0f")) - """).foregroundColor(Color.blue).fontWeight(Font.Weight.light) } } } - .frame(height: 50) + // .frame(height: 50) GeometryReader { geometry in VStack { @@ -674,6 +679,7 @@ struct SVideoPlayer: View, EditItemDelegate { let cgImage = try imgGenerator.copyCGImage(at: time, actualTime: nil) let thumbnail = UIImage(cgImage: cgImage) model.dirty = true + UIPasteboard.general.image = thumbnail showThumbnail(currentItem: model.baseItem, thumbnail: thumbnail, time: time)