diff --git a/kplayer/core/DatabaseManager.swift b/kplayer/core/DatabaseManager.swift index 011659c..53d211e 100644 --- a/kplayer/core/DatabaseManager.swift +++ b/kplayer/core/DatabaseManager.swift @@ -295,6 +295,14 @@ class DatabaseManager { tag.children.append(sitem) } } + else { + do { + try managedObjectContext.delete(s) + try managedObjectContext.save() + } catch { + print("Error") + } + } } res.append(tag) @@ -312,13 +320,24 @@ class DatabaseManager { } private func loadSnapshot(s: KSnapshot) -> MediaItem { + let stype : ItemType + let ctype : ItemType + if s.item!.type! == "pics" { + stype = ItemType.PICS + ctype = ItemType.PICS + } + else { + stype = ItemType.VIDEO + ctype = ItemType.SNAPSHOT + } + let i = s.item! - let sitem = MediaItem(name: i.name!, path: i.path!, root: i.root!, type: ItemType.VIDEO) + let sitem = MediaItem(name: i.name!, path: i.path!, root: i.root!, type: stype) sitem.loaded = true sitem.compilation = true sitem.objectID = i.objectID - let c = MediaItem(name: i.name!, path: i.path!, root: i.root!, type: ItemType.SNAPSHOT) + let c = MediaItem(name: i.name!, path: i.path!, root: i.root!, type: ctype) c.time = s.time c.length = s.length c.loop = s.loop diff --git a/kplayer/core/LocalManager.swift b/kplayer/core/LocalManager.swift index 46562f0..9a54ea9 100644 --- a/kplayer/core/LocalManager.swift +++ b/kplayer/core/LocalManager.swift @@ -10,7 +10,7 @@ class LocalManager { var settings = KSettings() - var authenticated = true + var authenticated = false var favorites = MediaItem(name: "fav", path: "", root: "", type: ItemType.FAVROOT) diff --git a/kplayer/core/MediaItem.swift b/kplayer/core/MediaItem.swift index c56db2f..ad3f68c 100644 --- a/kplayer/core/MediaItem.swift +++ b/kplayer/core/MediaItem.swift @@ -274,8 +274,8 @@ class MediaItem: CustomDebugStringConvertible, ObservableObject, Identifiable { Absoluter Pfad des Items. */ var fullPath: String { - let fpath = "\(root)/\(path)/\(name)" - let enc = fpath.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)! + let fpath = (path == "") ? "\(root)/\(name)" : "\(root)/\(path)/\(name)" + let enc = fpath.precomposedStringWithCanonicalMapping.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)! return enc } diff --git a/kplayer/core/NetworkManager.swift b/kplayer/core/NetworkManager.swift index 8470991..966d643 100644 --- a/kplayer/core/NetworkManager.swift +++ b/kplayer/core/NetworkManager.swift @@ -439,7 +439,7 @@ class NetworkManager { let len = items.root.count let url = nodeurl + "listfiles" + items.fullPath - print(items) + // print(items) print(url) AF.request(url).responseJSON { diff --git a/kplayer/detail/DetailViewController+Show.swift b/kplayer/detail/DetailViewController+Show.swift index 77178b2..6c6ace5 100644 --- a/kplayer/detail/DetailViewController+Show.swift +++ b/kplayer/detail/DetailViewController+Show.swift @@ -13,7 +13,7 @@ extension DetailViewController { if sectionItem.isVideo() { showVideo(selectedItem: selectedItem) } else if sectionItem.isPic() { - showPhotos(sectionItem.children) + showPhotos(sectionItem.children, selectedItem: selectedItem) } else if sectionItem.isWeb() { showWeb(selectedItem: selectedItem) } else if sectionItem.type == ItemType.DOWNLOAD { @@ -21,15 +21,18 @@ extension DetailViewController { } } - func showPhotos(_ im: [MediaItem]) { + func showPhotos(_ im: [MediaItem], selectedItem: MediaItem) { let base = MediaItem(name: "", path: "", root: "", type: ItemType.PICFOLDER) base.children = im - + if im.count < 1 { + return + } let model = SPhotoModel(allItems: base.clone().children) + model.selectItem(selectedItem) let view = SPhotoAlbumView(completionHandler: { saved in - // self.collectionView.reloadData() - // self.collectionView.collectionViewLayout.invalidateLayout() + self.collectionView.reloadData() + self.collectionView.collectionViewLayout.invalidateLayout() self.dismiss(animated: true, completion: nil); }, model: model) diff --git a/kplayer/detail/DetailViewController.swift b/kplayer/detail/DetailViewController.swift index d08ac0c..8b123b5 100644 --- a/kplayer/detail/DetailViewController.swift +++ b/kplayer/detail/DetailViewController.swift @@ -343,18 +343,27 @@ class DetailViewController: UIViewController, UICollectionViewDelegateFlowLayout let sectionItem = detail.children[indexPath.section] currentItem = sectionItem - var selectedItem = currentItem! + + if currentItem!.type == .PICS { + currentItem = sectionItem.clone() + } + if currentItem!.type == .FOLDER { + currentItem = sectionItem.children[indexPath.item] + } + + var selectedItem = sectionItem let weiter: () -> Void = { - if (sectionItem.type == ItemType.VIDEO || sectionItem.loaded) { + // if (sectionItem.type == ItemType.VIDEO || sectionItem.loaded) { if indexPath.item >= sectionItem.children.count { + selectedItem = sectionItem print(sectionItem.name) } else { selectedItem = sectionItem.children[indexPath.item] print(selectedItem.name) } - } - self.showDetails(sectionItem: sectionItem, selectedItem: selectedItem) + // } + self.showDetails(sectionItem: self.currentItem!, selectedItem: selectedItem) } delegate!.loadDetails(selectedItem: currentItem!, completionHandler: weiter) diff --git a/kplayer/photo/SPhotoModel.swift b/kplayer/photo/SPhotoModel.swift index e402536..7fc9182 100644 --- a/kplayer/photo/SPhotoModel.swift +++ b/kplayer/photo/SPhotoModel.swift @@ -47,4 +47,18 @@ class SPhotoModel : ObservableObject { selectedItem.indexId = 0 } + + func selectItem(_ item: MediaItem) { + if let thumb = item.thumbUrl { + for i in 0...allItems.count - 1 { + if allItems[i].thumbUrl != nil && allItems[i].thumbUrl! == thumb { + selectedItem = item + selectedItem.indexId = i + index = i + + break; + } + } + } + } } diff --git a/kplayer/server/kplayer.js b/kplayer/server/kplayer.js index b7e90eb..a670c1b 100644 --- a/kplayer/server/kplayer.js +++ b/kplayer/server/kplayer.js @@ -38,7 +38,7 @@ function getFiles(address) { } app.get('/listfiles/*', function (req, res) { - var address = req.path.substr(10) + var address = decodeURIComponent(req.path.substr(10)) console.log("listdirs " + address); if (!req.path.startsWith("/listfiles/srv/samba/ren/")) { diff --git a/kplayer/util/AsyncImage.swift b/kplayer/util/AsyncImage.swift index 5a3d4cc..3ca330e 100644 --- a/kplayer/util/AsyncImage.swift +++ b/kplayer/util/AsyncImage.swift @@ -1,7 +1,5 @@ import SwiftUI import Haneke -import Alamofire -//import AlamofireImage struct AsyncImage: View { @StateObject private var item: MediaItem @@ -27,10 +25,7 @@ struct AsyncImage: View { private var content: some View { Group { - if item.image != nil { - image(item.image!) - } - else if item.thumbImage != nil { + if item.thumbImage != nil { image(item.thumbImage!) } else { placeholder @@ -39,20 +34,21 @@ struct AsyncImage: View { } func setImage(newItem: MediaItem) { + if newItem.thumbImage != nil { + return + } + if newItem.image != nil { newItem.thumbImage = newItem.image!.scaleToSize(66.0, height: 44.0) - newItem.image = nil - } else if newItem.thumbImage == nil { + } else { if newItem.thumbUrl != nil { let URL = Foundation.URL(string: newItem.thumbUrlAbsolute)! - print("fetch \(newItem.thumbUrlAbsolute)") - Shared.imageCache.fetch(URL: URL).onSuccess { i in - //newItem.image = i - newItem.thumbImage = i.scaleToSize(66.0, height: 44.0) + newItem.image = i + newItem.thumbImage = newItem.image!.scaleToSize(66.0, height: 44.0) } } }