function initDesktop() {
$(".modal").hide();
g_DesktopDB.forEach(function (desktopDBItem) {
/* Clone the main figure */
let $desktopFigureClone = populateClone($("figure.cloneable").clone(), desktopDBItem);
/* Insert the clone */
if (desktopDBItem.id === "trash") {
$desktopFigureClone.insertAfter("#trash-spacer");
} else {
if (desktopDBItem.position) {
$desktopFigureClone.appendTo(".desktop .desktop-" + desktopDBItem.position);
} else {
$desktopFigureClone.insertBefore("#trash-spacer");
}
}
});
/* Remove the original figure */
$("figure.cloneable").remove();
initFigures($(".desktop"));
}
function populateClone($clone, desktopDBItem) {
let icon = desktopDBItem.icon ? desktopDBItem.icon : desktopDBItem.kind;
/* Update the cloned figure */
$clone.removeClass("cloneable");
$clone.addClass(desktopDBItem.kind);
$clone.attr("data-id", desktopDBItem.id);
$clone.attr("data-action", desktopDBItem.action);
$clone.find(".label").html(desktopDBItem.name);
$clone.attr("data-icon", icon);
if (desktopDBItem.alias) {
$clone.find(".label").addClass("alias");
}
if (desktopDBItem.kind === "link")
$clone.find("a").attr("href", desktopDBItem.url);
return $clone;
}
function initFigures($parent) {
/* Initialize icons */
$parent.find("figure").each(function () {
let $this = $(this);
let icon = $(this).attr("data-icon");
$this.children("a").append("");
});
$parent.find("figure a").on("focus", function () {
let $this = $(this);
$this.parents("figure").first().addClass("focus");
});
$parent.find("figure a").on("blur", function () {
let $this = $(this);
$this.parents("figure").first().removeClass("focus");
});
$parent.find("figure a").on("dblclick", function (e) {
let $this = $(this);
let action = $this.parent("figure").attr("data-action");
if (action) {
e.stopImmediatePropagation();
Actions.parseFunction(action);
}
});
/* Folders */
$parent.find("figure.folder > a, figure.trash > a").on("dblclick", function () {
let $this = $(this);
let wrapperID = $this.parent("figure").attr("data-id");
let $iconImg = $this.children("img");
let icon = $this.parent("figure").attr("data-icon");
Actions.openWindow(wrapperID, "folder", true);
/* Mask the icon */
$iconImg.attr("src", SETTINGS_ICONS_LARGE_PATH + icon + "-mask.png");
});
/* Links */
$parent.find("figure.link a").on("click", function () {
return false;
}).on("dblclick", function () {
/* Open link in a new tab */
window.open(this.href, "_blank").focus();
return false;
});
/* Downloads */
$parent.find("figure.download > a").on("click", function () {
return false;
}).on("dblclick", function () {
let $this = $(this);
let wrapperID = $this.parent("figure").attr("data-id");
let desktopDBItem = findDesktopDBItem(g_DesktopDB, "id", wrapperID);
Actions.downloadFile(desktopDBItem);
});
/* Applications */
$parent.find("figure.application > a").on("click", function () {
return false;
}).on("dblclick", function () {
let $this = $(this);
let wrapperID = $this.parent("figure").attr("data-id");
let $iconImg = $this.children("img");
let icon = $this.parent("figure").attr("data-icon");
Actions.openWindow(wrapperID, wrapperID, true);
$iconImg.attr("src", SETTINGS_ICONS_LARGE_PATH + icon + "-mask.png");
});
/* Documents */
$parent.find("figure.document > a").on("click", function () {
return false;
}).on("dblclick", function () {
let $this = $(this);
let wrapperID = $this.parents("figure").first().attr("data-id");
let desktopDBItem = findDesktopDBItem(g_DesktopDB, "id", wrapperID);
let $simpleTextFigure = $("figure[data-id=\"simpletext\"]");
let $simpleTextIconImg = $simpleTextFigure.find("img");
let simpleTextIcon = $simpleTextFigure.attr("data-icon");
$simpleTextIconImg.attr("src", SETTINGS_ICONS_LARGE_PATH + simpleTextIcon + "-mask.png");
/* Open a SimpleText window */
Actions.openWindow("simpletext", "simpletext", false, function ($wrapper) {
let $simpleTextText = $wrapper.find(".simpletext-text");
/* Text data requires special formatting */
if (desktopDBItem.url.split(".").pop() === "txt") {
$simpleTextText.addClass("text-data");
} else {
$simpleTextText.removeClass("text-data");
}
$simpleTextText.load(desktopDBItem.url, function () {
/* Initialize jScrollPane */
let jsp = $wrapper.find(".body").jScrollPane(g_jScrollPaneSettings);
jsp.data("jsp").reinitialise();
});
/* Set the SimpleText window title to the document name */
$wrapper.find(".title").html(desktopDBItem.name)
});
});
/* Pictures */
$parent.find("figure.picture > a").on("click", function () {
return false;
}).on("dblclick", function () {
let $this = $(this);
let wrapperID = $this.parents("figure").first().attr("data-id");
let $existingWrapper = $(".window-wrapper[data-id=\"pictureviewer\"]");
let desktopDBItem = findDesktopDBItem(g_DesktopDB, "id", wrapperID);
let $pictureViewerFigure = $("figure[data-id=\"pictureviewer\"]");
let $pictureViewerIconImg = $pictureViewerFigure.find("img");
let pictureViewerIcon = $pictureViewerFigure.attr("data-icon");
$pictureViewerIconImg.attr("src", SETTINGS_ICONS_LARGE_PATH + pictureViewerIcon + "-mask.png");
/* Quick hack to automatically resize the window (close it first!) */
if ($existingWrapper.length) {
Actions.closeWindow($existingWrapper, false);
}
/* Open a PictureViewer window */
Actions.openWindow("pictureviewer", "pictureviewer", false, function ($wrapper) {
/* Load in the image from the DesktopDBItem URL */
let $pictureViewerImage = $wrapper.find(".pictureviewer-image");
let image = new Image();
image.src = desktopDBItem.url;
image.onload = function () {
$pictureViewerImage.html(image);
/* Initialize jScrollPane */
let jsp = $wrapper.find(".body").jScrollPane(g_jScrollPaneSettings);
jsp.data("jsp").reinitialise();
};
/* Set the PictureViewer window title to the document name */
$wrapper.find(".title").html(desktopDBItem.name)
});
});
/* Movies */
$parent.find("figure.movie > a").on("click", function () {
return false;
}).on("dblclick", function () {
let $this = $(this);
let wrapperID = $this.parents("figure").first().attr("data-id");
let $existingWrapper = $(".window-wrapper[data-id=\"pictureviewer\"]");
let desktopDBItem = findDesktopDBItem(g_DesktopDB, "id", wrapperID);
let $pictureViewerFigure = $("figure[data-id=\"pictureviewer\"]");
let $pictureViewerIconImg = $pictureViewerFigure.find("img");
let pictureViewerIcon = $pictureViewerFigure.attr("data-icon");
$pictureViewerIconImg.attr("src", SETTINGS_ICONS_LARGE_PATH + pictureViewerIcon + "-mask.png");
/* Quick hack to automatically resize the window (close it first!) */
if ($existingWrapper.length) {
Actions.closeWindow($existingWrapper, false);
}
/* Open a PictureViewer window */
Actions.openWindow("pictureviewer", "pictureviewer", false, function ($wrapper) {
/* Load in the image from the DesktopDBItem URL */
let $pictureViewerImage = $wrapper.find(".pictureviewer-image");
$pictureViewerImage.html("");
let $video = $pictureViewerImage.find("video");
$video.onload = function () {
/* Initialize jScrollPane */
let jsp = $wrapper.find(".body").jScrollPane(g_jScrollPaneSettings);
jsp.data("jsp").reinitialise();
};
/* Set the PictureViewer window title to the document name */
$wrapper.find(".title").html(desktopDBItem.name)
});
});
/* The label will also open the figure */
$parent.find("figure figcaption").on("dblclick", function () {
let $this = $(this);
$this.siblings("a").first().trigger("dblclick");
});
}