Update reader.

This commit is contained in:
Bruce
2026-04-06 13:09:20 +08:00
parent b562d5b5ba
commit 64f3958d7f
55 changed files with 16056 additions and 9780 deletions
Binary file not shown.
+4
View File
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<Application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" GeneratedByTileIconifier="true">
<VisualElements ShowNameOnSquare150x150Logo="on" Square150x150Logo="VisualElements\MediumIconReader.png" Square70x70Logo="VisualElements\SmallIconReader.png" ForegroundText="light" BackgroundColor="#004fe2" TileIconifierColorSelection="Default" TileIconifierCreatedWithUpgrade="true" />
</Application>
Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<ShortcutItemImage xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<OriginalBytes>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</OriginalBytes>
<OriginalPath>E:\Profiles\Bruce\Desktop\tilesassets\medium.scale-140.png</OriginalPath>
<Height>100</Height>
<Width>100</Width>
<X>0</X>
<Y>0</Y>
</ShortcutItemImage>
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<ShortcutItemImage xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<OriginalBytes>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</OriginalBytes>
<OriginalPath>E:\Profiles\Bruce\Desktop\tilesassets\small.scale-140.png</OriginalPath>
<Height>50</Height>
<Width>50</Width>
<X>0</X>
<Y>0</Y>
</ShortcutItemImage>
+7
View File
@@ -34,4 +34,11 @@
<scale dpi="180">splash\manager\splash.scale-180.png</scale>
<scale dpi="default">splash\manager\splash.png</scale>
</resource>
<resource id="reader">
<scale dpi="80">splash\reader\splash.scale-80.png</scale>
<scale dpi="100">splash\reader\splash.scale-100.png</scale>
<scale dpi="140">splash\reader\splash.scale-140.png</scale>
<scale dpi="180">splash\reader\splash.scale-180.png</scale>
<scale dpi="default">splash\reader\splash.png</scale>
</resource>
</resources>
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

+1 -1
View File
@@ -32,7 +32,7 @@
ForegroundText='light'
BackgroundColor='#004fe2'>
<DefaultTile ShowName='allLogos' />
<SplashScreen Image="VisualElements\splash\manager\splash.png"
<SplashScreen Image="VisualElements\splash\reader\splash.png"
BackgroundColor="#004fe2" DarkModeBackgroundColor='#002770' />
</VisualElements>
</Application>
BIN
View File
Binary file not shown.
+2
View File
@@ -35,6 +35,8 @@
try {
inst.sendAsync(body, encoding, function(resp) {
if (c) c(resp);
}, function(err) {
if (e) e(err);
});
} catch (ex) { if (e) e(ex); }
});
+285
View File
@@ -0,0 +1,285 @@
(function(global) {
function isString(obj) {
return typeof obj === "string" || obj instanceof String;
}
function isFunction(obj) {
return typeof obj === "function";
}
function isBool(obj) {
return typeof obj === "boolean" || obj instanceof Boolean;
}
function isNumber(obj) {
return typeof obj === "number" || obj instanceof Number;
}
function isDate(obj) {
return obj instanceof Date;
}
function isDevToolsOpen() {
if (window.__IE_DEVTOOLBAR_CONSOLE_COMMAND_LINE) {
return true; // IE10 或更早版本
}
if (window.__BROWSERTOOLS_CONSOLE) {
return true; // IE11
}
if (window.__BROWSERTOOLS_DOMEXPLORER_ADDED) {
return true; // IE11
}
return false;
}
var APIs = [
"Windows.ApplicationModel.DesignMode.designModeEnabled",
"Windows.ApplicationModel.Resources.Core.ResourceContext",
"Windows.ApplicationModel.Resources.Core.ResourceManager",
"Windows.ApplicationModel.Search.Core.SearchSuggestionManager",
"Windows.ApplicationModel.Search.SearchQueryLinguisticDetails",
"Windows.Data.Text.SemanticTextQuery",
"Windows.Foundation.Collections.CollectionChange",
"Windows.Foundation.Uri",
"Windows.Globalization.ApplicationLanguages",
"Windows.Globalization.Calendar",
"Windows.Globalization.DateTimeFormatting",
"Windows.Globalization.Language",
"Windows.Phone.UI.Input.HardwareButtons",
"Windows.Storage.ApplicationData",
"Windows.Storage.CreationCollisionOption",
"Windows.Storage.BulkAccess.FileInformationFactory",
"Windows.Storage.FileIO",
"Windows.Storage.FileProperties.ThumbnailType",
"Windows.Storage.FileProperties.ThumbnailMode",
"Windows.Storage.FileProperties.ThumbnailOptions",
"Windows.Storage.KnownFolders",
"Windows.Storage.Search.FolderDepth",
"Windows.Storage.Search.IndexerOption",
"Windows.Storage.Streams.RandomAccessStreamReference",
"Windows.UI.ApplicationSettings.SettingsEdgeLocation",
"Windows.UI.ApplicationSettings.SettingsCommand",
"Windows.UI.ApplicationSettings.SettingsPane",
"Windows.UI.Core.AnimationMetrics",
"Windows.UI.Input.EdgeGesture",
"Windows.UI.Input.EdgeGestureKind",
"Windows.UI.Input.PointerPoint",
"Windows.UI.ViewManagement.HandPreference",
"Windows.UI.ViewManagement.InputPane",
"Windows.UI.ViewManagement.UISettings",
"Windows.UI.WebUI.Core.WebUICommandBar",
"Windows.UI.WebUI.Core.WebUICommandBarBitmapIcon",
"Windows.UI.WebUI.Core.WebUICommandBarClosedDisplayMode",
"Windows.UI.WebUI.Core.WebUICommandBarIconButton",
"Windows.UI.WebUI.Core.WebUICommandBarSymbolIcon",
"Windows.UI.WebUI.WebUIApplication",
];
for (var i = 0; i < APIs.length; i++) {
var api = APIs[i];
apiNs = api.split(".");
var lastNs = global;
for (var j = 0; j < apiNs.length - 1; j++) {
var ns = apiNs[j];
if (typeof lastNs[ns] === "undefined") lastNs[ns] = {};
lastNs = lastNs[ns];
}
var leaf = apiNs[apiNs.length - 1];
if ("abcdefghijklmnopqrstuvwxyz".indexOf(leaf[0]) < 0) {
lastNs[leaf] = {};
Object.defineProperty(lastNs[leaf], "current", {
get: function() { return null; },
enumerable: true,
});
}
}
Object.defineProperty(Windows.ApplicationModel.DesignMode, "designModeEnabled", {
get: isDevToolsOpen,
enumerable: true,
});
Windows.Foundation.Collections.CollectionChange = {
reset: 0,
itemInserted: 1,
itemRemoved: 2,
itemChanged: 3
};
Windows.Foundation.Uri = function(uri) {
var inst = null;
if (arguments.length === 2) {
inst = external.Utilities.createUri2(uri, arguments[1]);
} else {
inst = external.Utilities.createUri(uri);
}
inst.jsType = this;
return inst;
};
Windows.Globalization.ApplicationLanguages = {};
Object.defineProperty(Windows.Globalization.ApplicationLanguages, "languages", {
get: function() {
try {
var list = [];
var langs = external.System.Locale.recommendLocaleNames;
langs.forEach(function(item) {
list.push(item);
});
return list;
} catch (e) {
return navigator.languages;
}
},
enumerable: true,
});
Object.defineProperty(Windows.Globalization.ApplicationLanguages, "Languages", {
get: function() {
return Windows.Globalization.ApplicationLanguages.languages;
},
enumerable: true,
});
Windows.Globalization.LanguageLayoutDirection = {
ltr: 0,
rtl: 1,
ttbLtr: 2,
ttbRtl: 3
};
Windows.Globalization.Language = function(languageTag) {
var inst = external.System.Locale.createLanguage(languageTag);
inst.jsType = this;
return inst;
};
Object.defineProperty(Windows.Globalization.Language, "currentInputMethodLanguageTag", {
get: function() {
return external.System.Locale.currentInputMethodLanguageTag;
},
enumerable: true,
});
Windows.Globalization.Language.isWellFormed = external.System.Locale.isWellFormed;
Windows.Globalization.Language.getMuiCompatibleLanguageListFromLanguageTags = external.System.Locale.getMuiCompatibleLanguageListFromLanguageTags;
Windows.Globalization.Calendar = function(args) {
var inst = null;
if (arguments.length === 0) {
inst = external.Utilities.createCalendar(args);
} else if (arguments.length === 1) {
inst = external.Utilities.createCalendar2(args);
} else if (arguments.length === 3) {
inst = external.Utilities.createCalendar3(args, arguments[1], arguments[2], arguments[3]);
} else if (arguments.length === 4) {
inst = external.Utilities.createCalendar4(args, arguments[1], arguments[2], arguments[3], arguments[4]);
}
return inst;
};
Windows.Globalization.DateTimeFormatting = {};
Windows.Globalization.DateTimeFormatting.DayFormat = {
default: 1,
none: 0
};
Windows.Globalization.DateTimeFormatting.DayOfWeekFormat = {
none: 0,
default: 1,
abberviated: 2,
full: 3
};
Windows.Globalization.DateTimeFormatting.HourFormat = {
none: 0,
default: 1
};
Windows.Globalization.DateTimeFormatting.MinuteFormat = {
none: 0,
default: 1
};
Windows.Globalization.DateTimeFormatting.MonthFormat = {
none: 0,
default: 1,
abberviated: 2,
full: 3,
numeric: 4
};
Windows.Globalization.DateTimeFormatting.SecondFormat = {
default: 1,
none: 0
};
Windows.Globalization.DateTimeFormatting.YearFormat = {
default: 1,
none: 0,
abberviated: 2,
full: 3,
};
Windows.Globalization.DateTimeFormatting.DateTimeFormatter = function() {
var args = Array.prototype.slice.call(arguments);
var inst = null;
if (args.length === 1) inst = external.Utilities.createDateTimeFormatterFromTemplate(args[0]);
else if (args.length === 2) inst = external.Utilities.CreateDateTimeFormatterFromTemplateAndLanguages(args[0], args[1]);
else if (args.length === 3) inst = external.Utilities.CreateDateTimeFormatterFromTimeEnums(args[0], args[1], args[2]);
else if (args.length === 4) inst = external.Utilities.CreateDateTimeFormatterFromDateEnums(args[0], args[1], args[2], args[3]);
else if (args.length === 5) inst = external.Utilities.CreateDateTimeFormatterFromTemplateFull(args[0], args[1], args[2], args[3], args[4]);
else if (args.length === 8) inst = external.Utilities.CreateDateTimeFormatterFromDateTimeEnums(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
else if (args.length === 11) inst = external.Utilities.CreateDateTimeFormatterFromDateTimeEnumsFull(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9], args[10]);
return inst;
};
Windows.Storage.CreationCollisionOption = {
generateUniqueName: 0,
replaceExisting: 1,
failIfExists: 2,
openIfExists: 3
};
Windows.Storage.FileProperties = {
ThumbnailType: {
image: 0,
icon: 1
},
ThumbnailMode: {
pictureView: 0,
videosView: 1,
musicView: 2,
documentsView: 3,
listView: 4,
singleItem: 5
},
ThumbnailType: {
image: 0,
icon: 1
},
VideoOrientation: {
normal: 0,
rotate90: 90,
rotate180: 180,
rotate270: 270
},
PhotoOrientation: {
unspecified: 0,
normal: 1,
flipHorizontal: 2,
rotate180: 3,
flipVertical: 4,
transpose: 5,
rotate270: 6,
transverse: 7,
rotate90: 8
},
};
Windows.Storage.Search = {
FolderDepth: function() {},
IndexerOption: function() {}
};
Windows.Storage.Search.FolderDepth.deep = 1;
Windows.Storage.Search.FolderDepth.shallow = 0;
Windows.Storage.Search.IndexerOption.useIndexerWhenAvailable = 0;
Windows.Storage.Search.IndexerOption.onlyUseIndexer = 1;
Windows.Storage.Search.IndexerOption.doNotUseIndexer = 2;
Windows.Storage.Search.IndexerOption.onlyUseIndexerAndOptimizeForIndexedProperties = 3;
Windows.UI.ApplicationSettings.SettingsEdgeLocation = {
right: 0,
left: 1
};
Windows.UI.Input.EdgeGestureKind = {
touch: 0,
keyboard: 1,
mouse: 2
};
Windows.UI.ViewManagement.HandPreference = {
leftHanded: 0,
rightHanded: 1
};
Windows.UI.WebUI.Core.WebUICommandBarClosedDisplayMode = {
default: 0,
minimal: 1,
compact: 2
};
})(this);
+72
View File
@@ -2,6 +2,7 @@
var strres = external.StringResources;
var conf = external.Config.current;
var set = conf.getSection("Settings");
var metadata = conf.getSection("PackageReader:AppMetadatas");
function createLocalizedCompare(locale) {
return function(a, b) {
@@ -15,6 +16,26 @@
};
}
var pagemgr = new PageManager();
(function() {
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) {
if (typeof str === "boolean") return 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;
};
})();
OnLoad.add(function() {
var mgr = Package.manager;
var nstr = Bridge.NString;
@@ -24,8 +45,59 @@
return Bridge.String.tolower(Bridge.String.trim(item.Identity.FullName));
});
var themeColor = Bridge.UI.themeColor;
var reader = Package.reader;
var appitems = [
"Id",
"StartPage",
"EntryPoint",
"Executable",
"BackgroundColor",
"DisplayName",
"Description",
"ShortName",
"ForegroundText",
"SmallLogo",
"Square30x30Logo",
"Square44x44Logo",
"Square70x70Logo",
"Square71x71Logo",
"Logo",
"Square150x150Logo",
"WideLogo",
"Wide310x150Logo",
"Square310x310Logo",
"Tall150x310Logo",
"LockScreenLogo",
"LockScreenNotification",
"DefaultSize",
"AppListEntry",
"VisualGroup",
"MinWidth",
];
var defaultItems = [
"Id",
"DisplayName",
"BackgroundColor",
"ForegroundText",
"ShortName",
"Square44x44Logo",
"SmallLogo"
];
var metaitemlist = [];
for (var i = 0; i < appitems.length; i++) {
var item = appitems[i];
var isenable = metadata.getKey(item).value;
if (isenable === null || isenable === void 0 || isenable === "") {
isenable = defaultItems.indexOf(item) >= 0;
}
if (parseBool(isenable) == true) {
metaitemlist.push(item);
}
}
reader.updateApplicationReadItems(metaitemlist);
pagemgr.register("reader", document.getElementById("tag-reader"), document.getElementById("page-reader"));
pagemgr.register("acquire", document.getElementById("tag-acquire"), document.getElementById("page-acquire"));
pagemgr.register("search", document.getElementById("tag-search"), document.getElementById("page-search"));
pagemgr.go("reader");
});
})(this);
+1
View File
@@ -57,6 +57,7 @@
try {
var obj = nodes[i].getAttribute('data-res-resxml');
var strres = external.StringResources;
if (!strres) strres = Bridge.External.WinJsStringRes;
if (strres) {
try {
nodes[i].textContent = strres.get(obj);
+75 -54
View File
@@ -8,10 +8,13 @@
<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>
<script type="text/javascript" src="js/polyfill-winrt.js"></script>
<link rel="stylesheet" href="libs/winjs/1.0/css/ui-light.css" id="winjs-style-1">
<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="libs/winjs/1.0/js/en-us/base.strings.js"></script>
<script type="text/javascript" src="libs/winjs/1.0/js/en-us/ui.strings.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>
@@ -60,13 +63,13 @@
<div class="page full guide fold">
<main class="main">
<div id="page-reader" style="display: none;" class="ispage padding">
<h2>读取</h2>
<p>请选择一个包,获取其信息。</p>
<h2 data-res-resxml="READER_READER_TITLE"></h2>
<p data-res-resxml="READER_READER_DESC"></p>
<div>
<label for="read-pkgpath">文件路径</label>
<label for="read-pkgpath" data-res-resxml="READER_READER_FILEPATH"></label>
<div class="itemrow">
<input type="text" id="read-pkgpath" style="margin-right: 10px;">
<button id="read-browse">浏览</button>
<button id="read-browse" data-res-resxml="READER_READER_BROWSER"></button>
</div>
<script>
(function() {
@@ -76,7 +79,9 @@
readBrowse.onclick = function() {
var explorer = external.Storage.Explorer;
explorer.file(
"{appxpkg}|*.appx;*.appxbundle;*.msix;*.msixbundle|{allfiles}|*.*",
"{appxpkg}|*.appx;*.appxbundle;*.msix;*.msixbundle|{allfiles}|*.*"
.replace("{appxpkg}", stringRes("READER_READER_APPXFILE"))
.replace("{allfiles}", stringRes("READER_READER_ALLFILES")),
lastDir,
function(result) {
if (!result) return;
@@ -90,20 +95,20 @@
</div>
<div class="itemrow">
<input type="checkbox" id="read-usepri" style="margin-left: 0;">
<label for="read-usepri">需要解析 PRI 资源文件</label>
<label for="read-usepri" data-res-resxml="READER_READER_USEPRI"></label>
</div>
<style>
.part-read-button {
margin-bottom: 5px;
}
</style>
<button id="read-btn" class="part-read-button">读取</button>
<button id="read-result-save" class="part-read-button">将读取结果保存为文件</button>
<button id="read-result-xml" class="part-read-button">保存为 XML 文件</button>
<button id="read-result-json" class="part-read-button">保存为 JSON 文件</button>
<button id="read-btn" class="part-read-button" data-res-resxml="READER_READER_READ"></button>
<button id="read-result-save" class="part-read-button" data-res-resxml="READER_READER_SAVEFILE"></button>
<button id="read-result-xml" class="part-read-button" data-res-resxml="READER_READER_SAVEXML"></button>
<button id="read-result-json" class="part-read-button" data-res-resxml="READER_READER_SAVEJSON"></button>
<br>
<progress id="read-loading" style="display: none;"></progress>
<p style="margin-bottom: 2px; margin-top: 5px;">读取结果:</p>
<p style="margin-bottom: 2px; margin-top: 5px;" data-res-resxml="READER_READER_RESULT"></p>
<iframe id="read-result" width="100%" frameborder="0" src="report.html"></iframe>
<script>
(function() {
@@ -112,7 +117,7 @@
function readResultResizeEvent(e) {
var parent = readResult.parentElement.parentElement;
var newHeight = parent.getBoundingClientRect().height - readResult.getBoundingClientRect().top - 24;
var newHeight = parent.getBoundingClientRect().height - readResult.getBoundingClientRect().top - 60;
//console.log(e, parent.getBoundingClientRect().height, readResult.getBoundingClientRect().top, newHeight);
readResult.style.height = parseInt(newHeight) + "px";
}
@@ -123,6 +128,8 @@
</script>
<script>
(function(global) {
var conf = external.Config.current;
var set = conf.getSection("Settings");
var readBtn = document.getElementById("read-btn");
var readResult = document.getElementById("read-result");
var readPkgpath = document.getElementById("read-pkgpath");
@@ -132,6 +139,7 @@
var readSave = document.getElementById("read-result-save");
var readToXml = document.getElementById("read-result-xml");
var readToJson = document.getElementById("read-result-json");
readUsepri.checked = set.getKey("PackageReader:DefaultParsingPriFile").readBool();
readResult.style.display = "none";
readBtn.onclick = function() {
var self = this;
@@ -160,7 +168,7 @@
onCompleted();
readResult.contentWindow.setReport({
status: false,
message: "请选择一个有效文件"
message: stringRes("READER_READER_PLEASESELECT")
});
self.disabled = false;
return;
@@ -187,7 +195,7 @@
progress.classList.add("win-ring");
progress.style.color = "white";
var span = document.createElement("span");
span.textContent = "正在保存文件";
span.textContent = stringRes("READER_READER_SAVINGHTML");
progress.style.marginRight = "10px";
cont.setAttribute("style", "display: flex; flex-direction: row; align-items: center; display: -ms-flexbox; -ms-flex-direction: row; -ms-align-items: center;")
cont.appendChild(progress);
@@ -199,7 +207,7 @@
return dlg.show().then(function(id) {
return new Promise(function(c, e) {
external.Storage.save(
"{htmlfile}|*.html;*.htm",
"{htmlfile}|*.html;*.htm".replace("{htmlfile}", stringRes("READER_READER_HTMLFILE")),
lastDir,
"report-" + new Date().getTime(),
c
@@ -216,7 +224,7 @@
});
}).then(null, function(err) {
dlg.hide().then(function() {
dlg.title = "保存时发生问题";
dlg.title = stringRes("READER_READER_SAVEERR");
dlg.content = err.message || err;
dlg.commands.push(new WinJS.UI.ContentDialogCommand(
getPublicRes(800)
@@ -238,7 +246,7 @@
progress.classList.add("win-ring");
progress.style.color = "white";
var span = document.createElement("span");
span.textContent = "正在生成 JSON 文件,请稍候... \n这可能需要比较长的时间。";
span.textContent = stringRes("READER_READER_SAVEINGJSON");
progress.style.marginRight = "10px";
cont.setAttribute("style", "display: flex; flex-direction: row; align-items: center; display: -ms-flexbox; -ms-flex-direction: row; -ms-align-items: center;")
cont.appendChild(progress);
@@ -250,7 +258,7 @@
return dlg.show().then(function(id) {
return new Promise(function(c, e) {
external.Storage.save(
"{jsonzipfile}|*.zip",
"{jsonzipfile}|*.zip".replace("{jsonzipfile}", stringRes("READER_READER_JSONFILE")),
lastDir,
"report-" + new Date().getTime(),
c
@@ -259,7 +267,7 @@
}).then(function(filepath) {
return new Promise(function(c, e) {
if (!readPkgpath.value) {
e(new Error("请选择一个有效文件"));
e(new Error(stringRes("READER_READER_PLEASESELECT")));
return;
}
try {
@@ -284,7 +292,7 @@
});
}).then(null, function(err) {
dlg.hide().then(function() {
dlg.title = "保存时发生问题";
dlg.title = stringRes("READER_READER_SAVEERR");
dlg.content = err.message || err;
dlg.commands.push(new WinJS.UI.ContentDialogCommand(
getPublicRes(800)
@@ -307,7 +315,7 @@
progress.classList.add("win-ring");
progress.style.color = "white";
var span = document.createElement("span");
span.textContent = "正在生成 XML 文件,请稍候... \n这可能需要比较长的时间。";
span.textContent = stringRes("READER_READER_SAVEINGXML");
progress.style.marginRight = "10px";
cont.setAttribute("style", "display: flex; flex-direction: row; align-items: center; display: -ms-flexbox; -ms-flex-direction: row; -ms-align-items: center;")
cont.appendChild(progress);
@@ -319,7 +327,7 @@
return dlg.show().then(function(id) {
return new Promise(function(c, e) {
external.Storage.save(
"{xmlzipfile}|*.zip",
"{xmlzipfile}|*.zip".replace("{xmlzipfile}", stringRes("READER_READER_XMLFILE")),
lastDir,
"report-" + new Date().getTime(),
c
@@ -329,7 +337,7 @@
return new Promise(function(c, e) {
try {
if (!readPkgpath.value) {
e(new Error("请选择一个有效文件"));
e(new Error(stringRes("READER_READER_PLEASESELECT")));
return;
}
var pkg = Package.reader.package(readPkgpath.value);
@@ -353,7 +361,7 @@
});
}).then(null, function(err) {
dlg.hide().then(function() {
dlg.title = "保存时发生问题";
dlg.title = stringRes("READER_READER_SAVEERR");
dlg.content = err.message || err;
dlg.commands.push(new WinJS.UI.ContentDialogCommand(
getPublicRes(800)
@@ -369,35 +377,35 @@
</script>
</div>
<div id="page-acquire" style="display: none;" class="ispage padding">
<h2>获取</h2>
<h2 data-res-resxml="READER_ACQUIRE_TITLE"></h2>
<div id="acquire-forbidden" style="width: 100%;">
<p>由于来自 store.rg-adguard.net 的限制,现在暂时无法实现对包的获取。请自行打开下面 URL 进行访问。</p>
<p data-res-resxml="READER_ACQUIRE_PROHIBIT"></p>
<a onclick="external.Process.open ('https://store.rg-adguard.net')">store.rg-adguard.net</a>
</div>
<div id="acquire-enable" style="width: 100%;">
<p>请在下面的输入框中输入要查询的内容,设置好参数后将进行查询。</p>
<p data-res-resxml="READER_ACQUIRE_DESC"></p>
<div>
<div>
<input type="text" id="acquire-input">
<select id="acquire-valuetype" name="type">
<option value="url">分享链接</option>
<option value="ProductId">产品 ID</option>
<option value="PackageFamilyName">包系列名</option>
<option value="CategoryId">类别 ID</option>
<select id="acquire-valuetype" name="type" value="url">
<option value="url" data-res-resxml="READER_ACQUIRE_SHAREDURL"></option>
<option value="ProductId" data-res-resxml="READER_ACQUIRE_PRODUCTID"></option>
<option value="PackageFamilyName" data-res-resxml="READER_ACQUIRE_PFN"></option>
<option value="CategoryId" data-res-resxml="READER_ACQUIRE_CATEGORYID"></option>
</select>
<select id="acquire-channel" name="ring">
<option title="Windows Insider Fast" value="WIF">快速</option>
<option title="Windows Insider Slow" value="WIS">慢速</option>
<option title="Release Preview" value="RP" selected>发布预览</option>
<option title="Default OS" value="Retail">正式</option>
<select id="acquire-channel" name="ring" value="RP">
<option title="Windows Insider Fast" value="WIF" data-res-resxml="READER_ACQUIRE_WIF"></option>
<option title="Windows Insider Slow" value="WIS" data-res-resxml="READER_ACQUIRE_WIS"></option>
<option title="Release Preview" value="RP" data-res-resxml="READER_ACQUIRE_RP"></option>
<option title="Default OS" value="Retail" data-res-resxml="READER_ACQUIRE_RETAIL"></option>
</select>
</div>
<div>
<div class="itemrow">
<input type="checkbox" id="acquire-smartquery" style="margin-left: 0px;">
<label for="acquire-smartquery">自动查询</label>
<label for="acquire-smartquery" data-res-resxml="READER_ACQUIRE_SMARTQUERY"></label>
</div>
<button id="acquire-query">查询</button>
<button id="acquire-query" data-res-resxml="READER_ACQUIRE_QUERY"></button>
</div>
</div>
<style>
@@ -492,17 +500,19 @@
}
</style>
<div id="acquire-template" class="acquire-item" style="display: none;">
<div id="name" class="top" title="Identity Name">Identity Name</div>
<div id="name" class="top" title="Identity Name"></div>
<div class="medium">
<div id="ext" title="File Type">Appx</div>
<div id="version" title="Version">1.0.0.0</div>
<div id="architecture" title="Processor Architecture">neutral</div>
<div id="ext" title="File Type"></div>
<div id="version" title="Version"></div>
<div id="architecture" title="Processor Architecture"></div>
<div id="publisherId" title="Identity Publisher Id"></div>
<div id="size" title="File Size"></div>
</div>
<div class="bottom">
<div id="hashpart"><span>SHA-1: </span><span id="hash"></span></div>
<div><a download id="download" href="">点击下载</a></div>
<div>
<a download id="download" href="" data-res-resxml="READER_ACQUIRE_CLICKDOWNLOAD"></a>
</div>
</div>
</div>
<div id="acquire-loading">
@@ -514,17 +524,17 @@
</div>
</div>
<div id="acquire-result" style="width: 100%;">
<p style="font-weight: normal;" title="Category ID"><span>类别 ID</span>: <span id="acquire-categoryid" style="user-select: text; -ms-user-select: element;"></span></p>
<h3>以下可能为检索到的应用</h3>
<p style="font-weight: normal;" title="Category ID"><span data-res-resxml="READER_ACQUIRE_CATEGORYID"></span>: <span id="acquire-categoryid" style="user-select: text; -ms-user-select: element;"></span></p>
<h3 data-res-resxml="READER_ACQUIRE_RESULTAPPS"></h3>
<div id="acquire-list-app" style="width: 100%;"></div>
<h3>以下可能为检索到的依赖项</h3>
<h3 data-res-resxml="READER_ACQUIRE_RESULTDEPS"></h3>
<div id="acquire-list-dep" style="width: 100%;"></div>
</div>
<script>
(function(global) {
var conf = external.Config.current;
var set = conf.getSection("Settings");
var isForbidden = !set.getKey("EnableAcquire").readBool(false);
var isForbidden = !set.getKey("PackageReader:EnableAcquire").readBool(false);
var acquireInput = document.getElementById("acquire-input");
var acquireValuetype = document.getElementById("acquire-valuetype");
var acquireChannel = document.getElementById("acquire-channel");
@@ -578,7 +588,7 @@
keys.forEach(function(k, i) {
var listview = listView[k];
var p = document.createElement("p");
p.textContent = "还没有内容...";
p.textContent = stringRes("READER_ACQUIRE_NOCONTENT");
listview.emptyView = p;
});
acquireLoading.statusBar = new TransitionPanel(acquireLoading, {
@@ -607,7 +617,7 @@
acquireValuetype.disabled =
acquireChannel.disabled = true;
queryFunc = StoreRG.test;
acquireLoadingLabel.textContent = "正在查询...";
acquireLoadingLabel.textContent = stringRes("READER_ACQUIRE_QUERYING");
queryFunc(acquireInput.value, acquireValuetype.value, acquireChannel.value).then(function(result) {
acquireCategoryid.textContent = result.categoryId;
var applist = [];
@@ -628,7 +638,7 @@
return item.file;
});
listView.deps.refresh();
acquireLoadingLabel.textContent = "已获取到 {0} 个信息"
acquireLoadingLabel.textContent = stringRes("READER_ACQUIRE_RESULTCNT")
.replace("{0}", applist.length + deplist.length);
}, function(err) {
dataSrc.apps.clear();
@@ -654,6 +664,13 @@
</script>
</div>
</div>
<div id="page-search" style="display: none;" class="ispage padding">
<h2 data-res-resxml="READER_SEARCH_TITLE"></h2>
<div id="search-forbidden" style="width: 100%;">
<p data-res-resxml="READER_SEARCH_PROHIBIT"></p>
<a onclick="external.Process.open ('https://dbox.tools')">dbox.tools</a>
</div>
</div>
</main>
<aside class="win-ui-dark">
<nav class="container">
@@ -677,15 +694,19 @@
<ul class="list">
<li id="tag-reader">
<div role="img">&#57650;</div>
<span class="win-type-base" data-res-resxml="MANAGER_MANAGE"></span>
<span class="win-type-base" data-res-resxml="READER_READER_TITLE"></span>
</li>
<li id="tag-acquire">
<div role="img">&#57624;</div>
<span class="win-type-base" data-res-resxml="MANAGER_MANAGE"></span>
<span class="win-type-base" data-res-resxml="READER_ACQUIRE_TITLE"></span>
</li>
<li id="tag-search">
<div role="img">&#57626;</div>
<span class="win-type-base" data-res-resxml="READER_SEARCH_TITLE"></span>
</li>
<li id="tag-settings">
<div role="img">&#57621;</div>
<span class="win-type-base" data-res-resxml="MANAGER_SETTINGS"></span>
<span class="win-type-base" data-res-resxml="READER_SETTINGS_TITLE"></span>
</li>
<script>
(function(global) {
+37 -1
View File
@@ -195,6 +195,42 @@
</table>
<script>
(function(global) {
var imageItem = [
"LockScreenLogo",
"Logo",
"SmallLogo",
"Square150x150Logo",
"Square30x30Logo",
"Square310x310Logo",
"Square44x44Logo",
"Square70x70Logo",
"Square71x71Logo",
"Tall150x310Logo",
"WideLogo",
"Wide310x150Logo"
];
function toLowerCase(str) {
if (typeof str !== "string") return "";
return str.replace(/[A-Z]/g, function(ch) {
return String.fromCharCode(ch.charCodeAt(0) + 32);
});
}
function trim(str) {
return str.replace(/^\s+|\s+$/g, "");
}
function isImageItem(item) {
var tl = trim(toLowerCase(item));
for (var i = 0; i < imageItem.length; i++) {
var lower = trim(toLowerCase(imageItem[i]));
if (lower == tl) {
return true;
}
}
return false;
}
if (typeof Array.prototype.forEach !== "function") {
Array.prototype.forEach = function(callback, thisArg) {
var T, k;
@@ -317,7 +353,7 @@
var tdv = document.createElement("td");
tdk.textContent = key;
tdv.textContent = t[key];
if (typeof t[key + "_Base64"] !== "undefined") {
if (typeof t[key + "_Base64"] !== "undefined" && isImageItem(key)) {
tdv.innerHTML = "";
var img = document.createElement("img");
img.src = t[key + "_Base64"];
+1
View File
@@ -23,6 +23,7 @@
var settingItems = {
appinstaller: getSettingsItem("appinstaller.html", getLibRes("appinstaller.exe", 300)),
manager: getSettingsItem("manager.html", getStringRes("MANAGER_APPTITLE")),
reader: getSettingsItem("reader.html", getStringRes("READER_APPTITLE")),
settings: getSettingsItem("settings.html", getLibRes("settings.exe", 200)),
};
Object.defineProperty(global, "settingPages", {
+56
View File
@@ -0,0 +1,56 @@
<!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/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>
<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="reader/preinit.js"></script>
<script type="text/javascript" src="reader/items.js"></script>
<script type="text/javascript" src="reader/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="READER_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>
+158
View File
@@ -0,0 +1,158 @@
<!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/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/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("appitems");
} catch (e) {}
</script>
</head>
<body>
<div class="pagecontainer full pagesection">
<div class="section padding">
<div class="bottom-compensate">
<h2 id="page-title" data-res-resxml="READER_SETTINGS_APPITEMS"></h2>
<div class="win-settings-section">
<p data-res-resxml="READER_SETTINGS_APPITEMS_DESC"></p>
<style>
table {
border-collapse: collapse;
}
table th,
table td {
border: 1px solid #ccc;
padding: 5px;
}
</style>
<table style="max-width: 100%;">
<thead>
<tr>
<th></th>
<th data-res-resxml="READER_SETTINGS_APPITEMS_ITEM"></th>
<th data-res-resxml="READER_SETTINGS_APPITEMS_DESCRIPTION"></th>
</tr>
</thead>
<tbody id="appitem-list"></tbody>
</table>
<script>
(function() {
"use strict";
var appItemList = document.getElementById("appitem-list");
var ini = Bridge.External.Config.GetConfig();
var appitemset = ini.getSection("PackageReader:AppMetadatas");
var appitems = [
"Id",
"StartPage",
"EntryPoint",
"Executable",
"BackgroundColor",
"DisplayName",
"Description",
"ShortName",
"ForegroundText",
"SmallLogo",
"Square30x30Logo",
"Square44x44Logo",
"Square70x70Logo",
"Square71x71Logo",
"Logo",
"Square150x150Logo",
"WideLogo",
"Wide310x150Logo",
"Square310x310Logo",
"Tall150x310Logo",
"LockScreenLogo",
"LockScreenNotification",
"DefaultSize",
"AppListEntry",
"VisualGroup",
"MinWidth",
];
var defaultItems = [
"Id",
"DisplayName",
"BackgroundColor",
"ForegroundText",
"ShortName",
"Square44x44Logo",
"SmallLogo"
];
for (var i = 0; i < appitems.length; i++) {
var item = appitems[i];
var isenable = appitemset.getKey(item).value;
if (isenable === null || isenable === void 0 || isenable === "") {
isenable = defaultItems.indexOf(item) >= 0;
}
var dispItem = stringRes("APPMETADATA_" + item);
var tr = document.createElement("tr");
var tdCheck = document.createElement("td");
var tdItem = document.createElement("td");
var tdDesc = document.createElement("td");
tr.appendChild(tdCheck);
tr.appendChild(tdItem);
tr.appendChild(tdDesc);
var checkbox = document.createElement("input");
tdCheck.appendChild(checkbox);
checkbox.type = "checkbox";
checkbox.checked = isenable;
checkbox.id = "appitem_" + item;
checkbox.setAttribute("data-metadata", item);
var label = document.createElement("label");
tdItem.appendChild(label);
label.setAttribute("for", checkbox.id);
label.style.fontWeight = "normal";
label.textContent = item;
label.title = item;
var labelDesc = document.createElement("label");
tdDesc.appendChild(labelDesc);
labelDesc.textContent = dispItem;
labelDesc.title = dispItem;
labelDesc.setAttribute("for", checkbox.id);
labelDesc.style.fontWeight = "normal";
appItemList.appendChild(tr);
checkbox.onchange = function() {
appitemset.getKey(this.getAttribute("data-metadata")).value = this.checked;
}
}
})();
</script>
</div>
</div>
</div>
</div>
</body>
</html>
+192
View File
@@ -0,0 +1,192 @@
<!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/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/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", "PackageReader:SavePosAndSizeBeforeCancel", toggle.checked);
});
toggle.checked = parseBool(ini.getSection("Settings").getKey("PackageReader: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("PackageReader:DefaultWidth");
var defhk = setsect.getKey("PackageReader: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("PackageReader:MinimumWidth");
var minhk = setsect.getKey("PackageReader: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="enable-usepri" id="enable-usepri-label" data-res-resxml="READER_SETTINGS_USEPRI"></label>
<script>
(function() {
"use strict";
var label = document.getElementById("enable-usepri-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 = "enable-usepri";
var ini = Bridge.External.Config.GetConfig();
toggle.addEventListener("change", function() {
ini.set("Settings", "PackageReader:DefaultParsingPriFile", toggle.checked);
});
toggle.checked = parseBool(ini.getSection("Settings").getKey("PackageReader:DefaultParsingPriFile").value);
})();
</script>
</div>
<div class="win-settings-section">
<br>
<label class="win-label" for="enable-acquire" id="enable-acquire-label" data-res-resxml="READER_SETTINGS_ENABLEACQUIRE"></label>
<script>
(function() {
"use strict";
var label = document.getElementById("enable-acquire-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 = "enable-acquire";
var ini = Bridge.External.Config.GetConfig();
toggle.addEventListener("change", function() {
ini.set("Settings", "PackageReader:EnableAcquire", toggle.checked);
});
toggle.checked = parseBool(ini.getSection("Settings").getKey("PackageReader:EnableAcquire").value);
})();
</script>
</div>
</div>
</div>
</div>
</body>
</html>
+62
View File
@@ -0,0 +1,62 @@
<!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/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>
<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("READER_APPTITLE"));
var text = document.getElementById("guide-desc");
text.textContent = res.byname("IDS_GUIDETEXT_COMMON");
})();
</script>
</div>
</body>
</html>
+96
View 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
View 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);
+25
View File
@@ -0,0 +1,25 @@
(function(global) {
"use strict";
function getPage(tag, page, display) {
return {
tag: tag,
page: page,
title: display
};
}
var pages = {
general: getPage("general", "reader/general.html", getPublicRes(101)),
appitems: getPage("appitems", "reader/appitems.html", stringRes("READER_SETTINGS_APPITEMS")),
};
Object.defineProperty(global, "pages", {
get: function() {
return pages;
}
});
Object.defineProperty(global, "guidePage", {
get: function() {
return getPage("guide", "reader/guide.html", "guide");
}
});
})(this);
+30
View 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 = "Reader";
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);
Binary file not shown.

After

Width:  |  Height:  |  Size: 358 KiB

+17
View File
@@ -0,0 +1,17 @@
Copyright © 2000-2018 SharpZipLib Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this
software and associated documentation files (the "Software"), to deal in the Software
without restriction, including without limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-76
View File
@@ -1,76 +0,0 @@
NOTICE
This product includes software developed by third parties.
----------------------------------------------------------------------
PriTools (PriFormat)
----------------------------------------------------------------------
This product includes code derived from the PriTools project
developed by chausner.
Original Project:
Name: PriTools
Author: chausner
Project Homepage: https://github.com/chausner/PriTools
Source Repository: https://github.com/chausner/PriTools/tree/master
License: Apache License, Version 2.0
License File: LICENSE.PriTools.chausner
The original PriFormat project has been modified in this product, including:
- Renamed from "PriFormat" to "PriFileFormat"
- Adapted to support Microsoft .NET Framework 4.6
- Added support for the COM IStream interface
- Modified resource cleanup and disposal logic
- Changed namespaces and internal structure
These modifications were made by the authors of this product.
The original copyright and license notices
are retained in accordance with the Apache License, Version 2.0.
----------------------------------------------------------------------
pugixml
----------------------------------------------------------------------
This product includes pugixml, which is licensed under the MIT License.
License File:
LICENSE.pugixml
----------------------------------------------------------------------
RapidJSON
----------------------------------------------------------------------
This product includes RapidJSON, which is licensed under the MIT License.
License File:
LICENSE.RapidJSON
----------------------------------------------------------------------
markdown.js
----------------------------------------------------------------------
This product includes markdown.js (also known as markdown-js).
Original Project:
Name: markdown.js
Source Repository: https://github.com/evilstreak/markdown-js
License: MIT License
License File: LICENSE.markdown.js
----------------------------------------------------------------------
WinJS
----------------------------------------------------------------------
This product includes Microsoft WinJS (Windows Library for JavaScript).
Original Project:
Name: WinJS
Author: Microsoft Corporation
Project Homepage: https://github.com/winjs/winjs
License: MIT License
License File: LICENSE.WinJS
----------------------------------------------------------------------
End of notices.
+1
View File
@@ -77,6 +77,7 @@ text-align: center;
<li>markdown.js (MIT License) - <a href="https://github.com/evilstreak/markdown-js" target="_blank">https://github.com/evilstreak/markdown-js</a></li>
<li>CodeMirror (MIT License) - <a href="https://codemirror.net/" target="_blank">https://codemirror.net/</a></li>
<li>Json.NET (MIT License) - <a href="https://www.newtonsoft.com/json" target="_blank">https://www.newtonsoft.com/json</a></li>
<li>SharpZipLib (MIT License) - <a href="https://icsharpcode.github.io/SharpZipLib/" target="_blank">https://icsharpcode.github.io/SharpZipLib/</a></li>
</ul>
<h2>四、免责声明</h2>
Binary file not shown.
+1
View File
@@ -79,6 +79,7 @@ text-align: center;
<li>markdown.js (MIT License) - <a href="https://github.com/evilstreak/markdown-js" target="_blank">https://github.com/evilstreak/markdown-js</a></li>
<li>CodeMirror (MIT License) - <a href="https://codemirror.net/" target="_blank">https://codemirror.net/</a></li>
<li>Json.NET (MIT License) - <a href="https://www.newtonsoft.com/json" target="_blank">https://www.newtonsoft.com/json</a></li>
<li>SharpZipLib (MIT License) - <a href="https://icsharpcode.github.io/SharpZipLib/" target="_blank">https://icsharpcode.github.io/SharpZipLib/</a></li>
</ul>
<h2>4. Disclaimer</h2>
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large Load Diff