Browse Source

klappt

master
marcoschmickler 5 years ago
parent
commit
e1e1ea11c9
  1. 14
      kplayer/core/MediaItem.swift
  2. 41
      kplayer/core/NetworkManager.swift
  3. 10
      kplayer/core/ThumbnailCache.swift
  4. 2
      kplayer/detail/DetailViewController.swift
  5. 6
      kplayer/master/MasterViewController.swift
  6. 102
      kplayer/master/NetworkDelegate.swift

14
kplayer/core/MediaItem.swift

@ -43,6 +43,7 @@ class MediaItem: CustomDebugStringConvertible {
var thumbUrl: String?
var local = false
var leaf = false
convenience init(model: MediaModel) {
self.init(name: model.name, path: model.path, root: model.root, type: model.type)
@ -212,24 +213,19 @@ class MediaItem: CustomDebugStringConvertible {
}
func isWeb() -> Bool {
return superRoot().type == ItemType.WEBROOT
return type == ItemType.WEB
}
func isPic() -> Bool {
return superRoot().type == ItemType.PICROOT && type == ItemType.PICS
return type == ItemType.PICS || type == ItemType.DETAILS
}
func isVideo() -> Bool {
return (superRoot().type == ItemType.VIDEOROOT || (superRoot().type == ItemType.VIDEO) || local) && (type == ItemType.VIDEO || type == ItemType.SNAPSHOT)
return type == ItemType.VIDEO || type == ItemType.SNAPSHOT
}
func isDetails() -> Bool {
if !children.isEmpty {
if (children[0].type == ItemType.VIDEO) {
return true;
}
}
return type == ItemType.DETAILS
return isWeb() || isPic() || isVideo()
}
func isFolder() -> Bool {

41
kplayer/core/NetworkManager.swift

@ -5,7 +5,6 @@
import Foundation
import Alamofire
//import Cent
class NetworkManager {
static let sharedInstance = NetworkManager()
@ -225,7 +224,7 @@ class NetworkManager {
let len = root.count
let url = (root as NSString).replacingOccurrences(of: " ", with: "+")
let ux = baseurl + "/service/listdirs" + url
let ux = nodeurl + "listdirs" + url
print(ux)
AF.request(ux).responseJSON {
(response) in
@ -235,40 +234,28 @@ class NetworkManager {
var leaf = false
var hasPics = false
let result = json as! [String]
let result = json as! [[String]]
print("Empfange \(result.count) Ergebnisse")
for s in result {
var name = s[0]
var type = s[1]
if s == "!!LEAF!!" {
leaf = true
} else {
let st = s.substringStartingFrom(len)
// print(st)
if (st.endsWith("/")) {
let i = MediaItem(name: st, path: st, root: root, type: ItemType.FOLDER)
res.append(i)
} else {
if s.lowercased().hasSuffix(".jpg") {
if !hasPics {
hasPics = true
var t = ItemType.FOLDER
let name = (root as NSString).lastPathComponent
let namelen = name.count
let rootstart = root.substringRight(namelen)
let i = MediaItem(name: name, path: "", root: rootstart, type: ItemType.DETAILS)
res.append(i)
if (type == "video") {
t = ItemType.VIDEO
}
} else {
let i = MediaItem(name: st, path: "", root: root, type: ItemType.FOLDER)
res.append(i)
if (type == "pictures") {
t = ItemType.DETAILS
}
if (type == "web") {
t = ItemType.WEB
}
}
let i = MediaItem(name: name, path: name, root: root, type: t)
res.append(i)
}
completionHandler(res, leaf)
}
@ -280,7 +267,7 @@ class NetworkManager {
return
}
if (item.type != ItemType.FOLDER && item.type != ItemType.DETAILS) {
if (item.type != ItemType.VIDEO && item.type != ItemType.DETAILS) {
return
}

10
kplayer/core/ThumbnailCache.swift

@ -71,13 +71,14 @@ class ThumbnailCache {
}
for bild in start ..< end {
let sizeHi = (Int(bytes[index]) << 24) + (Int(bytes[index+1]) << 16)
let size = (Int(bytes[index+2]) << 8) + Int(bytes[index+3]) + sizeHi
if (bytes.count > index + 3) {
let sizeHi = (Int(bytes[index]) << 24) + (Int(bytes[index + 1]) << 16)
let size = (Int(bytes[index + 2]) << 8) + Int(bytes[index + 3]) + sizeHi
index += 4
if size > 0 && (d.count >= index + size){
if size > 0 && (d.count >= index + size) {
// var buf = //UnsafeMutablePointer<UInt8>(&bytes[index])
let part = d.subdata(in: index ..< (index + size))
let part = d.subdata(in: index..<(index + size))
if let img = UIImage(data: part) {
let imageRef = img.cgImage;
self.total += d.count
@ -90,6 +91,7 @@ class ThumbnailCache {
index += size
}
}
}
func preload(_ start: Int, count: Int) {

2
kplayer/detail/DetailViewController.swift

@ -298,7 +298,7 @@ class DetailViewController: UIViewController, UICollectionViewDelegateFlowLayout
self.showVideo(selectedItem: selectedItem)
} else if sectionItem.isPic() {
self.showPhotos(sectionItem.children)
} else {
} else if sectionItem.isWeb() {
self.showWeb(sectionItem.children)
}
}

6
kplayer/master/MasterViewController.swift

@ -131,10 +131,10 @@ class MasterViewController: UITableViewController, UISearchResultsUpdating {
delegate!.loadFolder(selectedItem: selectedItem) {
(neu) in
if neu.isDetails() || neu.isVideo() {
self.gotoDetails(neu)
} else {
if neu.isFolder() {
self.gotoNextFolder(neu)
} else {
self.gotoDetails(neu)
}
}

102
kplayer/master/NetworkDelegate.swift

@ -24,15 +24,15 @@ class NetworkDelegate: MasterDelegate, DetailDelegate {
if p.type == ItemType.FAVROOT {
NetworkManager.sharedInstance.loadFavDirs(dir, completionHandler: weiter)
}
else if p.type == ItemType.VIDEOROOT {
else if selectedItem.isVideo() {
NetworkManager.sharedInstance.loadVideoDirs(dir, completionHandler: weiter)
}
else if selectedItem.isDetails() {
NetworkManager.sharedInstance.loadPicDirs(dir, completionHandler: weiter)
}
else if p.type == ItemType.WEBROOT {
weiter(p.children)
}
else {
NetworkManager.sharedInstance.loadPicDirs(dir, completionHandler: weiter)
}
}
func loadFolder(selectedItem: MediaItem, completionHandler: @escaping (MediaItem) -> Void) -> Void {
@ -55,43 +55,47 @@ class NetworkDelegate: MasterDelegate, DetailDelegate {
NetworkManager.sharedInstance.listDirs(selectedItem.encodedDir!, completionHandler: {
(i, leaf) in
let details = MediaItem(name: selectedItem.name, path: selectedItem.path, root: selectedItem.root, type: ItemType.DETAILS)
let neu = MediaItem(name: selectedItem.name, path: "", root: "", type: ItemType.FOLDER)
let newFolder = MediaItem(name: ".", path: "", root: selectedItem.root, type: ItemType.DETAILS)
newFolder.loaded = true
var hasDetails = false
for item in i {
if item.type != ItemType.FOLDER && item.isVideo() {
item.parent = newFolder
newFolder.children.append(item)
} else {
if item.path == "" {
item.path = item.name
item.name = ""
}
if item.type == ItemType.PICS {
if !hasDetails {
neu.children.append(details)
hasDetails = true
}
} else {
// item.type = ItemType.FOLDER
item.parent = selectedItem
neu.children.append(item)
}
}
}
if newFolder.children.count > 0 {
newFolder.parent = selectedItem
neu.children.append(newFolder)
}
let isVideo = selectedItem.parent != nil && selectedItem.parent!.type == ItemType.VIDEOROOT
if leaf || isVideo {
selectedItem.children = i
selectedItem.sort()
//
// let details = MediaItem(name: selectedItem.name, path: selectedItem.path, root: selectedItem.root, type: ItemType.DETAILS)
// let neu = MediaItem(name: selectedItem.name, path: "", root: "", type: ItemType.FOLDER)
// let newFolder = MediaItem(name: ".", path: "", root: selectedItem.root, type: ItemType.DETAILS)
// newFolder.loaded = true
//
// var hasDetails = false
//
// for item in i {
// item.leaf = leaf
// if item.type != ItemType.FOLDER && item.isVideo() {
// item.parent = newFolder
// newFolder.children.append(item)
// } else {
// if item.path == "" {
// item.path = item.name
// item.name = ""
// }
//
// if item.type == ItemType.PICS {
// if !hasDetails {
// neu.children.append(details)
// hasDetails = true
// }
// } else {
//// item.type = ItemType.FOLDER
// item.parent = selectedItem
// neu.children.append(item)
// }
// }
// }
//
// if newFolder.children.count > 0 {
// newFolder.parent = selectedItem
// neu.children.append(newFolder)
// }
//
// let isVideo = selectedItem.parent != nil && selectedItem.parent!.type == ItemType.VIDEOROOT
// if leaf || isVideo {
// if selectedItem.type == ItemType.VIDEOROOT {
// NetworkManager.sharedInstance.loadVideoDirs(selectedItem.encodedDir!, completionHandler: {
// (i) in
@ -100,15 +104,15 @@ class NetworkDelegate: MasterDelegate, DetailDelegate {
// return
// })
// }
if selectedItem.type == ItemType.FOLDER {
selectedItem.type = ItemType.DETAILS
}
//
// if selectedItem.type == ItemType.FOLDER {
// selectedItem.type = ItemType.DETAILS
// }
//
completionHandler(selectedItem)
} else {
completionHandler(neu)
}
// } else {
// completionHandler(neu)
// }
})
}

Loading…
Cancel
Save