Update Shell and Fix Bugs

This commit is contained in:
Bruce
2025-12-07 15:18:40 +08:00
parent 98c0f91b8c
commit bb6b2b7521
51 changed files with 46468 additions and 12601 deletions
@@ -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("about");
} catch (e) {}
</script>
</head>
<body>
<div class="pagecontainer full pagesection">
<div class="section padding">
<h2 data-res-fromfile="publicRes(124)"></h2>
<p data-res-fromfile="getFileResPair(exepath, 300)"></p>
<p style="white-space: pre-wrap;"><span data-res-fromfile="publicRes (130)"></span>&#9;<span id="current-version"></span></p>
<script>
try {
var storage = Bridge.External.Storage;
var path = storage.path;
var versionFilePath = path.combine(path.root, "version");
var versionFile = storage.getFile(versionFilePath);
window.currver = versionFile.content;
} catch (e) {
window.currver = "0.0.0.1";
}
document.getElementById("current-version").textContent = window.currver;
</script>
</div>
</div>
</body>
</html>
@@ -0,0 +1,166 @@
<!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">
<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", "AppInstaller:SavePosAndSizeBeforeCancel", toggle.checked);
});
toggle.checked = parseBool(ini.getSection("Settings").getKey("AppInstaller: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("AppInstaller:DefaultWidth");
var defhk = setsect.getKey("AppInstaller: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("AppInstaller:MinimumWidth");
var minhk = setsect.getKey("AppInstaller: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 class="win-settings-section">
<br>
<label class="win-label" for="launch-when-ready" id="launch-when-ready-label" data-res-fromfile="getFileResPair(exepath, 330)"></label>
<script>
(function() {
"use strict";
var label = document.getElementById("launch-when-ready-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 = "launch-when-ready";
var ini = Bridge.External.Config.GetConfig();
toggle.addEventListener("change", function() {
ini.set("Settings", "AppInstaller:LaunchWhenReady", toggle.checked);
});
toggle.checked = parseBool(ini.getSection("Settings").getKey("AppInstaller:LaunchWhenReady").value);
})();
</script>
</div>
</div>
</div>
</body>
</html>
@@ -28,6 +28,11 @@
<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>
+34 -1
View File
@@ -12,6 +12,8 @@
}, 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);
@@ -21,8 +23,10 @@
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];
@@ -32,13 +36,42 @@
content.src = this.getAttribute("data-page");
setTimeout(function() {
content.style.display = "";
Windows.UI.Animation.runAsync(content, Windows.UI.Animation.Keyframes.SlideInFromBottom);
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;
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);
+7 -5
View File
@@ -1,16 +1,18 @@
(function(global) {
"use strict";
function getPage(page, display) {
function getPage(tag, page, display) {
return {
tag: tag,
page: page,
title: display
};
}
var pages = {
general: getPage("appinstaller/general.html", getPublicRes(101)),
theme: getPage("appinstaller/theme.html", getPublicRes(102)),
update: getPage("update.html", getPublicRes(103))
general: getPage("general", "appinstaller/general.html", getPublicRes(101)),
theme: getPage("theme", "appinstaller/theme.html", getPublicRes(102)),
update: getPage("update", "update.html", getPublicRes(103)),
about: getPage("about", "appinstaller/about.html", getPublicRes(124))
};
Object.defineProperty(global, "pages", {
get: function() {
@@ -19,7 +21,7 @@
});
Object.defineProperty(global, "guidePage", {
get: function() {
return getPage("appinstaller/guide.html", "Guide");
return getPage("guide", "appinstaller/guide.html", "Guide");
}
});
})(this);
@@ -9,4 +9,22 @@
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);
@@ -0,0 +1,102 @@
<!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("theme");
} catch (e) {}
</script>
</head>
<body>
<div class="pagecontainer full pagesection">
<div class="section padding">
<h2 id="page-title" data-res-fromfile="publicRes (102)"></h2>
<div class="win-settings-section">
<br>
<label>主题模式</label><br>
<select>
<option>深色</option>
<option>浅色</option>
<option>自动变换</option>
<option>自定义</option>
</select>
<br>
</div>
<div class="win-settings-section">
<br>
<label>自动变换选项</label><br>
<select>
<option>跟随系统</option>
<option>设置变换时间</option>
</select><br>
<div class="win-settings-section" id="item-automode">
<p>设置变换时间</p>
<div class="win-settings-row">
<div class="win-settings-label" style="font-weight: normal;">白天</div>
<div class="win-settings-control">
<div data-win-control="WinJS.UI.TimePicker" data-win-options="{ hour: 9, minute: 0, clock: '24HourClock' }">
</div>
</div>
</div>
<div class="win-settings-row">
<div class="win-settings-label" style="font-weight: normal;">夜晚</div>
<div class="win-settings-control">
<div data-win-control="WinJS.UI.TimePicker" data-win-options="{ hour: 18, minute: 0, clock: '24HourClock' }">
</div>
</div>
</div>
</div>
</div>
<div class="win-settings-section" id="item-theme">
<br>
<label>主题模式</label><br>
<script>
(function() {
var sect = document.getElementById("item-theme");
var toggle = new Toggle();
toggle.create();
toggle.parent = sect;
toggle.setColor("#202020");
toggle.showlabel = true;
toggle.setStatusText("深色", "浅色");
})();
</script>
<br>
<label>选择主题</label>
<div id="theme-items-select" data-win-control="WinJS.UI.ListView"></div>
</div>
</div>
</div>
</body>
</html>