feat: material you settings monet theme

This commit is contained in:
7015725
2026-05-18 13:54:24 +08:00
parent 342171e2ac
commit eff53e4156
3 changed files with 51 additions and 19 deletions

View File

@@ -31,7 +31,22 @@ FloatBallAppWM.prototype.applySettingsTheme = function(T, isDark, C, cfgTpl) {
} catch(e) { safeLog(null, 'e', "catch " + String(e)); }
};
FloatBallAppWM.prototype.isSettingsMonetTheme = function(cfgTpl) {
try { return String((cfgTpl || this.config).SETTINGS_THEME || "animal") === "monet"; } catch(e) { return false; }
};
FloatBallAppWM.prototype.getSettingsGroupDefs = function() {
var cfgTpl = null;
try { cfgTpl = this.state.pendingUserCfg ? this.state.pendingUserCfg : this.config; } catch(eCfg) { cfgTpl = this.config; }
if (this.isSettingsMonetTheme && this.isSettingsMonetTheme(cfgTpl)) {
return [
{ key: "ball", title: "悬浮球", desc: "大小、图标、颜色和跟随距离", sections: ["悬浮球"] },
{ key: "panel", title: "面板", desc: "排列、文字、位置和吸边行为", sections: ["面板布局", "面板文字", "吸边与位置"] },
{ key: "theme", title: "外观", desc: "颜色、背景、透明度和动态取色", sections: ["外观"] },
{ key: "motion", title: "动作与手势", desc: "点击、长按、动画和贴边回弹", sections: ["动画", "触摸与手势"] },
{ key: "debug", title: "运行记录", desc: "查看日志与当前状态", sections: ["日志"] }
];
}
return [
{ key: "ball", title: "漂浮气球", desc: "调整气球大小、图标和跟随距离", sections: ["悬浮球"] },
{ key: "panel", title: "面板小屋", desc: "调整面板排列、文字、位置和吸边", sections: ["面板布局", "面板文字", "吸边与位置"] },
@@ -72,6 +87,7 @@ FloatBallAppWM.prototype.createSettingsHomeEntry = function(parent, title, desc,
var T = this.getAnimalIslandTheme();
var cfgTpl = this.state.pendingUserCfg ? this.state.pendingUserCfg : this.config;
this.applySettingsTheme(T, isDark, C, cfgTpl);
var useMonet = this.isSettingsMonetTheme ? this.isSettingsMonetTheme(cfgTpl) : false;
var cardColor = T.card;
var textColor = T.text;
var subTextColor = T.sub;
@@ -80,18 +96,28 @@ FloatBallAppWM.prototype.createSettingsHomeEntry = function(parent, title, desc,
row.setGravity(android.view.Gravity.CENTER_VERTICAL);
row.setPadding(this.dp(16), this.dp(14), this.dp(14), this.dp(14));
row.setBackground(this.ui.createRippleDrawable(cardColor, this.withAlpha(T.primary, isDark ? 0.20 : 0.14), this.dp(20)));
try { row.setElevation(this.dp(4)); } catch(eElev) { safeLog(null, 'e', "catch " + String(eElev)); }
try { row.setElevation(this.dp(useMonet ? 1 : 4)); } catch(eElev) { safeLog(null, 'e', "catch " + String(eElev)); }
var badge = new android.widget.TextView(context);
var icon = "✦";
var titleStr = String(title || "");
if (titleStr.indexOf("工具伙伴") >= 0) icon = "⌂";
else if (titleStr.indexOf("蓝图") >= 0) icon = "";
else if (titleStr.indexOf("气球") >= 0) icon = "";
else if (titleStr.indexOf("面板") >= 0 || titleStr.indexOf("小屋") >= 0) icon = "";
else if (titleStr.indexOf("换装") >= 0 || titleStr.indexOf("装饰") >= 0) icon = "";
else if (titleStr.indexOf("动作") >= 0 || titleStr.indexOf("手势") >= 0) icon = "";
else if (titleStr.indexOf("记录") >= 0) icon = "";
if (useMonet) {
if (titleStr.indexOf("工具") >= 0) icon = "";
else if (titleStr.indexOf("蓝图") >= 0 || titleStr.indexOf("配置") >= 0) icon = "";
else if (titleStr.indexOf("悬浮") >= 0 || titleStr.indexOf("") >= 0) icon = "";
else if (titleStr.indexOf("面板") >= 0) icon = "";
else if (titleStr.indexOf("外观") >= 0) icon = "";
else if (titleStr.indexOf("动作") >= 0 || titleStr.indexOf("手势") >= 0) icon = "";
else if (titleStr.indexOf("记录") >= 0) icon = "≡";
} else {
if (titleStr.indexOf("工具伙伴") >= 0) icon = "⌂";
else if (titleStr.indexOf("蓝图") >= 0) icon = "□";
else if (titleStr.indexOf("气球") >= 0) icon = "●";
else if (titleStr.indexOf("面板") >= 0 || titleStr.indexOf("小屋") >= 0) icon = "▦";
else if (titleStr.indexOf("换装") >= 0 || titleStr.indexOf("装饰") >= 0) icon = "◐";
else if (titleStr.indexOf("动作") >= 0 || titleStr.indexOf("手势") >= 0) icon = "↝";
else if (titleStr.indexOf("记录") >= 0) icon = "≋";
}
badge.setText(icon);
badge.setTextColor(T.primaryDeep);
badge.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 19);
@@ -147,6 +173,7 @@ FloatBallAppWM.prototype.buildSettingsHomePanelView = function() {
var T = this.getAnimalIslandTheme();
var cfgTpl = this.state.pendingUserCfg ? this.state.pendingUserCfg : this.config;
this.applySettingsTheme(T, isDark, C, cfgTpl);
var useMonetHome = this.isSettingsMonetTheme ? this.isSettingsMonetTheme(cfgTpl) : false;
var bgColor = T.bg;
var subTextColor = T.sub;
var panel = this.ui.createStyledPanel(this, 16);
@@ -172,7 +199,7 @@ FloatBallAppWM.prototype.buildSettingsHomePanelView = function() {
}
quick.addView(this.ui.createSpacer(this));
var btnDoc = this.ui.createFlatButton(this, "岛务手册", T.brown, function() {
var btnDoc = this.ui.createFlatButton(this, useMonetHome ? "文档" : "岛务手册", T.brown, function() {
try {
var intent = new android.content.Intent(android.content.Intent.ACTION_VIEW);
intent.setData(android.net.Uri.parse("https://xin-blog.com/114.html"));
@@ -182,7 +209,7 @@ FloatBallAppWM.prototype.buildSettingsHomePanelView = function() {
});
quick.addView(btnDoc);
var btnSave = this.ui.createSolidButton(this, "保存布置", T.primary, T.onPrimary, function() {
var btnSave = this.ui.createSolidButton(this, useMonetHome ? "保存" : "保存布置", T.primary, T.onPrimary, function() {
try {
self.touchActivity();
var r = self.commitPendingUserCfg();
@@ -218,14 +245,14 @@ FloatBallAppWM.prototype.buildSettingsHomePanelView = function() {
titleCard.setPadding(this.dp(12), 0, this.dp(12), 0);
titleCard.setBackground(this.ui.createStrokeDrawable(T.card, this.withAlpha(T.stroke, isDark ? 0.34 : 0.55), this.dp(1), this.dp(20)));
var titleMain = new android.widget.TextView(context);
titleMain.setText("欢迎回来,岛主");
titleMain.setText(useMonetHome ? "ToolHub" : "欢迎回来,岛主");
titleMain.setTextColor(T.text);
titleMain.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 22);
titleMain.setTypeface(null, android.graphics.Typeface.BOLD);
titleMain.setGravity(android.view.Gravity.CENTER);
titleCard.addView(titleMain, new android.widget.LinearLayout.LayoutParams(-1, -2));
var titleSub = new android.widget.TextView(context);
titleSub.setText("今天也来整理你的小工具吧");
titleSub.setText(useMonetHome ? "管理悬浮工具与交互设置" : "今天也来整理你的小工具吧");
titleSub.setTextColor(T.sub);
titleSub.setTextSize(android.util.TypedValue.COMPLEX_UNIT_SP, 12);
titleSub.setGravity(android.view.Gravity.CENTER);
@@ -266,12 +293,17 @@ FloatBallAppWM.prototype.buildSettingsHomePanelView = function() {
scroll.addView(box);
scroll.setOnTouchListener(new JavaAdapter(android.view.View.OnTouchListener, { onTouch: function(v, e) { self.touchActivity(); return false; }}));
this.createSettingsHomeEntry(box, "工具伙伴", "添加、整理和安排你的工具伙伴", "整理", function() { self.pushToolAppPage("btn_editor"); });
this.createSettingsHomeEntry(box, "岛屿蓝图", "自定义岛屿布局,适合进阶布置", "编辑", function() { self.pushToolAppPage("schema_editor"); });
if (useMonetHome) {
this.createSettingsHomeEntry(box, "工具", "添加、整理和排序工具入口", "管理", function() { self.pushToolAppPage("btn_editor"); });
this.createSettingsHomeEntry(box, "配置结构", "编辑分组、布局和高级结构", "编辑", function() { self.pushToolAppPage("schema_editor"); });
} else {
this.createSettingsHomeEntry(box, "工具伙伴", "添加、整理和安排你的工具伙伴", "整理", function() { self.pushToolAppPage("btn_editor"); });
this.createSettingsHomeEntry(box, "岛屿蓝图", "自定义岛屿布局,适合进阶布置", "编辑", function() { self.pushToolAppPage("schema_editor"); });
}
var defs = this.getSettingsGroupDefs();
for (var i = 0; i < defs.length; i++) {
(function(d) {
self.createSettingsHomeEntry(box, d.title, d.desc, (d.key === "ball" ? "调整" : (d.key === "panel" ? "布置" : (d.key === "theme" ? "换装" : (d.key === "debug" ? "查看" : "设置")))), function() {
self.createSettingsHomeEntry(box, d.title, d.desc, useMonetHome ? (d.key === "debug" ? "查看" : "打开") : (d.key === "ball" ? "调整" : (d.key === "panel" ? "布置" : (d.key === "theme" ? "换装" : (d.key === "debug" ? "查看" : "设置")))), function() {
if (self.pushToolAppSettingsGroup) self.pushToolAppSettingsGroup(d.key);
});
})(defs[i]);

View File

@@ -54,8 +54,8 @@
"size": 21198
},
"th_14_panels.js": {
"sha256": "e1d40451a3096530931b6eace1bbf1edb4ff01b3a213efb302e68e6fb42c5c0c",
"size": 246276
"sha256": "7b8e60d9f1467c909d9d6de8f776715c73ff41b625bce77c0c8c4514fd653611",
"size": 248639
},
"th_15_extra.js": {
"sha256": "b607620f1900c1bd93ccbec8d901d4de53b3d36e9373877f4264442f79b9b956",
@@ -68,5 +68,5 @@
},
"keyId": "toolhub-targets-2026-rsa3072",
"schema": 2,
"version": 20260517194928
"version": 20260518055238
}

View File

@@ -1 +1 @@
HnPhwCpOpEQZvfeHZQ58Aw/ogq+BpXi7IWBDv+KESF8KK8AMv3ak51W2clw51PHH4MSI+2OJh4mKtcYk22urmkIkL2g/k6+mFbKf3GFNfBQADJjbJj6yrRHXMG55fAomSntmvw+SeLSSbSGKNONl50wbSgZvbbFFUnZ2+rx6HgdF70xpSadjaIl3+YeCRoZuxye6Z9cMveAQHfQWM/F9Ley46zeEKZRKXV+t7eP8ErEqZxG2DNqqLodJG88NB5x+CTdmNcsBVqNgUwHjpTImJyjVtxr/wt9E/f83WB6LTc6hugX5ccu3P4cjYsItcWujmcnnnrreHckBHCjbimdrL5j6skssRUKgFNC1VKwSsBF8fu2bDa3vxP7h2dCcVvFLgbisP8hSgGj8PPbezjMYCxmF1WmdK+CLMPWD9khpDu9VqPle3IdxII0VmCUVMZXaY81awLgsdocI9dkofmJvEDLHPILC2PPkf7gsc8yfHmSWFW4ZqbhuavGzye0PhpDQ
cTkK9cHf20yLd5l0w16g/qounXtIVi+XYKu0u4XBIS5GnutBQOzKa5Tkuml+AU+1yhKDQUO3d266tUYOMw1sn/jpiivB2w8td55ERoPOrAmNwJ/IvEHgZ60NQdR9PHNmpmvFkRQDhns0hS1d8eEE3AWf6cFFVjBG9iC98OTmLdJMC4MqGjtYalq1dfZFelXFM4oCL5RxcOB2FHf8trG+v44Fdw8olAveDx1aFtFD43VHabANDkwRnhfVhVNGL54QN/Gozf3QYA+IdQDPG6vq0i9MwBXjDAYybBY/edl33oZ68Aj0CbUP+hkhdVh7+OWbOCcHFrnBzW40Nbn1HGjv81B6XkLGC3srYtY/0bXdyiZJvLNHQocK4w2aVv7EaJUNJhtE8liVvTHuqgveKx428ZioJclDcNp7TOPxQ1up0bab5aDQcKAOQ6ITmTLAghDtBAnPsjviprqYulM1MhBe5VMLpVyw6xPAFK6s/b4gJpWVDsK/oiZnlb5EDvut3Usx