You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
1.9 KiB
76 lines
1.9 KiB
//
|
|
// Created by Marco Schmickler on 29.06.15.
|
|
// Copyright (c) 2015 Marco Schmickler. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
class ItemModel {
|
|
var items = [MediaItem]()
|
|
var itemsMap = Dictionary<String, MediaItem>()
|
|
|
|
func addItem(_ item: MediaItem) {
|
|
if item.path == "" {
|
|
item.index = items.count
|
|
items.append(item)
|
|
return
|
|
}
|
|
|
|
let path = item.encodedDir!
|
|
var folder = itemsMap[path]
|
|
|
|
if folder == nil {
|
|
folder = MediaItem(name: item.path, path: item.path, root: item.root, type: ItemType.FOLDER)
|
|
folder!.loaded = true
|
|
folder!.local = item.local
|
|
itemsMap[path] = folder!
|
|
items.append(folder!)
|
|
}
|
|
|
|
item.index = folder!.children.count
|
|
folder!.children.append(item)
|
|
item.parent = folder
|
|
|
|
if (item.isVideo()) {
|
|
item.parent?.type = ItemType.VIDEOFOLDER
|
|
}
|
|
}
|
|
|
|
func removeAll() {
|
|
items.removeAll()
|
|
itemsMap.removeAll()
|
|
}
|
|
|
|
func sortItems(selectedItem: MediaItem, children: [MediaItem]) {
|
|
for f in children {
|
|
addItem(f)
|
|
}
|
|
selectedItem.children = items
|
|
selectedItem.loaded = false
|
|
|
|
if selectedItem.path.contains("*") {
|
|
selectedItem.loaded = true
|
|
} else
|
|
{
|
|
var all: [MediaItem]?
|
|
|
|
for f in selectedItem.children {
|
|
print(f.path)
|
|
if f.type == ItemType.FOLDER && f.path == "" {
|
|
all = f.children
|
|
break
|
|
}
|
|
}
|
|
|
|
if all != nil {
|
|
selectedItem.children = all!
|
|
selectedItem.loaded = false
|
|
|
|
for f in all! {
|
|
f.loaded = false
|
|
f.parent = selectedItem
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|