diff --git a/code/th_14_panels.js b/code/th_14_panels.js index fda08b5..fb3b985 100644 --- a/code/th_14_panels.js +++ b/code/th_14_panels.js @@ -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]); diff --git a/manifest.json b/manifest.json index 4f08a34..dcd87bd 100644 --- a/manifest.json +++ b/manifest.json @@ -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 } diff --git a/manifest.sig b/manifest.sig index d77ccca..2b245b1 100644 --- a/manifest.sig +++ b/manifest.sig @@ -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