Browse Source

aufräumen

master
Marco Schmickler 10 years ago
parent
commit
1e00b3c554
  1. 2
      kplayer/AppDelegate.swift
  2. 8
      kplayer/core/ItemModel.swift
  3. 17
      kplayer/core/MediaItem.swift
  4. 76
      kplayer/core/NetworkManager.swift
  5. 153
      kplayer/master/MasterViewController.swift

2
kplayer/AppDelegate.swift

@ -25,7 +25,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele
let masterNavigationController = splitViewController.viewControllers[0] as! UINavigationController
let controller = masterNavigationController.topViewController as! MasterViewController
controller.items = [
controller.model.items = [
MediaItem(name: "fav", path:"", root: "/srv/samba/ren/fav", type: ItemType.VIDEOROOT),
MediaItem(name: "knk", path:"", root: "/srv/samba/ren/knk", type: ItemType.VIDEOROOT),
MediaItem(name: "knk_archiv", path:"", root: "/srv/samba/ren/knk_archiv", type: ItemType.VIDEOROOT),

8
kplayer/core/ItemModel.swift

@ -10,8 +10,7 @@ class ItemModel {
var itemsMap = Dictionary<String, MediaItem>()
func addItem(item: MediaItem) {
let path = item.root + "/" + item.path
print(path)
let path = item.encodedDir!
var folder = itemsMap[path]
if folder == nil {
@ -25,4 +24,9 @@ class ItemModel {
item.parent = folder
}
func removeAll() {
items.removeAll()
itemsMap.removeAll()
}
}

17
kplayer/core/MediaItem.swift

@ -177,4 +177,21 @@ class MediaItem: CustomDebugStringConvertible {
return self
}
func sort() {
children.sortInPlace({
$0.sortName < $1.sortName
})
}
func isPic() -> Bool {
return superRoot().type == ItemType.ROOT
}
func isVideo() -> Bool {
return superRoot().type == ItemType.VIDEOROOT
}
func isFolder() -> Bool {
return type == ItemType.ROOT || type == ItemType.VIDEOROOT || type == ItemType.FOLDER
}
}

76
kplayer/core/NetworkManager.swift

@ -32,19 +32,20 @@ class NetworkManager {
Alamofire.request(.GET, url).responseJSON {
(_, _, response) in
if let json = response.value {
if let json = response.value as? [String] {
print("Empfange \(json.count) Ergebnisse")
for s in json as! [String] {
print(s)
for s in json {
// print(s)
if s.hasSuffix(".mp4") || s.hasSuffix(".m4v") {
let l = s.length
let name = NSURL(fileURLWithPath: s).lastPathComponent!
var pathlen = l - len - name.length
// if (pathlen > 1000) {
print(pathlen)
print(name)
print(s)
// print(pathlen)
// print(name)
// print(s)
// }
if (pathlen < 2) {
pathlen = 2
@ -75,18 +76,20 @@ class NetworkManager {
if let json = response.value {
var items = Dictionary<String, MediaItem>()
for s in json as! [String] {
print(s)
let result = json as! [String]
print("Empfange \(result.count) Ergebnisse")
for s in result {
// print(s)
if s.lowercaseString.hasSuffix(".jpg") {
let l = s.length
let name = (s as NSString).lastPathComponent
var pathlen = l - len - name.length
// if (pathlen > 1000) {
print(pathlen)
print(name)
print(s)
// }
// print(pathlen)
// print(name)
// print(s)
if (pathlen < 2) {
pathlen = 2
}
@ -97,7 +100,7 @@ class NetworkManager {
let fl = path.length
let pfl = fl - folderName.length
print("\(folderName) \(pfl)")
// print("\(folderName) \(pfl)")
let fpath = (path as NSString).substringWithRange(NSMakeRange(0, pfl))
let i = MediaItem(name: folderName, path: fpath, root: root, type: ItemType.PICS)
@ -132,52 +135,39 @@ class NetworkManager {
if let json = response.value {
var res = [MediaItem]()
var leaf = false
var hasPics = false
let result = json as! [String]
for s in json as! [String] {
print("Empfange \(result.count) Ergebnisse")
for s in result {
if s == "!!LEAF!!" {
leaf = true
} else {
// let (a,b) = j #
let index1 = s.startIndex.advancedBy(len)
let st = s.substringFromIndex(index1)
print(st)
// print(st)
if (st.endsWith("/")) {
let i = MediaItem(name: st, path: st, root: root, type: ItemType.FOLDER)
res.append(i)
} else {
if s.lowercaseString.hasSuffix(".jpg") {
let l = s.length
let name = (s as NSString).lastPathComponent
let pathlen = l - len - name.length
// if (pathlen > 1000) {
print(pathlen)
print(name)
print(s)
// }
if (pathlen > 2) {
let path = (s as NSString).substringWithRange(NSMakeRange(len, pathlen - 1))
let folderName = NSURL(fileURLWithPath: path).lastPathComponent!
let fl = path.length
let pfl = fl - folderName.length
print("\(folderName) \(pfl)")
let fpath = (path as NSString).substringWithRange(NSMakeRange(0, pfl))
let i = MediaItem(name: folderName, path: fpath, root: root, type: ItemType.PICS)
i.thumbUrl = "\(s)?preview=true"
if !hasPics {
hasPics = true
let name = (root as NSString).lastPathComponent
let namelen = name.characters.count
let idx = root.endIndex.advancedBy(namelen * -1)
let rootstart = root.substringToIndex(idx)
let i = MediaItem(name: name, path: "", root: rootstart, type: ItemType.DETAILS)
res.append(i)
} else {
print(st)
}
} else {
let i = MediaItem(name: st, path: "", root: root, type: ItemType.PICS)
let i = MediaItem(name: st, path: "", root: root, type: ItemType.FOLDER)
res.append(i)
}
}

153
kplayer/master/MasterViewController.swift

@ -11,8 +11,7 @@ import CoreData
class MasterViewController: UITableViewController {
var items = [MediaItem]()
var itemsMap = Dictionary<String, MediaItem>()
let model = ItemModel()
override func awakeFromNib() {
super.awakeFromNib()
@ -22,23 +21,6 @@ class MasterViewController: UITableViewController {
}
}
func addItem(item: MediaItem) {
let path = item.encodedDir!
print(path)
var folder = itemsMap[path]
if folder == nil {
folder = MediaItem(name: "", path: item.path, root: item.root, type: ItemType.FOLDER)
itemsMap[path] = folder!
items.append(folder!)
}
item.index = folder!.children.count
folder!.children.append(item)
item.parent = folder
}
override func viewDidLoad() {
}
@ -50,82 +32,105 @@ class MasterViewController: UITableViewController {
// Dispose of any resources that can be recreated.
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("\(indexPath.row)")
let selectedItem = items[indexPath.row]
if (selectedItem.type == ItemType.DETAILS) {
func selectLoadedItem(selectedItem: MediaItem) {
switch selectedItem.type {
case ItemType.DETAILS:
performSegueWithIdentifier("showDetail", sender: self)
return
}
if (selectedItem.type == ItemType.FOLDER) {
if (!selectedItem.children.isEmpty) {
if selectedItem.children[0].type == ItemType.VIDEO {
case ItemType.FOLDER:
if selectedItem.children.first?.type == ItemType.VIDEO {
performSegueWithIdentifier("showDetail", sender: self)
return
}
else {
gotoNextFolder(selectedItem)
}
default:
print(selectedItem.type)
}
}
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = mainStoryboard.instantiateViewControllerWithIdentifier("mastertable") as! MasterViewController
if (selectedItem.type == ItemType.FOLDER) {
vc.navigationItem.title = selectedItem.name;
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("\(indexPath.row)")
let selectedItem = model.items[indexPath.row]
if selectedItem.loaded {
vc.items = selectedItem.children
navigationController!.pushViewController(vc, animated: true)
if selectedItem.type == ItemType.DETAILS {
gotoDetails(selectedItem)
return
}
// selectLoadedItem(selectedItem)
}
if (selectedItem.type == ItemType.ROOT) || (selectedItem.type == ItemType.VIDEOROOT) || (selectedItem.type == ItemType.FOLDER) {
print (selectedItem.path)
NetworkManager.sharedInstance.listDirs(selectedItem.encodedDir!, completionHandler: {
(i, leaf) in
if (selectedItem.isFolder()) {
print(selectedItem.path)
let supertype = selectedItem.superRoot().type
NetworkManager.sharedInstance.listDirs(selectedItem.encodedDir!) {
(i, leaf) in
var neu = [MediaItem]()
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 && supertype != ItemType.VIDEOROOT {
if item.type != ItemType.FOLDER && item.isVideo() {
item.parent = newFolder
newFolder.children.append(item)
}
else {
} else {
if item.path == "" {
item.path = item.name
item.name = ""
}
item.type = ItemType.FOLDER
if item.type == ItemType.PICS {
if !hasDetails {
neu.children.append(details)
hasDetails = true
}
}
else {
// item.type = ItemType.FOLDER
item.parent = selectedItem
neu.append(item)
neu.children.append(item)
}
}
}
if newFolder.children.count > 0 {
newFolder.parent = selectedItem
neu.append(newFolder)
neu.children.append(newFolder)
}
let isVideo = selectedItem.parent != nil && selectedItem.parent!.type == ItemType.VIDEOROOT
if leaf || isVideo {
self.gotoDetails(selectedItem)
} else {
self.gotoNextFolder(neu)
}
}
}
}
private func gotoNextFolder(selectedItem: MediaItem) {
let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc = mainStoryboard.instantiateViewControllerWithIdentifier("mastertable") as! MasterViewController
vc.navigationItem.title = selectedItem.name;
vc.model.items = selectedItem.children
navigationController!.pushViewController(vc, animated: true)
}
private func gotoDetails(selectedItem: MediaItem) {
let weiter: NetworkManager.Weiter = {
(g) in
vc.items.removeAll()
vc.itemsMap.removeAll()
let model = ItemModel()
for f in g {
vc.addItem(f)
model.addItem(f)
}
selectedItem.children = vc.items
selectedItem.loaded = true
selectedItem.children = model.items
selectedItem.loaded = false
var all: [MediaItem]?
@ -158,19 +163,9 @@ class MasterViewController: UITableViewController {
if p.type == ItemType.VIDEOROOT {
NetworkManager.sharedInstance.loadDirs(dir, completionHandler: weiter)
}
else {
} else {
NetworkManager.sharedInstance.loadPicDirs(dir, completionHandler: weiter)
}
return
}
vc.items = neu
vc.tableView.reloadData()
vc.navigationItem.title = selectedItem.name;
self.navigationController!.pushViewController(vc, animated: true)
})
}
}
override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool {
@ -181,23 +176,16 @@ class MasterViewController: UITableViewController {
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showDetail" {
if let indexPath = self.tableView.indexPathForSelectedRow {
let item = items[indexPath.row]
let item = model.items[indexPath.row]
let controller = (segue.destinationViewController as! UINavigationController).topViewController as! DetailViewController
controller.detailItem = item
var root = item
while root.parent != nil {
root = root.parent!
}
if root.type == ItemType.ROOT {
if item.isPic() {
// größere Vorschau für Fotos
controller.defaultItemSize = CGSize(width: 300, height: 300)
}
item.children.sortInPlace({
$0.sortName < $1.sortName
})
item.sort()
var j = 0
for i in item.children {
@ -218,7 +206,7 @@ class MasterViewController: UITableViewController {
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
return model.items.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
@ -240,17 +228,14 @@ class MasterViewController: UITableViewController {
}
func configureCell(cell: UITableViewCell, atIndexPath indexPath: NSIndexPath) {
let object = items[indexPath.row]
let object = model.items[indexPath.row]
if (object.path.characters.count == 0) {
cell.textLabel!.text = "'" + object.name
}
else {
} else {
cell.textLabel!.text = object.path
}
cell.accessoryType = UITableViewCellAccessoryType.None
}
}
Loading…
Cancel
Save