mirror of
https://github.com/modernw/App-Installer-For-Windows-8.x-Reset.git
synced 2026-04-11 17:57:19 +10:00
633 lines
39 KiB
HTML
633 lines
39 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
|
|
<head>
|
|
<title>App Installer Settings</title>
|
|
<meta charset="UTF-8">
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<script type="text/javascript" src="../../js/module.js"></script>
|
|
<script type="text/javascript" src="../../js/polyfill-ie.js"></script>
|
|
<link rel="stylesheet" href="../../libs/winjs/2.0/css/ui-light.css" id="winjs-style">
|
|
<script type="text/javascript" src="../../libs/winjs/1.0/js/base.js"></script>
|
|
<script type="text/javascript" src="../../libs/winjs/1.0/js/ui.js"></script>
|
|
<script type="text/javascript" src="../../js/color.js"></script>
|
|
<script type="text/javascript" src="../../js/promise.js"></script>
|
|
<script type="text/javascript" src="../../js/bridge.js"></script>
|
|
<script type="text/javascript" src="../../js/dpimodes.js"></script>
|
|
<script type="text/javascript" src="../../js/resources.js"></script>
|
|
<script type="text/javascript" src="../../js/animation.js"></script>
|
|
<link rel="stylesheet" href="../../fonts/fonts.css">
|
|
<script type="text/javascript" src="../../js/event.js"></script>
|
|
<script type="text/javascript" src="../../js/tileback.js"></script>
|
|
<script type="text/javascript" src="../../js/load.js"></script>
|
|
<script type="text/javascript" src="../../js/params.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="../../libs/msgbox/contentdlg.css">
|
|
<script type="text/javascript" src="../../libs/msgbox/contentdlg.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="../../libs/msgbox/msgbox.css">
|
|
<script type="text/javascript" src="../../libs/msgbox/msgbox.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="../../libs/msgbox/msgbox.elder.css">
|
|
<script type="text/javascript" src="../../libs/msgbox/msgbox.elder.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="../../libs/toggle/toggle.css">
|
|
<script type="text/javascript" src="../../libs/toggle/toggle.js"></script>
|
|
<script type="text/javascript" src="../../js/init.js"></script>
|
|
<script type="text/javascript" src="../initsame.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="../page.css">
|
|
<script type="text/javascript" src="preinit.js"></script>
|
|
<script type="text/javascript" src="items.js"></script>
|
|
<script type="text/javascript" src="init.js"></script>
|
|
<script type="text/javascript" src="../../js/theme.js"></script>
|
|
<link href="../../libs/codemirror/5.0.0/lib/codemirror.css" rel="stylesheet" />
|
|
<link href="../../libs/codemirror/5.0.0/theme/neat.css" rel="stylesheet" />
|
|
<link href="../../libs/codemirror/5.0.0/addon/hint/show-hint.css" rel="stylesheet" />
|
|
<script src="../../libs/codemirror/5.0.0/lib/codemirror.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/mode/css/css.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/edit/matchbrackets.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/edit/closebrackets.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/search/searchcursor.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/search/match-highlighter.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/search/matchesonscrollbar.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/comment/continuecomment.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/comment/comment.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/fold/foldcode.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/fold/foldgutter.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/fold/brace-fold.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/fold/comment-fold.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/fold/xml-fold.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/hint/show-hint.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/hint/css-hint.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/display/panel.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/lint/lint.js"></script>
|
|
<script src="../../libs/codemirror/5.0.0/addon/lint/css-lint.js"></script>
|
|
<style>
|
|
.markdown-style {
|
|
font-weight: normal;
|
|
font-size: 16px;
|
|
-ms-user-select: element;
|
|
}
|
|
|
|
.markdown-style h1 {
|
|
font-size: 24px;
|
|
}
|
|
|
|
.markdown-style h2 {
|
|
font-size: 20px;
|
|
}
|
|
|
|
.markdown-style p {
|
|
font-size: 16px;
|
|
}
|
|
|
|
.markdown-style ul {
|
|
font-size: 16px;
|
|
}
|
|
|
|
.markdown-style li {
|
|
font-size: 16px;
|
|
margin: 0;
|
|
}
|
|
</style>
|
|
<style type="text/css">
|
|
.CodeMirror,
|
|
.CodeMirror * {
|
|
font-family: 'Fixedsys Excelsior 3.01', Consolas, Monaco, 'Andale Mono', monospace, 'Fixedsys Excelsior 1.2', 'Fixedsys Excelsior 1.01', 'Fixedsys Excelsior 1.1', 'Fixedsys Excelsior 3.1', 'Microsoft YaHei', 'Lucida Console', 'Courier New', 'Courier', 'Lucida Sans Typewriter', 'Lucida Sans Typewriter', 'Bitstream Vera Sans Mono', 'Bitstream Vera Sans', 'DejaVu Sans Mono', 'DejaVu Sans', 'Verdana', 'Arial', sans-serif, 'Fixedsys';
|
|
}
|
|
|
|
.CodeMirror {
|
|
box-sizing: border-box;
|
|
border-top: 1px solid black;
|
|
border-bottom: 1px solid black;
|
|
}
|
|
|
|
.editor-container {
|
|
display: flex;
|
|
flex-direction: row;
|
|
flex-wrap: wrap;
|
|
align-content: flex-start;
|
|
justify-content: flex-start;
|
|
display: -ms-flexbox;
|
|
-ms-flex-direction: row;
|
|
-ms-flex-wrap: wrap;
|
|
-ms-flex-line-pack: start;
|
|
/* align-content: flex-start */
|
|
-ms-flex-pack: start;
|
|
/* justify-content: flex-start */
|
|
position: relative;
|
|
width: 100%;
|
|
height: calc(100% - 120px);
|
|
min-height: 100px;
|
|
max-height: 400px;
|
|
}
|
|
|
|
.editor-container * {
|
|
/* transition: all 0.3s cubic-bezier(0.1, 0.9, 0.2, 1); */
|
|
}
|
|
|
|
.editor-editblock {
|
|
width: calc(60% - 10px);
|
|
height: 100%;
|
|
position: relative;
|
|
}
|
|
|
|
.editor-editblock .CodeMirror {
|
|
height: calc(100% - 20px) !important;
|
|
}
|
|
|
|
.editor-filelist {
|
|
width: 40%;
|
|
margin-left: 10px;
|
|
position: relative;
|
|
}
|
|
|
|
.css-editor-filedir {
|
|
box-sizing: border-box;
|
|
border: 2px solid #ccc;
|
|
padding: 3px;
|
|
overflow-y: auto;
|
|
height: calc(100% - 20px);
|
|
width: 100%;
|
|
}
|
|
|
|
.filedir-rootdir {
|
|
box-sizing: border-box;
|
|
width: 100% !important;
|
|
min-width: 0;
|
|
}
|
|
|
|
.filelist-container {
|
|
box-sizing: border-box;
|
|
height: calc(100% - 40px);
|
|
width: 100%;
|
|
overflow-y: auto;
|
|
padding: 0px;
|
|
margin: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
.filelist-container li {
|
|
padding: 5px 0 5px 5px;
|
|
box-sizing: border-box;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.filelist-container li::before {
|
|
font-family: 'Segoe UI Symbol', 'Segoe MDL2 Assets', 'Segoe Fluent Icons', Wingdings;
|
|
}
|
|
|
|
.filelist-container li[role=file]::before {
|
|
content: '';
|
|
}
|
|
|
|
.filelist-container li[role=dir]::before {
|
|
content: '';
|
|
}
|
|
|
|
.filelist-container li:hover {
|
|
background-color: rgba(142, 185, 255, 0.499);
|
|
}
|
|
|
|
.filelist-container li:active {
|
|
background-color: rgba(101, 183, 255, 0.499);
|
|
}
|
|
</style>
|
|
<script>
|
|
function onBack_CssEditPage() {
|
|
if (typeof saveCurrentEdit !== "undefined") saveCurrentEdit();
|
|
Bridge.Frame.callEvent("InvokeBackPage");
|
|
}
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<div id="settingpage" class="pagecontainer full">
|
|
<div class="page full guide">
|
|
<aside class="top win-ui-dark">
|
|
<header aria-label="Header content" role="banner" class="titlebanner" id="pagebanner" style="height: 120px;">
|
|
<button id="back" class="win-backbutton pagetitlewb-backbutton" onclick="onBack_CssEditPage ()" style="margin-left: 20px; transform: scale(0.72);"></button>
|
|
<h2 class="titlearea win-type-ellipsis" id="apptitle" style="">
|
|
<span class="pagetitlewb-title" id="apptitlestr" style="margin-left: 10px; margin-right: 20px;" data-res-fromfile="publicRes (177)"></span>
|
|
</h2>
|
|
</header>
|
|
</aside>
|
|
<main class="main bottom padding">
|
|
<div class="bottom-compensate" id="page-edit-css" style="height: 100%;">
|
|
<p data-res-fromfile="publicRes (178)"></p>
|
|
<label id="theme-custom-color" data-res-fromfile="publicRes (179)"></label>
|
|
<script>
|
|
(function() {
|
|
"use strict";
|
|
var sect = document.getElementById("theme-custom-color").parentNode;
|
|
var toggle = new Toggle();
|
|
toggle.create();
|
|
toggle.parent = sect;
|
|
toggle.setColor("#202020");
|
|
toggle.showlabel = true;
|
|
toggle.setStatusText(getPublicRes(155), getPublicRes(156));
|
|
toggle.addEventListener("change", function() {
|
|
saveCurrentEdit();
|
|
isSwitching = true;
|
|
Theme.setCustomColor(toggle.checked ? Theme.ColorType.dark : Theme.ColorType.light);
|
|
reloadCurrentEdit();
|
|
var rootDir = document.querySelector(".css-editor-filedir .filedir-rootdir");
|
|
var fileList = document.querySelector(".css-editor-filedir .filelist-container");
|
|
var storage = Bridge.External.Storage;
|
|
var path = storage.path;
|
|
var currentColor = Theme.customColor;
|
|
var colorStr = currentColor === Theme.ColorType.dark ? "dark" : "light";
|
|
var customPath = path.combine(path.root, "html\\theme\\{colortype}\\custom").replace("{colortype}", colorStr);
|
|
rootDir.value = customPath;
|
|
refreshFileList();
|
|
isSwitching = false;
|
|
});
|
|
OnLoad.add(function() {
|
|
setTimeout(function() {
|
|
isSwitching = true;
|
|
toggle.checked = Theme.customColor === Theme.ColorType.dark;
|
|
reloadCurrentEdit();
|
|
isSwitching = false;
|
|
}, 100);
|
|
});
|
|
})();
|
|
</script>
|
|
<br>
|
|
<div class="editor-container">
|
|
<div class="editor-editblock">
|
|
<label for="css-editor" data-res-fromfile="publicRes (180)"></label>
|
|
<textarea id="css-editor" name="code"></textarea>
|
|
<script>
|
|
var editor = document.getElementById("css-editor");
|
|
var storage = Bridge.External.Storage;
|
|
var path = storage.path;
|
|
editor.codeMirror = CodeMirror.fromTextArea(editor, {
|
|
lineNumbers: true,
|
|
matchBrackets: true,
|
|
continueComments: "Enter",
|
|
extraKeys: {
|
|
"Ctrl-Q": "toggleComment",
|
|
"Ctrl-Space": "autocomplete"
|
|
},
|
|
mode: "css",
|
|
lineWrapping: true,
|
|
indentUnit: 4,
|
|
indentWithTabs: true,
|
|
smartIndent: true,
|
|
autoCloseBrackets: true,
|
|
foldGutter: true,
|
|
styleActiveLine: true,
|
|
theme: "neat",
|
|
});
|
|
var cm = editor.codeMirror;
|
|
window.isSwitching = false;
|
|
|
|
function saveCurrentEdit() {
|
|
var currentColor = Theme.customColor;
|
|
var colorStr = currentColor === Theme.ColorType.dark ? "dark" : "light";
|
|
var customPath = path.combine(path.root, "html\\theme\\{colortype}\\custom\\custom.css").replace("{colortype}", colorStr);
|
|
var cssFile = storage.getFile(customPath);
|
|
cssFile.content = editor.codeMirror.getValue();
|
|
}
|
|
var deb_sce = debounce(saveCurrentEdit, 200);
|
|
cm.on("change", function(inst, e) {
|
|
if (!isSwitching) deb_sce();
|
|
});
|
|
|
|
function reloadCurrentEdit() {
|
|
var currentColor = Theme.customColor;
|
|
var colorStr = currentColor === Theme.ColorType.dark ? "dark" : "light";
|
|
var customPath = path.combine(path.root, "html\\theme\\{colortype}\\custom\\custom.css").replace("{colortype}", colorStr);
|
|
var cssFile = storage.getFile(customPath);
|
|
var content = cssFile.content;
|
|
if (content === null || content === void 0) {
|
|
var defaultCssPath = path.combine(path.root, "html\\theme\\{colortype}\\default\\default.css").replace("{colortype}", colorStr);
|
|
var defaultCssFile = storage.getFile(defaultCssPath);
|
|
content = defaultCssFile.content;
|
|
if (content === null || content === void 0) {
|
|
content = '\n/* Installer */\n\n.page {\n background-color: #F3F3F3;\n}\n.page.splash {\n background-color: #0078d7;\n}\n.page .content.loading,\n.page .content.main,\n.page .progress,\n.page .reason p,\n.page .controls .checkbox {\n color: black;\n}\n.page .content.main .pkgapplabel {\n color: #0078d7;\n}\n\n/* App Launch List */\n\n.applist-font-title {\n color: black;\n}\n.applist-font-text {\n color: black;\n}\n.applist-window {\n border: 2px solid rgb(42, 42, 42);\n background-color: white;\n}\n.applist-title {\n background: white;\n}\n.applist-control {\n background: white;\n}\n.applist-list-item {\n background-color: rgba(0, 255, 255, 0);\n}\n.applist-list-item:hover {\n background-color: rgb(222, 222, 222);\n}\n.applist-item-picbox {\n background-color: #001020;\n}\n.applist-item-img-border {\n border: 1px solid rgba(254, 254, 254, 0.1);\n}\n.win10.applist-window {\n border: 1px solid #ccc;\n}';
|
|
} else {
|
|
//var idx = content.indexOf("*/");
|
|
//if (idx >= 0 && idx < content.length / 2) {
|
|
// content = content.substring(idx + 2);
|
|
//}
|
|
}
|
|
var head = "/* The following content is sample content and is for reference only. */\n";
|
|
editor.codeMirror.setValue(head + content);
|
|
} else {
|
|
editor.codeMirror.setValue(content);
|
|
}
|
|
}
|
|
</script>
|
|
</div>
|
|
<div class="editor-filelist">
|
|
<label data-res-fromfile="publicRes (181)"></label>
|
|
<div class="css-editor-filedir">
|
|
<input type="text" class="filedir-rootdir" style="direction: rtl; text-align: left;">
|
|
<ul class="filelist-container">
|
|
</ul>
|
|
<script>
|
|
(function() {
|
|
var rootDir = document.querySelector(".css-editor-filedir .filedir-rootdir");
|
|
var fileList = document.querySelector(".css-editor-filedir .filelist-container");
|
|
var storage = Bridge.External.Storage;
|
|
var path = storage.path;
|
|
var currentColor = Theme.customColor;
|
|
var colorStr = currentColor === Theme.ColorType.dark ? "dark" : "light";
|
|
var customPath = path.combine(path.root, "html\\theme\\{colortype}\\custom").replace("{colortype}", colorStr);
|
|
rootDir.value = customPath;
|
|
var eventutil = Windows.UI.Event.Util;
|
|
|
|
function refreshFileList() {
|
|
fileList.innerHTML = "";
|
|
var root = rootDir.value;
|
|
var dirs = JSON.parse(path.enumDirsToJson(root, false, false, false));
|
|
dirs.unshift("..");
|
|
var files = JSON.parse(path.enumFilesToJson(root, "*.*", false, false, false));
|
|
for (var i = 0; i < dirs.length; i++) {
|
|
var li = document.createElement("li");
|
|
li.setAttribute("role", "dir");
|
|
li.textContent = dirs[i];
|
|
fileList.appendChild(li);
|
|
eventutil.addEvent(li, "dblclick", function(e) {
|
|
var self = this;
|
|
rootDir.value = path.combine(root, self.textContent);
|
|
refreshFileList();
|
|
});
|
|
}
|
|
for (var i = 0; i < files.length; i++) {
|
|
(function() {
|
|
var li = document.createElement("li");
|
|
li.setAttribute("role", "file");
|
|
li.textContent = files[i];
|
|
fileList.appendChild(li);
|
|
var CLICK_DELAY = 250;
|
|
var clickTimer = null;
|
|
var clickCount = 0;
|
|
eventutil.addEvent(li, "dblclick", function(e) {
|
|
var self = this;
|
|
var filePath = path.combine(root, self.textContent);
|
|
editor.codeMirror.replaceSelection(self.textContent);
|
|
});
|
|
eventutil.addEvent(li, "click", function(e) {
|
|
var self = this;
|
|
clickCount++;
|
|
if (clickCount === 1) {
|
|
clickTimer = setTimeout(function() {
|
|
if (clickCount === 1) {
|
|
var filePath = path.combine(root, self.textContent);
|
|
var objele = document.createElement("object");
|
|
objele.data = filePath;
|
|
var tipele = document.createElement("param");
|
|
tipele.name = "type";
|
|
tipele.value = "text/html";
|
|
tipele.textContent = getPublicRes(182);
|
|
objele.appendChild(tipele);
|
|
objele.style.maxWidth = "100%";
|
|
objele.style.textAlign = "center";
|
|
var title = Bridge.String.format(getPublicRes(183), self.textContent);
|
|
var contentele = document.createElement("div");
|
|
var filenameele = document.createElement("p");
|
|
filenameele.textContent = self.textContent;
|
|
contentele.appendChild(filenameele);
|
|
contentele.style.width = "100%";
|
|
contentele.appendChild(objele);
|
|
messageBoxAsync(contentele, title).then(function() {
|
|
if (typeof objele.remove === "function") {
|
|
objele.remove();
|
|
} else if (typeof objele.removeNode === "function") {
|
|
objele.removeNode(true);
|
|
} else if (typeof objele.parentNode.removeChild === "function") {
|
|
objele.parentNode.removeChild(objele);
|
|
}
|
|
});
|
|
}
|
|
clickCount = 0;
|
|
clearTimeout(clickTimer);
|
|
clickTimer = null;
|
|
}, CLICK_DELAY);
|
|
} else if (clickCount === 2) return;
|
|
});
|
|
})();
|
|
}
|
|
}
|
|
OnLoad.add(function() {
|
|
setTimeout(refreshFileList, 100);
|
|
setInterval(refreshFileList, 2000);
|
|
});
|
|
window.refreshFileList = refreshFileList;
|
|
})();
|
|
</script>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<br>
|
|
<h3 data-res-fromfile="publicRes (184)"></h3>
|
|
<p data-res-fromfile="publicRes (185)"></p>
|
|
<p data-res-fromfile="publicRes (186)"></p>
|
|
<button id="custom-preview-install" data-res-fromfile="publicRes (187)"></button>
|
|
<button id="custom-preview-applist" data-res-fromfile="publicRes (188)"></button>
|
|
<script>
|
|
var customPreviewBtn = document.getElementById("custom-preview-install");
|
|
var customPreviewApplistBtn = document.getElementById("custom-preview-applist");
|
|
Windows.UI.Event.Util.addEvent(customPreviewBtn, "click", function() {
|
|
var storage = Bridge.External.Storage;
|
|
var path = storage.path;
|
|
var currentColor = Theme.customColor;
|
|
var colorStr = currentColor === Theme.ColorType.dark ? "dark" : "light";
|
|
var installPage = path.combine(path.root, "html\\install.html");
|
|
var installPageUrl = storage.getFile(installPage).uri;
|
|
var uriAndParam = installPageUrl + "?mode=preview&id=custom&color=" + currentColor;
|
|
open(uriAndParam, "_blank");
|
|
});
|
|
Windows.UI.Event.Util.addEvent(customPreviewApplistBtn, "click", function() {
|
|
var storage = Bridge.External.Storage;
|
|
var path = storage.path;
|
|
var currentColor = Theme.customColor;
|
|
var colorStr = currentColor === Theme.ColorType.dark ? "dark" : "light";
|
|
var installPage = path.combine(path.root, "html\\applist.html");
|
|
var installPageUrl = storage.getFile(installPage).uri;
|
|
var uriAndParam = installPageUrl + "?mode=preview&id=custom&color=" + currentColor;
|
|
open(uriAndParam, "_blank");
|
|
});
|
|
</script>
|
|
<br><br>
|
|
<h3 data-res-fromfile="publicRes (189)"></h3>
|
|
<p data-res-fromfile="publicRes (190)"></p>
|
|
<p data-res-fromfile="publicRes (191)"></p>
|
|
<p data-res-fromfile="publicRes (192)"></p>
|
|
<p data-res-fromfile="publicRes (193)"></p>
|
|
<button id="custom-addfile" data-res-fromfile="publicRes (194)"></button>
|
|
<script>
|
|
var customAddFileBtn = document.getElementById("custom-addfile");
|
|
customAddFileBtn.addEventListener("click", function() {
|
|
this.disabled = true;
|
|
var storage = Bridge.External.Storage;
|
|
var path = storage.path;
|
|
var currentColor = Theme.customColor;
|
|
var colorStr = currentColor === Theme.ColorType.dark ? "dark" : "light";
|
|
var customPath = path.combine(path.root, "html\\theme\\{colortype}\\custom").replace("{colortype}", colorStr);
|
|
var supportFilterFormat = "{4}|" +
|
|
"*.jpg;*.png;*.jpeg;*.bmp;*.gif;*.ico;*.tiff;*.svg;*.mp3;*.wav;*.wma;*.aac;*.m4a*.mp4;*.avi;*.wmv|"
|
|
"{0}|" +
|
|
"*.jpg;*.png;*.jpeg;*.bmp;*.gif;*.ico;*.tiff;*.svg|" +
|
|
"{1}|" +
|
|
"*.mp3;*.wav;*.wma;*.aac;*.m4a|" +
|
|
"{2}|" +
|
|
"*.mp4;*.avi;*.wmv|" +
|
|
"{3}|" +
|
|
"*.*";
|
|
supportFilterFormat = Bridge.String.format(
|
|
supportFilterFormat,
|
|
getPublicRes(195),
|
|
getPublicRes(196),
|
|
getPublicRes(197),
|
|
getPublicRes(163),
|
|
getPublicRes(198)
|
|
)
|
|
var getfile = JSON.parse(Bridge.External.SelectFilesToJSON(supportFilterFormat, 0x00080000 | 0x00000800, getPublicRes(199), null));
|
|
for (var i = 0; i < getfile.length; i++) {
|
|
var srcfilepath = getfile[i];
|
|
var filename = path.getName(srcfilepath);
|
|
var fsize = Bridge.External.GetFileSize(srcfilepath);
|
|
if (fsize < 0 || fsize > 104857600) { // 100MB 限制
|
|
messageBoxAsync(getPublicRes(201), getPublicRes(200));
|
|
} else {
|
|
var destfilepath = path.combine(customPath, filename);
|
|
Bridge.External.ShellCopyFile(srcfilepath, destfilepath);
|
|
refreshFileList();
|
|
}
|
|
}
|
|
this.disabled = false;
|
|
});
|
|
</script>
|
|
<br><br>
|
|
<h3 data-res-fromfile="publicRes (202)"></h3>
|
|
<p data-res-fromfile="publicRes (203)"></p>
|
|
<button id="custom-export" data-res-fromfile="publicRes (202)"></button>
|
|
<script>
|
|
var customExportBtn = document.getElementById("custom-export");
|
|
Windows.UI.Event.Util.addEvent(customExportBtn, "click", function() {
|
|
var infoinputblock = document.createElement("p");
|
|
var style = document.createElement("style");
|
|
style.type = "text/css";
|
|
style.innerHTML = "" +
|
|
".info-row { margin-bottom:5px; zoom:1; clear:both; }" +
|
|
".info-row label { display:inline-block; width:120px; min-width: 0; vertical-align:middle; }" +
|
|
".info-row input, .info-row textarea, .info-row select { display:inline-block; vertical-align:middle; }" +
|
|
"";
|
|
infoinputblock.appendChild(style);
|
|
var infos = {
|
|
Id: "string",
|
|
DisplayName: "string",
|
|
Author: "string",
|
|
Version: "version",
|
|
Description: "multiline_string",
|
|
Homepage: "uri",
|
|
/* Color: "enum(dark,light)", */
|
|
};
|
|
var infoDisplayName = {
|
|
Id: getPublicRes(204),
|
|
DisplayName: getPublicRes(205),
|
|
Author: getPublicRes(206),
|
|
Version: getPublicRes(207),
|
|
Description: getPublicRes(208),
|
|
Homepage: getPublicRes(209),
|
|
Color: getPublicRes(210),
|
|
};
|
|
var infokeys = Object.keys(infos);
|
|
var infokeys = [];
|
|
var infodata = {
|
|
Color: Theme.customColor === Theme.ColorType.dark ? "dark" : "light",
|
|
};
|
|
for (var k in infos) {
|
|
if (infos.hasOwnProperty(k)) {
|
|
infokeys.push(k);
|
|
}
|
|
}
|
|
for (var i = 0; i < infokeys.length; i++) {
|
|
var key = infokeys[i];
|
|
var value = infos[key];
|
|
var labelText = infoDisplayName[key] || key;
|
|
var row = document.createElement("div");
|
|
row.className = "info-row";
|
|
var label = document.createElement("label");
|
|
label.innerText = labelText + " ";
|
|
label.htmlFor = "info_" + key;
|
|
var input;
|
|
if (value === "multiline_string") {
|
|
input = document.createElement("textarea");
|
|
} else if (value.indexOf("enum(") === 0) { // ES5 兼容
|
|
input = document.createElement("select");
|
|
var enumStr = value.substring(5, value.length - 1); // 去掉 enum(...)
|
|
var options = enumStr.split(",");
|
|
for (var j = 0; j < options.length; j++) {
|
|
var opt = document.createElement("option");
|
|
opt.value = options[j];
|
|
opt.innerText = options[j];
|
|
input.appendChild(opt);
|
|
}
|
|
} else {
|
|
input = document.createElement("input");
|
|
input.type = "text";
|
|
}
|
|
input.id = "info_" + key;
|
|
input.name = key;
|
|
row.appendChild(label);
|
|
row.appendChild(input);
|
|
Windows.UI.Event.Util.addEvent(input, "change", function() {
|
|
var self = this;
|
|
infodata[self.name] = self.value;
|
|
});
|
|
infoinputblock.appendChild(row);
|
|
}
|
|
var showMsgDialog = function() {
|
|
messageBoxAsync(infoinputblock, getPublicRes(211), MBFLAGS.MB_OKCANCEL).then(function(pressid) {
|
|
if (pressid === MBRET.IDOK) {
|
|
if (Bridge.NString.empty(infodata.Id) || Bridge.NString.empty(infodata.DisplayName) || Bridge.NString.empty(infodata.Author) || Bridge.NString.empty(infodata.Color)) {
|
|
messageBoxAsync(getPublicRes(213), getPublicRes(212)).then(function() {
|
|
showMsgDialog();
|
|
});
|
|
return;
|
|
}
|
|
var jsonstr = JSON.stringify(infodata);
|
|
var showFileSaveDialog = function() {
|
|
var storage = Bridge.External.Storage;
|
|
var path = storage.path;
|
|
var currentColor = Theme.customColor;
|
|
var colorStr = currentColor === Theme.ColorType.dark ? "dark" : "light";
|
|
var customPath = path.combine(path.root, "html\\theme\\{colortype}\\custom").replace("{colortype}", colorStr);
|
|
var supportFilterFormat = "{0}|*.zip";
|
|
supportFilterFormat = Bridge.String.format(supportFilterFormat, getPublicRes(162))
|
|
var getfile = Bridge.External.GetSavePath(supportFilterFormat, "zip", 2054, getPublicRes(214), null);
|
|
if (Bridge.NString.empty(getfile)) {
|
|
messageBoxAsync(getPublicRes(215), getPublicRes(212)).then(function() {
|
|
showMsgDialog();
|
|
});
|
|
return;
|
|
} else {
|
|
Bridge.External.CompressTheme(customPath, getfile, jsonstr, infodata.Id);
|
|
var displayMsg = "";
|
|
if (path.fileExist(getfile)) displayMsg = Bridge.String.format(getPublicRes(216), getfile);
|
|
else displayMsg = getPublicRes(217);
|
|
messageBoxAsync(displayMsg, getPublicRes(218), MBFLAGS.MB_OKCANCEL).done(function(pressid) {
|
|
if (pressid === MBRET.IDOK) {
|
|
if (!path.fileExist(getfile)) {
|
|
showMsgDialog();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
};
|
|
showFileSaveDialog();
|
|
}
|
|
});
|
|
};
|
|
showMsgDialog();
|
|
});
|
|
</script>
|
|
<div class="bottom-compensate"></div>
|
|
</div>
|
|
</main>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
|
|
</html> |