'
);
if (item.isTemp) itemEl.classList.add("queue_temp");
final deleteBtn = itemEl.querySelector("#btn-delete");
deleteBtn.onclick = e -> {
main.send({
type: RemoveVideo,
removeVideo: {
url: itemEl.querySelector(".qe_title").getAttribute("href")
}
});
}
if (atEnd) items.push(item);
else items.insert(itemPos + 1, item);
if (atEnd) videoItemsEl.appendChild(itemEl);
else Utils.insertAtIndex(videoItemsEl, itemEl, itemPos + 1);
updateCounters();
}
public function removeItem(url:String):Void {
for (child in videoItemsEl.children) {
if (child.querySelector(".qe_title").getAttribute("href") == url) {
videoItemsEl.removeChild(child);
break;
}
}
final item = items.find(item -> item.url == url);
if (item == null) return;
var index = items.indexOf(item);
items.remove(item);
updateCounters();
if (index < itemPos) {
itemPos--;
return;
}
if (index != itemPos) return;
if (items.length == 0) return;
if (items[index] == null) index = 0;
setVideo(index);
}
public function skipItem(url:String):Void {
final item = items.find(item -> item.url == url);
if (item == null) return;
if (item.isTemp) {
removeItem(url);
return;
}
var index = items.indexOf(item) + 1;
if (index >= items.length) index = 0;
setVideo(index);
}
function updateCounters():Void {
ge("#plcount").textContent = '${items.length} ${Lang.get("videos")}';
ge("#pllength").textContent = totalDuration();
}
public function getItems():Array {
return items;
}
public function setItems(list:Array, ?pos:Int):Void {
clearItems();
if (pos != null) itemPos = pos;
if (list.length == 0) return;
for (video in list) addVideoItem(video, true);
if (currentSrc != items[itemPos].url) setVideo(itemPos);
}
public function clearItems():Void {
items.resize(0);
videoItemsEl.textContent = "";
updateCounters();
}
public function refresh():Void {
if (items.length == 0) return;
removeVideo();
setVideo(itemPos);
}
function duration(time:Float):String {
final h = Std.int(time / 60 / 60);
final m = Std.int(time / 60) - h * 60;
final s = Std.int(time % 60);
var time = '$m:';
if (m < 10) time = '0$time';
if (h > 0) time = '$h:$time';
if (s < 10) time = time + "0";
time += s;
return time;
}
function totalDuration():String {
var time = 0.0;
for (item in items) time += item.duration;
return duration(time);
}
function nodeFromString(div:String):Element {
final wrapper = document.createDivElement();
wrapper.innerHTML = div;
return wrapper.firstElementChild;
}
public function isListEmpty():Bool {
return items.length == 0;
}
public function itemsLength():Int {
return items.length;
}
public function getItemPos():Int {
return itemPos;
}
public function hasVideo():Bool {
return player != null;
}
public function play():Void {
if (player == null) return;
player.play();
}
public function pause():Void {
if (player == null) return;
player.pause();
}
public function getTime():Float {
if (player == null) return 0;
return player.getTime();
}
public function setTime(time:Float, isLocal = true):Void {
if (player == null) return;
skipSetTime = isLocal;
player.setTime(time);
}
}