mirror of
https://github.com/modernw/App-Installer-For-Windows-8.x-Reset.git
synced 2026-04-13 20:28:33 +10:00
Update about Manager.
This commit is contained in:
BIN
shared/html/fonts/Symbols.eot
Normal file
BIN
shared/html/fonts/Symbols.eot
Normal file
Binary file not shown.
BIN
shared/html/fonts/Symbols.ttf
Normal file
BIN
shared/html/fonts/Symbols.ttf
Normal file
Binary file not shown.
@@ -31,4 +31,12 @@
|
||||
url('SETUP.TTF') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Symbols";
|
||||
src: url('Symbols.eot') format('embedded-opentype'),
|
||||
url('Symbols.ttf') format('truetype');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
@@ -12,6 +12,9 @@
|
||||
global.publicRes = function(resId) {
|
||||
return getFileResPair(respath, resId);
|
||||
}
|
||||
global.stringRes = function(resId) {
|
||||
return Bridge.External.StringResources.getString(resId);
|
||||
}
|
||||
|
||||
function ready(e) {
|
||||
function nextstep() {
|
||||
|
||||
@@ -124,5 +124,100 @@
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function initLoaderPage() {
|
||||
var page = document.getElementById("page-load");
|
||||
var prefixs = ["ins", "reg", "sta"];
|
||||
var opdict = {
|
||||
ins: Package.manager.add,
|
||||
reg: Package.manager.register,
|
||||
sta: Package.manager.stage
|
||||
};
|
||||
var ingdict = {
|
||||
ins: strres.get("MANAGER_LOAD_INSTALL_ING"),
|
||||
reg: strres.get("MANAGER_LOAD_REGISTER_ING"),
|
||||
sta: strres.get("MANAGER_LOAD_STAGE_ING")
|
||||
};
|
||||
var sdict = {
|
||||
ins: strres.get("MANAGER_LOAD_INSTALL_SUCCEED"),
|
||||
reg: strres.get("MANAGER_LOAD_REGISTER_SUCCEED"),
|
||||
sta: strres.get("MANAGER_LOAD_STAGE_SUCCEED")
|
||||
}
|
||||
var explorer = external.Storage.Explorer;
|
||||
prefixs.forEach(function(prefix) {
|
||||
var checklist = document.getElementById(prefix + "-deployoptions");
|
||||
var btn = document.getElementById(prefix + "-btn");
|
||||
var statusbar = document.getElementById(prefix + "-progress");
|
||||
var progressbar = statusbar.querySelector(".progress");
|
||||
var status = statusbar.querySelector(".status");
|
||||
progressbar.removeAttribute("value");
|
||||
status.textContent = "";
|
||||
var hideTimer = null;
|
||||
btn.onclick = function() {
|
||||
var self = this;
|
||||
self.disabled = true;
|
||||
var nextNextStep = function(statusbar) {
|
||||
if (hideTimer) clearTimeout(hideTimer);
|
||||
hideTimer = setTimeout(function() {
|
||||
hideTimer = null;
|
||||
statusbar.bar.hide();
|
||||
}, 10000);
|
||||
}
|
||||
var nextStep = function(filename) {
|
||||
if (filename === "" || filename === null || filename === void 0) {
|
||||
self.disabled = false;
|
||||
return;
|
||||
}
|
||||
if (hideTimer) clearTimeout(hideTimer);
|
||||
var op = opdict[prefix];
|
||||
var options = 0;
|
||||
var items = checklist.querySelectorAll("input:checked");
|
||||
if (items) {
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
options |= parseInt(items[i].value);
|
||||
}
|
||||
}
|
||||
progressbar.removeAttribute("value");
|
||||
status.textContent = external.String.format(ingdict[prefix], "");
|
||||
statusbar.bar.show();
|
||||
op(filename, options).then(function(result) {
|
||||
self.disabled = false;
|
||||
status.textContent = sdict[prefix];
|
||||
refreshAppList2();
|
||||
nextNextStep(statusbar);
|
||||
}, function(error) {
|
||||
self.disabled = false;
|
||||
status.textContent = error.message;
|
||||
nextNextStep(statusbar);
|
||||
}, function(_p) {
|
||||
status.textContent = external.String.format(ingdict[prefix], _p + "%");
|
||||
progressbar.value = _p;
|
||||
});
|
||||
}
|
||||
|
||||
if (prefix === "ins" || prefix === "sta") explorer.file(
|
||||
external.String.format("{0}|{1}|{2}|{3}",
|
||||
strres.get("MANAGER_LOAD_INS_OR_STA_FILTERDISPLAY"),
|
||||
"*.appx;*.appxbundle;*.msix;*.msixbundle",
|
||||
strres.get("MANAGER_LOAD_ALLFILES"),
|
||||
"*.*"
|
||||
),
|
||||
"",
|
||||
nextStep
|
||||
);
|
||||
else if (prefix === "reg") explorer.file(
|
||||
external.String.format("{0}|{1}|{2}|{3}",
|
||||
strres.get("MANAGER_LOAD_REG_FILTERDISPLAY"),
|
||||
"*.appxmanifest;AppxManifest.xml",
|
||||
strres.get("MANAGER_LOAD_ALLFILES"),
|
||||
"*.*"
|
||||
),
|
||||
"",
|
||||
nextStep
|
||||
);
|
||||
};
|
||||
});
|
||||
}
|
||||
global.setAppInfoPageContent = setAppInfoPageContent;
|
||||
global.initLoaderPage = initLoaderPage;
|
||||
})(this);
|
||||
@@ -1,5 +1,7 @@
|
||||
(function(global) {
|
||||
var strres = external.StringResources;
|
||||
var conf = external.Config.current;
|
||||
var set = conf.getSection("Settings");
|
||||
|
||||
function createLocalizedCompare(locale) {
|
||||
return function(a, b) {
|
||||
@@ -359,6 +361,8 @@
|
||||
}
|
||||
var showSystemApps = document.getElementById("applist-showsystemapp");
|
||||
var showFrameworks = document.getElementById("applist-showframework");
|
||||
showSystemApps.checked = set.getKey("PackageManager:ShowSystemApps").readBool(false);
|
||||
showFrameworks.checked = set.getKey("PackageManager:ShowFrameworks").readBool(false);
|
||||
listView.filter = function(item) {
|
||||
try {
|
||||
if (!showFrameworks.checked && item.Properties.Framework) return false;
|
||||
@@ -371,10 +375,12 @@
|
||||
Windows.UI.Event.Util.addEvent(showSystemApps, "change", function() {
|
||||
listView.refresh();
|
||||
dataLengthDisplay.textContent = external.String.format(strres.get("MANAGER_MANAGE_FINDAPPS"), listView.findItemLength);
|
||||
set.getKey("PackageManager:ShowSystemApps").set(showSystemApps.checked);
|
||||
});
|
||||
Windows.UI.Event.Util.addEvent(showFrameworks, "change", function() {
|
||||
listView.refresh();
|
||||
dataLengthDisplay.textContent = external.String.format(strres.get("MANAGER_MANAGE_FINDAPPS"), listView.findItemLength);
|
||||
set.getKey("PackageManager:ShowFrameworks").set(showFrameworks.checked);
|
||||
});
|
||||
refreshButton.addEventListener("click", refreshAppList2);
|
||||
appbarControl.add(refreshButton);
|
||||
@@ -408,12 +414,60 @@
|
||||
launchButton.textContent = strres.get("MANAGER_APP_LAUNCH");
|
||||
launchButton.setAttribute("data-app-user-model-id", item.AppUserModelID);
|
||||
var createShortcutButton = document.createElement("button");
|
||||
createShortcutButton.textContent = strres.get("MANAGER_APP_CREATESHORTCUT");
|
||||
createShortcutButton.setAttribute("data-app-user-model-id", item.AppUserModelID);
|
||||
createShortcutButton.textContent = strres.get("MANAGER_APP_SHORTCUTCREATE_TITLE");
|
||||
createShortcutButton.style.marginRight = "10px";
|
||||
Windows.UI.Event.Util.addEvent(launchButton, "click", function(e) {
|
||||
e.stopPropagation();
|
||||
Package.manager.active(this.getAttribute("data-app-user-model-id"));
|
||||
});
|
||||
Windows.UI.Event.Util.addEvent(createShortcutButton, "click", function(e) {
|
||||
e.stopPropagation();
|
||||
var backid =
|
||||
messageBoxAdvance(function() {
|
||||
var ring = document.createElement("progress");
|
||||
ring.classList.add("win-ring");
|
||||
ring.style.color = "white";
|
||||
var text = document.createElement("span");
|
||||
text.textContent = strres.get("MANAGER_APP_SHORTCUTCREATE_BACK_TEXT_ING");
|
||||
text.style.marginLeft = "20px";
|
||||
var container = document.createElement("div");
|
||||
container.style.display = "flex";
|
||||
container.style.flexDirection = "row";
|
||||
container.appendChild(ring);
|
||||
container.appendChild(text);
|
||||
container.style.marginTop = "10px";
|
||||
var openInstallLocation = document.createElement("button");
|
||||
openInstallLocation.textContent = strres.get("MANAGER_APP_SHORTCUTCREATE_OPENINSTALLLOCATION");
|
||||
openInstallLocation.style.marginTop = "10px";
|
||||
openInstallLocation.style.display = "block";
|
||||
openInstallLocation.setAttribute("data-install-location", appDetailPage.data.InstallLocation);
|
||||
openInstallLocation.onclick = function() {
|
||||
external.Storage.Path.open(this.getAttribute("data-install-location"));
|
||||
};
|
||||
var finalc = document.createElement("div");
|
||||
finalc.appendChild(container);
|
||||
finalc.appendChild(document.createElement("br"));
|
||||
finalc.appendChild(openInstallLocation);
|
||||
return finalc;
|
||||
}(), strres.get("MANAGER_APP_SHORTCUTCREATE_BACK_TITLE"), [], "#159d9d");
|
||||
document.getElementById(backid).querySelector(".notice-controls").style.display = "none";
|
||||
var back = document.getElementById(backid);
|
||||
external.createAppShortcut(appDetailPage.data.InstallLocation, this.getAttribute("data-app-user-model-id"), function(complete) {
|
||||
complete = JSON.parse(complete);
|
||||
if (typeof back.remove !== "undefined") back.remove();
|
||||
else if (typeof back.removeNode !== "undefined") back.removeNode(true);
|
||||
else back.parentNode.removeChild(back);
|
||||
if (complete.succeeded) messageBoxAdvance(strres.get("MANAGER_APP_SHORTCUTCREATE_BACK_TEXT_SUCCEED"), strres.get("MANAGER_APP_SHORTCUTCREATE_BACK_TITLE_SUCCEED"), [], "#159d9d");
|
||||
else messageBoxAdvance(complete.message, strres.get("MANAGER_APP_SHORTCUTCREATE_BACK_TITLE_FAILED"), [], "#159d9d");
|
||||
}, function(error) {
|
||||
error = JSON.parse(error);
|
||||
if (typeof back.remove !== "undefined") back.remove();
|
||||
else if (typeof back.removeNode !== "undefined") back.removeNode(true);
|
||||
else back.parentNode.removeChild(back);
|
||||
messageBoxAdvance((error.message || error.error || error), strres.get("MANAGER_APP_SHORTCUTCREATE_BACK_TITLE_FAILED"), [], "#159d9d");
|
||||
});
|
||||
});
|
||||
ctrls.appendChild(launchButton);
|
||||
ctrls.appendChild(createShortcutButton);
|
||||
return appItem;
|
||||
@@ -536,10 +590,12 @@
|
||||
});
|
||||
uninstallFlyout.appDataSource = new DataView.DataSource();
|
||||
uninstallFlyout.appListView.bind(uninstallFlyout.appDataSource);
|
||||
initLoaderPage();
|
||||
pagemgr.addEventListener("load", function(e) {
|
||||
appbarControl.enabled = e == "manager";
|
||||
refreshButton.style.display = e == "manager" ? "" : "none";
|
||||
});
|
||||
pagemgr.register("load", document.getElementById("tag-load"), document.getElementById("page-load"));
|
||||
pagemgr.go("manager");
|
||||
});
|
||||
})(this);
|
||||
@@ -187,4 +187,32 @@
|
||||
}
|
||||
};
|
||||
}
|
||||
})();
|
||||
})();
|
||||
(function(global) {
|
||||
"use strict";
|
||||
if (typeof Array.prototype.forEach === "undefined") {
|
||||
Array.prototype.forEach = function(callback, thisArg) {
|
||||
var T, k;
|
||||
if (this == null) {
|
||||
throw new TypeError(" this is null or not defined");
|
||||
}
|
||||
var O = Object(this);
|
||||
var len = O.length >>> 0;
|
||||
if (typeof callback !== "function") {
|
||||
throw new TypeError(callback + " is not a function");
|
||||
}
|
||||
if (arguments.length > 1) {
|
||||
T = thisArg;
|
||||
}
|
||||
k = 0;
|
||||
while (k < len) {
|
||||
var kValue;
|
||||
if (k in O) {
|
||||
kValue = O[k];
|
||||
callback.call(T, kValue, k, O);
|
||||
}
|
||||
k++;
|
||||
}
|
||||
};
|
||||
}
|
||||
})(this);
|
||||
@@ -14,10 +14,12 @@
|
||||
var byId = el.getAttribute('data-res-byid');
|
||||
var fromFile = el.getAttribute('data-res-fromfile');
|
||||
var byXml = el.getAttribute('data-res-resxml');
|
||||
var customSet = el.getAttribute('data-res-custom');
|
||||
if ((byName && !Bridge.NString.empty(byName)) ||
|
||||
(byId && parseInt(byId, 10) > 0) ||
|
||||
(fromFile && !Bridge.NString.empty(fromFile)) ||
|
||||
(byXml && !Bridge.NString.empty(byXml))) {
|
||||
(byXml && !Bridge.NString.empty(byXml)) ||
|
||||
(customSet && !Bridge.NString.empty(customSet))) {
|
||||
result.push(el);
|
||||
}
|
||||
}
|
||||
@@ -55,12 +57,23 @@
|
||||
try {
|
||||
var obj = nodes[i].getAttribute('data-res-resxml');
|
||||
var strres = external.StringResources;
|
||||
if (strres && strres.isValid) {
|
||||
nodes[i].textContent = strres.get(obj);
|
||||
if (strres) {
|
||||
try {
|
||||
nodes[i].textContent = strres.get(obj);
|
||||
} catch (e) {
|
||||
nodes[i].textContent = strres.getString(obj);
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
nodes[i].textContent = "";
|
||||
}
|
||||
} else if (nodes[i].hasAttribute('data-res-custom')) {
|
||||
try {
|
||||
var obj = eval(nodes[i].getAttribute('data-res-custom'));
|
||||
nodes[i].textContent = obj;
|
||||
} catch (e) {
|
||||
nodes[i].textContent = "";
|
||||
}
|
||||
} else {
|
||||
nodes[i].textContent = "";
|
||||
}
|
||||
|
||||
@@ -144,6 +144,123 @@
|
||||
<button id="detail-uninstall-btn" data-res-resxml="MANAGER_APP_UNINSTALL">卸载</button>
|
||||
<div class="bottom-compensate"></div>
|
||||
</div>
|
||||
<div id="page-load" class="ispage" style="display: none;">
|
||||
<style>
|
||||
.checklist {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: wrap;
|
||||
align-content: flex-start;
|
||||
justify-content: flex-start;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.checklist .title {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.checklist .item {
|
||||
margin-left: 10px;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
align-content: flex-start;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
}
|
||||
</style>
|
||||
<h2 data-res-resxml="MANAGER_LOAD"></h2>
|
||||
<p data-res-resxml="MANAGER_LOAD_DESC"></p>
|
||||
<h3 data-res-resxml="MANAGER_LOAD_INSTALL"></h3>
|
||||
<p data-res-resxml="MANAGER_LOAD_INSTALL_DESC"></p>
|
||||
<div class="checklist" id="ins-deployoptions">
|
||||
<span class="title" data-res-resxml="MANAGER_LOAD_DEPLOY_OPTIONS"></span>
|
||||
<div class="item">
|
||||
<input type="checkbox" value="2" id="ins-devmode">
|
||||
<label for="ins-devmode" data-res-resxml="MANAGER_LOAD_DEPLOY_OPTIONS_DEVELOPMENT_MODE"></label>
|
||||
</div>
|
||||
<div class="item">
|
||||
<input type="checkbox" value="1" id="ins-force-appshutdown">
|
||||
<label for="ins-force-appshutdown" data-res-resxml="MANAGER_LOAD_DEPLOY_OPTIONS_FORCE_APP_SHUTDOWN"></label>
|
||||
</div>
|
||||
<div class="item">
|
||||
<input type="checkbox" value="32" id="ins-all-resources">
|
||||
<label for="ins-all-resources" data-res-resxml="MANAGER_LOAD_DEPLOY_OPTIONS_INSTALL_ALL_RESOURCES"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="statusbar" id="ins-progress">
|
||||
<div class="container" style="padding-bottom: 10px;">
|
||||
<span class="status"></span><br>
|
||||
<progress class="win-progress progress" min="0" max="100"></progress>
|
||||
</div>
|
||||
</div>
|
||||
<button id="ins-btn" data-res-resxml="MANAGER_LOAD_INSTALL_BTN"></button>
|
||||
<br><br>
|
||||
<h3 data-res-resxml="MANAGER_LOAD_REGISTER"></h3>
|
||||
<p data-res-resxml="MANAGER_LOAD_REGISTER_DESC"></p>
|
||||
<div class="checklist" id="reg-deployoptions">
|
||||
<span class="title" data-res-resxml="MANAGER_LOAD_DEPLOY_OPTIONS"></span>
|
||||
<div class="item">
|
||||
<input type="checkbox" value="2" id="reg-devmode">
|
||||
<label for="reg-devmode" data-res-resxml="MANAGER_LOAD_DEPLOY_OPTIONS_DEVELOPMENT_MODE"></label>
|
||||
</div>
|
||||
<div class="item">
|
||||
<input type="checkbox" value="1" id="reg-force-appshutdown">
|
||||
<label for="reg-force-appshutdown" data-res-resxml="MANAGER_LOAD_DEPLOY_OPTIONS_FORCE_APP_SHUTDOWN"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="statusbar" id="reg-progress">
|
||||
<div class="container">
|
||||
<span class="status" data-res-resxml="MANAGER_APP_REG_ING"></span><br>
|
||||
<progress class="win-progress progress" min="0" max="100"></progress>
|
||||
</div>
|
||||
</div>
|
||||
<button id="reg-btn" data-res-resxml="MANAGER_LOAD_REGISTER_BTN"></button>
|
||||
<br><br>
|
||||
<h3 data-res-resxml="MANAGER_LOAD_STAGE"></h3>
|
||||
<p data-res-resxml="MANAGER_LOAD_STAGE_DESC"></p>
|
||||
<div class="checklist" id="sta-deployoptions">
|
||||
<span class="title" data-res-resxml="MANAGER_LOAD_DEPLOY_OPTIONS"></span>
|
||||
<div class="item">
|
||||
<input type="checkbox" value="2" id="sta-devmode">
|
||||
<label for="sta-devmode" data-res-resxml="MANAGER_LOAD_DEPLOY_OPTIONS_DEVELOPMENT_MODE"></label>
|
||||
</div>
|
||||
<div class="item">
|
||||
<input type="checkbox" value="1" id="sta-force-appshutdown">
|
||||
<label for="sta-force-appshutdown" data-res-resxml="MANAGER_LOAD_DEPLOY_OPTIONS_FORCE_APP_SHUTDOWN"></label>
|
||||
</div>
|
||||
<div class="item">
|
||||
<input type="checkbox" value="32" id="sta-all-resources">
|
||||
<label for="sta-all-resources" data-res-resxml="MANAGER_LOAD_DEPLOY_OPTIONS_INSTALL_ALL_RESOURCES"></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="statusbar" id="sta-progress">
|
||||
<div class="container">
|
||||
<span class="status" data-res-resxml="MANAGER_APP_REG_ING"></span><br>
|
||||
<progress class="win-progress progress" min="0" max="100"></progress>
|
||||
</div>
|
||||
</div>
|
||||
<button id="sta-btn" data-res-resxml="MANAGER_LOAD_STAGE_BTN"></button>
|
||||
<div class="bottom-compensate"></div>
|
||||
<script>
|
||||
(function(global) {
|
||||
var prefixs = ["ins", "reg", "sta"];
|
||||
var statusbars = [
|
||||
document.getElementById("ins-progress"),
|
||||
document.getElementById("reg-progress"),
|
||||
document.getElementById("sta-progress")
|
||||
];
|
||||
statusbars.forEach(function(statusbar) {
|
||||
statusbar.bar = new TransitionPanel(statusbar, {
|
||||
axis: 'y',
|
||||
duration: 500,
|
||||
});
|
||||
});
|
||||
})(this);
|
||||
</script>
|
||||
</div>
|
||||
</main>
|
||||
<aside class="win-ui-dark">
|
||||
<nav class="container">
|
||||
@@ -171,12 +288,44 @@
|
||||
</li>
|
||||
<li id="tag-appinfo" class="subitem">
|
||||
<div role="img"></div>
|
||||
<span class="win-type-base">应用信息</span>
|
||||
<span class="win-type-base" data-res-resxml="MANAGER_APP"></span>
|
||||
</li>
|
||||
<li>
|
||||
<div role="img"></div>
|
||||
<span class="win-type-base">Manager</span>
|
||||
<li id="tag-load">
|
||||
<div role="img"></div>
|
||||
<span class="win-type-base" data-res-resxml="MANAGER_LOAD"></span>
|
||||
</li>
|
||||
<li id="tag-settings">
|
||||
<div role="img"></div>
|
||||
<span class="win-type-base" data-res-resxml="MANAGER_SETTINGS"></span>
|
||||
</li>
|
||||
<script>
|
||||
(function(global) {
|
||||
var isexec = false;
|
||||
var settag = document.getElementById("tag-settings");
|
||||
Windows.UI.Event.Util.addEvent(settag, "click", function() {
|
||||
if (isexec) return;
|
||||
var self = this;
|
||||
try {
|
||||
var settingpath = external.Storage.Path.combine(external.Storage.Path.root, "settings.exe");
|
||||
//var cmdline = "\"{execfile}\" manager".replace("{execfile}", settingpath);
|
||||
external.Process.runAsync(
|
||||
"manager",
|
||||
settingpath,
|
||||
1,
|
||||
"",
|
||||
function(ret) {
|
||||
isexec = false;
|
||||
self.classList.remove("selected");
|
||||
}
|
||||
);
|
||||
isexec = true;
|
||||
self.classList.add("selected");
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
});
|
||||
})(this);
|
||||
</script>
|
||||
</ul>
|
||||
</nav>
|
||||
</aside>
|
||||
@@ -209,14 +358,6 @@
|
||||
<button class="confirm" data-res-resxml="MANAGER_APP_UNINSTALL" style="float: right;"></button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="app-deskshortcut-create" style="position: absolute;">
|
||||
<p>即将在桌面创建快捷方式,这里做一些调整。快捷方式不建议固定到开始菜单中,因为本快捷方式只是一种启动器。不具有其余磁贴功能。</p>
|
||||
<div>
|
||||
<div>
|
||||
<div class="win-radio"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -10,6 +10,10 @@
|
||||
return res.fromfile(libpath, resid);
|
||||
}
|
||||
|
||||
function getStringRes(resid) {
|
||||
return Bridge.External.StringResources.getString(resid);
|
||||
}
|
||||
|
||||
function getSettingsItem(page, displayName) {
|
||||
return {
|
||||
page: page,
|
||||
@@ -18,7 +22,8 @@
|
||||
}
|
||||
var settingItems = {
|
||||
appinstaller: getSettingsItem("appinstaller.html", getLibRes("appinstaller.exe", 300)),
|
||||
settings: getSettingsItem("settings.html", getLibRes("settings.exe", 200))
|
||||
manager: getSettingsItem("manager.html", getStringRes("MANAGER_APPTITLE")),
|
||||
settings: getSettingsItem("settings.html", getLibRes("settings.exe", 200)),
|
||||
};
|
||||
Object.defineProperty(global, "settingPages", {
|
||||
get: function() { return settingItems; }
|
||||
|
||||
54
shared/html/settings/manager.html
Normal file
54
shared/html/settings/manager.html
Normal file
@@ -0,0 +1,54 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Package Manager 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>
|
||||
<link rel="stylesheet" type="text/css" href="../libs/msgbox/msgbox.css">
|
||||
<script type="text/javascript" src="../libs/msgbox/msgbox.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="manager/preinit.js"></script>
|
||||
<script type="text/javascript" src="manager/items.js"></script>
|
||||
<script type="text/javascript" src="manager/init.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="settingpage" class="pagecontainer full">
|
||||
<div class="page full guide">
|
||||
<aside class="left 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="Bridge.Frame.callEvent ('InvokeBackPage')" 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-resxml="MANAGER_APPTITLE"></span>
|
||||
</h2>
|
||||
</header>
|
||||
<nav class="container">
|
||||
<ul class="list">
|
||||
</ul>
|
||||
</nav>
|
||||
</aside>
|
||||
<iframe class="main right" defer loading="lazy" async></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
146
shared/html/settings/manager/general.html
Normal file
146
shared/html/settings/manager/general.html
Normal file
@@ -0,0 +1,146 @@
|
||||
<!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>
|
||||
<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/toggle/toggle.css">
|
||||
<script type="text/javascript" src="../../libs/toggle/toggle.js"></script>
|
||||
<script type="text/javascript" src="../../js/init.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../page.css">
|
||||
<link rel="stylesheet" type="text/css" href="../subpage.css">
|
||||
<script type="text/javascript" src="preinit.js"></script>
|
||||
<script type="text/javascript" src="initsame.js"></script>
|
||||
<script>
|
||||
try {
|
||||
window.parent.setItemHighlight("general");
|
||||
} catch (e) {}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="pagecontainer full pagesection">
|
||||
<div class="section padding">
|
||||
<div class="bottom-compensate">
|
||||
<h2 id="page-title" data-res-fromfile="publicRes (101)"></h2>
|
||||
<div class="win-settings-section">
|
||||
<br>
|
||||
<label class="win-label" for="save-wnd-size" id="save-wnd-size-label" data-res-fromfile="publicRes (125)"></label>
|
||||
<script>
|
||||
(function() {
|
||||
"use strict";
|
||||
var label = document.getElementById("save-wnd-size-label");
|
||||
var toggle = new Toggle();
|
||||
toggle.create();
|
||||
toggle.parent = label.parentNode;
|
||||
toggle.showlabel = true;
|
||||
var winjsres = Bridge.External.WinJsStringRes;
|
||||
toggle.setStatusText(winjsres.getString("ms-resource://Microsoft.WinJS.1.0/ui/on"), winjsres.getString("ms-resource://Microsoft.WinJS.1.0/ui/off"));
|
||||
toggle.inputId = "save-wnd-size";
|
||||
var ini = Bridge.External.Config.GetConfig();
|
||||
toggle.addEventListener("change", function() {
|
||||
ini.set("Settings", "PackageManager:SavePosAndSizeBeforeCancel", toggle.checked);
|
||||
});
|
||||
toggle.checked = parseBool(ini.getSection("Settings").getKey("PackageManager:SavePosAndSizeBeforeCancel").value);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
<div class="win-settings-section">
|
||||
<br>
|
||||
<label class="win-label" for="default-wndwidth" data-res-fromfile="publicRes(126)"></label><br>
|
||||
<input type="number" id="default-wndwidth" inputmode="numeric"><br><br>
|
||||
<label class="win-label" for="default-wndheight" data-res-fromfile="publicRes(127)"></label><br>
|
||||
<input type="number" id="default-wndheight" inputmode="numeric">
|
||||
<script>
|
||||
(function() {
|
||||
"use strict";
|
||||
var ini = Bridge.External.Config.GetConfig();
|
||||
var defWndWInput = document.getElementById("default-wndwidth");
|
||||
var defWndHInput = document.getElementById("default-wndheight");
|
||||
var setsect = ini.getSection("Settings");
|
||||
var defwk = setsect.getKey("PackageManager:DefaultWidth");
|
||||
var defhk = setsect.getKey("PackageManager:DefaultHeight");
|
||||
defWndWInput.value = defwk.value;
|
||||
defWndHInput.value = defhk.value;
|
||||
var eventutil = Windows.UI.Event.Util;
|
||||
|
||||
function inputDefaultWidthChangeEvent(e) {
|
||||
defwk.value = parseInt(defWndWInput.value);
|
||||
}
|
||||
|
||||
function inputDefaultHeightChangeEvent(e) {
|
||||
defhk.value = parseInt(defWndHInput.value);
|
||||
}
|
||||
var debounced_idwc = debounce(inputDefaultWidthChangeEvent, 500);
|
||||
var debounced_idhc = debounce(inputDefaultHeightChangeEvent, 500);
|
||||
eventutil.addEvent(defWndWInput, "input", debounced_idwc);
|
||||
eventutil.addEvent(defWndWInput, "propertychange", debounced_idwc);
|
||||
eventutil.addEvent(defWndWInput, "change", debounced_idwc);
|
||||
eventutil.addEvent(defWndHInput, "input", debounced_idhc);
|
||||
eventutil.addEvent(defWndHInput, "propertychange", debounced_idhc);
|
||||
eventutil.addEvent(defWndHInput, "change", debounced_idhc);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
<div class="win-settings-section">
|
||||
<br>
|
||||
<label class="win-label" for="min-wndwidth" data-res-fromfile="publicRes (128)"></label><br>
|
||||
<input type="number" id="min-wndwidth" inputmode="numeric"><br><br>
|
||||
<label class="win-label" for="min-wndheight" data-res-fromfile="publicRes (129)"></label><br>
|
||||
<input type="number" id="min-wndheight" inputmode="numeric">
|
||||
<script>
|
||||
(function() {
|
||||
"use strict";
|
||||
var ini = Bridge.External.Config.GetConfig();
|
||||
var minWndWInput = document.getElementById("min-wndwidth");
|
||||
var minWndHInput = document.getElementById("min-wndheight");
|
||||
var setsect = ini.getSection("Settings");
|
||||
var minwk = setsect.getKey("PackageManager:MinimumWidth");
|
||||
var minhk = setsect.getKey("PackageManager:MinimumHeight");
|
||||
minWndWInput.value = minwk.value;
|
||||
minWndHInput.value = minhk.value;
|
||||
var eventutil = Windows.UI.Event.Util;
|
||||
|
||||
function inputDefaultWidthChangeEvent(e) {
|
||||
minwk.value = parseInt(minWndWInput.value);
|
||||
}
|
||||
|
||||
function inputDefaultHeightChangeEvent(e) {
|
||||
minhk.value = parseInt(minWndHInput.value);
|
||||
}
|
||||
var debounced_idwc = debounce(inputDefaultWidthChangeEvent, 500);
|
||||
var debounced_idhc = debounce(inputDefaultHeightChangeEvent, 500);
|
||||
eventutil.addEvent(minWndWInput, "input", debounced_idwc);
|
||||
eventutil.addEvent(minWndWInput, "propertychange", debounced_idwc);
|
||||
eventutil.addEvent(minWndWInput, "change", debounced_idwc);
|
||||
eventutil.addEvent(minWndHInput, "input", debounced_idhc);
|
||||
eventutil.addEvent(minWndHInput, "propertychange", debounced_idhc);
|
||||
eventutil.addEvent(minWndHInput, "change", debounced_idhc);
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
60
shared/html/settings/manager/guide.html
Normal file
60
shared/html/settings/manager/guide.html
Normal file
@@ -0,0 +1,60 @@
|
||||
<!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>
|
||||
<link rel="stylesheet" type="text/css" href="../../libs/msgbox/msgbox.css">
|
||||
<script type="text/javascript" src="../../libs/msgbox/msgbox.js"></script>
|
||||
<script type="text/javascript" src="../../js/init.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="../page.css">
|
||||
<link rel="stylesheet" type="text/css" href="../subpage.css">
|
||||
<script type="text/javascript" src="preinit.js"></script>
|
||||
<script type="text/javascript" src="initsame.js"></script>
|
||||
<script>
|
||||
try {
|
||||
window.parent.setItemHighlight("guide");
|
||||
} catch (e) {}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="pagecontainer full pagesection">
|
||||
<div class="section padding">
|
||||
<div class="bottom-compensate">
|
||||
<h2 id="guide-title"></h2>
|
||||
<p id="guide-desc" style="white-space: pre-wrap;"></p>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
(function() {
|
||||
"use strict";
|
||||
var res = Bridge.Resources;
|
||||
var stru = Bridge.String;
|
||||
var title = document.getElementById("guide-title");
|
||||
title.textContent = stru.format(res.byname("IDS_TITLEFORMAT"), stringRes("MANAGER_APPTITLE"));
|
||||
var text = document.getElementById("guide-desc");
|
||||
text.textContent = res.byname("IDS_GUIDETEXT_COMMON");
|
||||
})();
|
||||
</script>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
96
shared/html/settings/manager/init.js
Normal file
96
shared/html/settings/manager/init.js
Normal file
@@ -0,0 +1,96 @@
|
||||
(function(global) {
|
||||
"use strict";
|
||||
|
||||
function ready(e) {
|
||||
var page = document.querySelector("#settingpage");
|
||||
var guide = page.querySelector(".page.guide");
|
||||
var slide = guide.querySelector("aside");
|
||||
setTimeout(function() {
|
||||
var barcolor = visual["BackgroundColor"];
|
||||
slide.style.backgroundColor = barcolor;
|
||||
slide.style.color = Color.getSuitableForegroundTextColor(Color.parse(barcolor), [Color.Const.white, Color.Const.black]).stringify();
|
||||
}, 50);
|
||||
var content = guide.querySelector(".main");
|
||||
var list = slide.querySelector("ul");
|
||||
var backbtn = slide.querySelector("#back");
|
||||
var title = slide.querySelector("#apptitle");
|
||||
list.innerHTML = "";
|
||||
var items = pages;
|
||||
var tags = Object.keys(items);
|
||||
var eventutil = Windows.UI.Event.Util;
|
||||
for (var i = 0; i < tags.length; i++) {
|
||||
var tag = tags[i];
|
||||
var item = items[tag];
|
||||
var li = document.createElement("li");
|
||||
li.setAttribute("data-page", item.page);
|
||||
li.setAttribute("data-tag", item.tag);
|
||||
li.innerHTML = item.title;
|
||||
eventutil.addEvent(li, "click", function() {
|
||||
if (li.hasAttribute("data-require-disabled")) return;
|
||||
content.style.display = "none";
|
||||
for (var j = 0; j < list.children.length; j++) {
|
||||
var child = list.children[j];
|
||||
if (child.classList.contains("selected"))
|
||||
child.classList.remove("selected");
|
||||
}
|
||||
content.src = this.getAttribute("data-page");
|
||||
setTimeout(function() {
|
||||
content.style.display = "";
|
||||
Windows.UI.Animation.runAsync(content, [Windows.UI.Animation.Keyframes.Flyout.toLeft, Windows.UI.Animation.Keyframes.Opacity.visible]);
|
||||
}, 0);
|
||||
this.classList.add("selected");
|
||||
});
|
||||
list.appendChild(li);
|
||||
}
|
||||
content.src = guidePage.page;
|
||||
/*for (var i = 0; i < list.children.length; i++) {
|
||||
var child = list.children[i];
|
||||
child.click();
|
||||
break;
|
||||
}*/
|
||||
var jumppage = "";
|
||||
try { var args = cmdargs; if (args.length > 1) jumppage = args[1]; } catch (e) {}
|
||||
if (jumppage && jumppage.length > 0 && !Bridge.External.jump2) {
|
||||
for (var i = 0; i < list.children.length; i++) {
|
||||
var child = list.children[i];
|
||||
if (Bridge.NString.equals(child.getAttribute("data-tag"), jumppage)) {
|
||||
Bridge.External.jump2 = true;
|
||||
setTimeout(function(thisnode) {
|
||||
thisnode.click();
|
||||
}, 0, child)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
global.setDisabledForOperation = function(disabled) {
|
||||
var list = document.querySelector("#settingpage .guide aside ul");
|
||||
for (var i = 0; i < list.children.length; i++) {
|
||||
var child = list.children[i];
|
||||
if (disabled) {
|
||||
child.setAttribute("data-require-disabled", "true");
|
||||
} else {
|
||||
child.removeAttribute("data-require-disabled");
|
||||
}
|
||||
}
|
||||
if (disabled) {
|
||||
backbtn.disabled = true;
|
||||
title.style.marginLeft = backbtn.style.marginLeft;
|
||||
} else {
|
||||
backbtn.disabled = false;
|
||||
title.style.marginLeft = "";
|
||||
}
|
||||
}
|
||||
global.setItemHighlight = function(tag) {
|
||||
var list = document.querySelector("#settingpage .guide aside ul");
|
||||
for (var i = 0; i < list.children.length; i++) {
|
||||
var child = list.children[i];
|
||||
if (Bridge.NString.equals(child.getAttribute("data-tag"), tag)) {
|
||||
if (!child.classList.contains("selected")) child.classList.add("selected");
|
||||
} else {
|
||||
if (child.classList.contains("selected")) child.classList.remove("selected");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
OnLoad.add(ready);
|
||||
})(this);
|
||||
21
shared/html/settings/manager/initsame.js
Normal file
21
shared/html/settings/manager/initsame.js
Normal file
@@ -0,0 +1,21 @@
|
||||
(function(global) {
|
||||
"use strict";
|
||||
|
||||
function ready(e) {
|
||||
Windows.UI.DPI.mode = 1
|
||||
var pagesection = document.querySelector(".pagesection");
|
||||
if (pagesection) {
|
||||
var backcolor = slideback;
|
||||
setTimeout(function() {
|
||||
var h2style = document.getElementById("h2-style");
|
||||
if (!h2style) {
|
||||
h2style = document.createElement("style");
|
||||
h2style.id = "h2-style";
|
||||
}
|
||||
h2style.innerHTML = ".main h2 { color: " + Color.getSuitableForegroundTextColor(Color.parse("#F3F3F3"), [Color.parse(backcolor), Color.Const.black]).RGBA.stringify() + " }";
|
||||
document.head.appendChild(h2style);
|
||||
}, 0);
|
||||
}
|
||||
}
|
||||
OnLoad.add(ready);
|
||||
})(this);
|
||||
24
shared/html/settings/manager/items.js
Normal file
24
shared/html/settings/manager/items.js
Normal file
@@ -0,0 +1,24 @@
|
||||
(function(global) {
|
||||
"use strict";
|
||||
|
||||
function getPage(tag, page, display) {
|
||||
return {
|
||||
tag: tag,
|
||||
page: page,
|
||||
title: display
|
||||
};
|
||||
}
|
||||
var pages = {
|
||||
general: getPage("general", "manager/general.html", getPublicRes(101)),
|
||||
};
|
||||
Object.defineProperty(global, "pages", {
|
||||
get: function() {
|
||||
return pages;
|
||||
}
|
||||
});
|
||||
Object.defineProperty(global, "guidePage", {
|
||||
get: function() {
|
||||
return getPage("guide", "manager/guide.html", "guide");
|
||||
}
|
||||
});
|
||||
})(this);
|
||||
30
shared/html/settings/manager/preinit.js
Normal file
30
shared/html/settings/manager/preinit.js
Normal file
@@ -0,0 +1,30 @@
|
||||
(function(global) {
|
||||
var storage = Bridge.External.Storage;
|
||||
var path = storage.path;
|
||||
var root = path.getDir(path.program);
|
||||
var exepath = path.combine(root, "settings.exe");
|
||||
var id = "Manager";
|
||||
var ve = Bridge.External.VisualElements.get(id);
|
||||
var slideback = ve["BackgroundColor"];
|
||||
global.slideback = slideback;
|
||||
global.exepath = exepath;
|
||||
global.visual = ve;
|
||||
var strutil = Bridge.External.String;
|
||||
var nstrutil = Bridge.NString;
|
||||
var boolTrue = ["true", "1", "yes", "on", "y", "t", "zhen", "真"];
|
||||
var boolFalse = ["false", "0", "no", "off", "n", "f", "jia", "假"];
|
||||
global.parseBool = function(str) {
|
||||
str = "" + str;
|
||||
for (var i = 0; i < boolTrue.length; i++) {
|
||||
if (nstrutil.equals(str, boolTrue[i])) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < boolFalse.length; i++) {
|
||||
if (nstrutil.equals(str, boolFalse[i])) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
};
|
||||
})(this);
|
||||
Reference in New Issue
Block a user