Browse Source

Photos

master
marcoschmickler 4 years ago
parent
commit
6ad3782d53
  1. 23
      kplayer/core/DatabaseManager.swift
  2. 2
      kplayer/core/LocalManager.swift
  3. 4
      kplayer/core/MediaItem.swift
  4. 2
      kplayer/core/NetworkManager.swift
  5. 13
      kplayer/detail/DetailViewController+Show.swift
  6. 17
      kplayer/detail/DetailViewController.swift
  7. 14
      kplayer/photo/SPhotoModel.swift
  8. 2
      kplayer/server/kplayer.js
  9. 20
      kplayer/util/AsyncImage.swift

23
kplayer/core/DatabaseManager.swift

@ -295,6 +295,14 @@ class DatabaseManager {
tag.children.append(sitem) tag.children.append(sitem)
} }
} }
else {
do {
try managedObjectContext.delete(s)
try managedObjectContext.save()
} catch {
print("Error")
}
}
} }
res.append(tag) res.append(tag)
@ -312,13 +320,24 @@ class DatabaseManager {
} }
private func loadSnapshot(s: KSnapshot) -> MediaItem { 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 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.loaded = true
sitem.compilation = true sitem.compilation = true
sitem.objectID = i.objectID 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.time = s.time
c.length = s.length c.length = s.length
c.loop = s.loop c.loop = s.loop

2
kplayer/core/LocalManager.swift

@ -10,7 +10,7 @@ class LocalManager {
var settings = KSettings() var settings = KSettings()
var authenticated = true
var authenticated = false
var favorites = MediaItem(name: "fav", path: "", root: "", type: ItemType.FAVROOT) var favorites = MediaItem(name: "fav", path: "", root: "", type: ItemType.FAVROOT)

4
kplayer/core/MediaItem.swift

@ -274,8 +274,8 @@ class MediaItem: CustomDebugStringConvertible, ObservableObject, Identifiable {
Absoluter Pfad des Items. Absoluter Pfad des Items.
*/ */
var fullPath: String { 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 return enc
} }

2
kplayer/core/NetworkManager.swift

@ -439,7 +439,7 @@ class NetworkManager {
let len = items.root.count let len = items.root.count
let url = nodeurl + "listfiles" + items.fullPath let url = nodeurl + "listfiles" + items.fullPath
print(items)
// print(items)
print(url) print(url)
AF.request(url).responseJSON { AF.request(url).responseJSON {

13
kplayer/detail/DetailViewController+Show.swift

@ -13,7 +13,7 @@ extension DetailViewController {
if sectionItem.isVideo() { if sectionItem.isVideo() {
showVideo(selectedItem: selectedItem) showVideo(selectedItem: selectedItem)
} else if sectionItem.isPic() { } else if sectionItem.isPic() {
showPhotos(sectionItem.children)
showPhotos(sectionItem.children, selectedItem: selectedItem)
} else if sectionItem.isWeb() { } else if sectionItem.isWeb() {
showWeb(selectedItem: selectedItem) showWeb(selectedItem: selectedItem)
} else if sectionItem.type == ItemType.DOWNLOAD { } 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) let base = MediaItem(name: "", path: "", root: "", type: ItemType.PICFOLDER)
base.children = im base.children = im
if im.count < 1 {
return
}
let model = SPhotoModel(allItems: base.clone().children) let model = SPhotoModel(allItems: base.clone().children)
model.selectItem(selectedItem)
let view = SPhotoAlbumView(completionHandler: { saved in 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); self.dismiss(animated: true, completion: nil);
}, model: model) }, model: model)

17
kplayer/detail/DetailViewController.swift

@ -343,18 +343,27 @@ class DetailViewController: UIViewController, UICollectionViewDelegateFlowLayout
let sectionItem = detail.children[indexPath.section] let sectionItem = detail.children[indexPath.section]
currentItem = sectionItem 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 = { let weiter: () -> Void = {
if (sectionItem.type == ItemType.VIDEO || sectionItem.loaded) {
// if (sectionItem.type == ItemType.VIDEO || sectionItem.loaded) {
if indexPath.item >= sectionItem.children.count { if indexPath.item >= sectionItem.children.count {
selectedItem = sectionItem
print(sectionItem.name) print(sectionItem.name)
} else { } else {
selectedItem = sectionItem.children[indexPath.item] selectedItem = sectionItem.children[indexPath.item]
print(selectedItem.name) print(selectedItem.name)
} }
}
self.showDetails(sectionItem: sectionItem, selectedItem: selectedItem)
// }
self.showDetails(sectionItem: self.currentItem!, selectedItem: selectedItem)
} }
delegate!.loadDetails(selectedItem: currentItem!, completionHandler: weiter) delegate!.loadDetails(selectedItem: currentItem!, completionHandler: weiter)

14
kplayer/photo/SPhotoModel.swift

@ -47,4 +47,18 @@ class SPhotoModel : ObservableObject {
selectedItem.indexId = 0 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;
}
}
}
}
} }

2
kplayer/server/kplayer.js

@ -38,7 +38,7 @@ function getFiles(address) {
} }
app.get('/listfiles/*', function (req, res) { app.get('/listfiles/*', function (req, res) {
var address = req.path.substr(10)
var address = decodeURIComponent(req.path.substr(10))
console.log("listdirs " + address); console.log("listdirs " + address);
if (!req.path.startsWith("/listfiles/srv/samba/ren/")) { if (!req.path.startsWith("/listfiles/srv/samba/ren/")) {

20
kplayer/util/AsyncImage.swift

@ -1,7 +1,5 @@
import SwiftUI import SwiftUI
import Haneke import Haneke
import Alamofire
//import AlamofireImage
struct AsyncImage<Placeholder: View>: View { struct AsyncImage<Placeholder: View>: View {
@StateObject private var item: MediaItem @StateObject private var item: MediaItem
@ -27,10 +25,7 @@ struct AsyncImage<Placeholder: View>: View {
private var content: some View { private var content: some View {
Group { Group {
if item.image != nil {
image(item.image!)
}
else if item.thumbImage != nil {
if item.thumbImage != nil {
image(item.thumbImage!) image(item.thumbImage!)
} else { } else {
placeholder placeholder
@ -39,20 +34,21 @@ struct AsyncImage<Placeholder: View>: View {
} }
func setImage(newItem: MediaItem) { func setImage(newItem: MediaItem) {
if newItem.thumbImage != nil {
return
}
if newItem.image != nil { if newItem.image != nil {
newItem.thumbImage = newItem.image!.scaleToSize(66.0, height: 44.0) newItem.thumbImage = newItem.image!.scaleToSize(66.0, height: 44.0)
newItem.image = nil
} else if newItem.thumbImage == nil {
} else {
if newItem.thumbUrl != nil { if newItem.thumbUrl != nil {
let URL = Foundation.URL(string: newItem.thumbUrlAbsolute)! let URL = Foundation.URL(string: newItem.thumbUrlAbsolute)!
print("fetch \(newItem.thumbUrlAbsolute)")
Shared.imageCache.fetch(URL: URL).onSuccess { Shared.imageCache.fetch(URL: URL).onSuccess {
i in 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)
} }
} }
} }

Loading…
Cancel
Save