From efdcd3f187aa23c4e7c542271b2a6abf4f7ef802 Mon Sep 17 00:00:00 2001 From: 7015725 Date: Fri, 15 May 2026 02:29:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AE=BE=E7=BD=AE=E9=A1=B5=E6=89=80?= =?UTF-8?q?=E6=9C=89=20UI=20=E5=85=83=E7=B4=A0=E7=BB=9F=E4=B8=80=E8=B7=9F?= =?UTF-8?q?=E9=9A=8F=20SETTINGS=5FTHEME=20=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 之前只有 buildSettingsGroupPanelView(分组页)检查了 SETTINGS_THEME,但首页面板 buildSettingsHomePanelView 和入口卡片 createSettingsHomeEntry 直接硬编码 getAnimalIslandTheme(),导致切换到 Monet 后首页仍是 动物岛风。 修复: 提取公共方法 applySettingsTheme(T, isDark, C, cfgTpl), 在三个构建位置统一调用: - createSettingsHomeEntry (入口卡片:徽章/标题/按钮颜色) - buildSettingsHomePanelView (设置首页:背景/统计卡/按钮) - buildSettingsGroupPanelView (分组页:背景/卡片/预览开关) --- code/th_14_panels.js | 57 ++++++++++++++++++++++++++------------------ manifest.json | 6 ++--- manifest.sig | 2 +- 3 files changed, 38 insertions(+), 27 deletions(-) diff --git a/code/th_14_panels.js b/code/th_14_panels.js index 19f1b5a..6993c72 100644 --- a/code/th_14_panels.js +++ b/code/th_14_panels.js @@ -1,4 +1,33 @@ // @version 1.0.0 + +// 根据当前 SETTINGS_THEME 覆盖 T(Animal Island 配色对象), +// 使设置页所有 UI 元素(首页/分组页/入口卡片)统一跟随主题切换。 +// 传入 T、isDark、C(this.ui.colors)、cfgTpl(配置源),直接修改 T 的字段。 +FloatBallAppWM.prototype.applySettingsTheme = function(T, isDark, C, cfgTpl) { + var settTheme = String((cfgTpl || this.config).SETTINGS_THEME || "animal"); + if (settTheme !== "monet") return; + try { + var Color = android.graphics.Color; + var monetBg = isDark ? C.bgDark : C.bgLight; + var monetTxt = isDark ? C.textPriDark : C.textPriLight; + var monetCard = isDark ? C.cardDark : C.cardLight; + var monetSub = isDark ? C.textSecDark : C.textSecLight; + var monetPrimary = C.primary; + var monetOnP = C._monetOnPrimary || (isDark ? Color.parseColor("#062E6F") : Color.WHITE); + T.bg = monetBg; + T.card = monetCard; + T.card2 = monetCard; + T.text = monetTxt; + T.sub = monetSub; + T.primary = monetPrimary; + T.primaryDeep = monetPrimary; + T.primarySoft = isDark ? this.withAlpha(monetPrimary, 0.20) : this.withAlpha(monetPrimary, 0.10); + T.brown = monetSub; + T.stroke = isDark ? this.withAlpha(monetTxt, 0.16) : this.withAlpha(monetTxt, 0.12); + T.onPrimary = monetOnP; + } catch(e) { safeLog(null, 'e', "catch " + String(e)); } +}; + FloatBallAppWM.prototype.getSettingsGroupDefs = function() { return [ { key: "ball", title: "漂浮气球", desc: "调整气球大小、图标和跟随距离", sections: ["悬浮球"] }, @@ -38,6 +67,8 @@ FloatBallAppWM.prototype.createSettingsHomeEntry = function(parent, title, desc, var isDark = this.isDarkTheme(); var C = this.ui.colors; var T = this.getAnimalIslandTheme(); + var cfgTpl = this.state.pendingUserCfg ? this.state.pendingUserCfg : this.config; + this.applySettingsTheme(T, isDark, C, cfgTpl); var cardColor = T.card; var textColor = T.text; var subTextColor = T.sub; @@ -111,6 +142,8 @@ FloatBallAppWM.prototype.buildSettingsHomePanelView = function() { var isDark = this.isDarkTheme(); var C = this.ui.colors; var T = this.getAnimalIslandTheme(); + var cfgTpl = this.state.pendingUserCfg ? this.state.pendingUserCfg : this.config; + this.applySettingsTheme(T, isDark, C, cfgTpl); var bgColor = T.bg; var subTextColor = T.sub; var panel = this.ui.createStyledPanel(this, 16); @@ -259,29 +292,7 @@ FloatBallAppWM.prototype.buildSettingsGroupPanelView = function() { // 设置页主题切换:animal(默认动物岛风)或 monet(系统莫奈色) var cfgTpl = this.state.pendingUserCfg ? this.state.pendingUserCfg : this.config; - var settTheme = String(cfgTpl.SETTINGS_THEME || "animal"); - if (settTheme === "monet") { - try { - var Color = android.graphics.Color; - var monetBg = isDark ? C.bgDark : C.bgLight; - var monetTxt = isDark ? C.textPriDark : C.textPriLight; - var monetCard = isDark ? C.cardDark : C.cardLight; - var monetSub = isDark ? C.textSecDark : C.textSecLight; - var monetPrimary = C.primary; - var monetOnP = C._monetOnPrimary || (isDark ? Color.parseColor("#062E6F") : Color.WHITE); - T.bg = monetBg; - T.card = monetCard; - T.card2 = monetCard; - T.text = monetTxt; - T.sub = monetSub; - T.primary = monetPrimary; - T.primaryDeep = monetPrimary; - T.primarySoft = isDark ? this.withAlpha(monetPrimary, 0.20) : this.withAlpha(monetPrimary, 0.10); - T.brown = monetSub; - T.stroke = isDark ? this.withAlpha(monetTxt, 0.16) : this.withAlpha(monetTxt, 0.12); - T.onPrimary = monetOnP; - } catch(eM) { safeLog(null, 'e', "catch " + String(eM)); } - } + this.applySettingsTheme(T, isDark, C, cfgTpl); var bgColor = T.bg; var cardColor = T.card; diff --git a/manifest.json b/manifest.json index 34e2c89..7e0ffd1 100644 --- a/manifest.json +++ b/manifest.json @@ -54,8 +54,8 @@ "size": 20392 }, "th_14_panels.js": { - "sha256": "9e8200cd2b4855484952501aa5e838e0ee57da83251c57ad7a8ca85c0f169e64", - "size": 244802 + "sha256": "a998d4d73051d2c9b5be57e570a51fa9cb4ffff1a9c8d5cff6f15a5c717311bb", + "size": 245438 }, "th_15_extra.js": { "sha256": "b607620f1900c1bd93ccbec8d901d4de53b3d36e9373877f4264442f79b9b956", @@ -68,5 +68,5 @@ }, "keyId": "toolhub-targets-2026-rsa3072", "schema": 2, - "version": 20260514182651 + "version": 20260514182858 } diff --git a/manifest.sig b/manifest.sig index a2150ac..e1d8269 100644 --- a/manifest.sig +++ b/manifest.sig @@ -1 +1 @@ -CTWxWiKLfuIdWR5aH+sgiWC947wRH4pwSxMikOJ6uazbLqUYPijmC3J5l6QgQXnhV1GBDhTgLi3vseHqybCZ0L2eZFAAN9unxV17kRs5dyy+TUCBA3BWwkWLwHASNN4d6EqO7fTf5LhhcHd87yUKJjhSgTYvjr2Shb+qO0vOgaWUYE6C/H73MO82FcaiyGF3KXcLonWexojrwskwu5SZ8NF8mXIoobfm2Um5m81pDbzDa1s/q0SZzAvPE9a3Yx0Y7xJuxYJW/ssSLq9IvQ8s4eNQOrU7Te9kXFn4b7N5k8RM9YjxSnAQV01wvLOWn3dIqs+iDormLXqyL0HKOrUPxIKB83oUI3yl9Vg2mNrwm2ucNXqrvErQ/NK4b2vmHo6G+dddacSFRIx+jHKTmETfHk0e7+J2iSQKnQx5AsfNR+CP7JKoteZypI6yb+LP0GyYY3M9lkwGtD9kNc4f/YdbVMRdWVwXpnXjBhvmqXZsUV5U6Veb4g+TssH3MhsTpZ27 +dnlTNj0xaNuD3ovfDT5K25pIf3pe9cFqkgSVAUPO9NVReyXhJt2GU5S4H1OeayT2QF4GEB2SjsvDCLfmN4RFYrP99yhOdJ66zz1mgI8BNNorjRmR9kqs3REdDrZqUuMD50Nqebr01RrHUnksDIESf7Li9fnsFCpPSco+HEzU8tqkJiBv9en7R5rh7dYuMa1Hz7WVc7jRQsqWgnaPSH7czL5Ffv0R889Sa/PRwUJvWb462rDM0YMrjXJPcTCueX10ycgvvzPKfIBCAkG2MeWSfuL9TbDn+Dbe9am8og7bH3kMCduU7SyV7avVAo8M+x2NP4osVgageMAe8O4HLUXxUeDfAreoPSSHtSCYwd7bP7sjr1RS8s8WxubKUAc1Koqwf82kLar4ODPmLVgCW3U9O7pBNIdsZ3hpj4K+o35+Nn7X0vmeUfwVtNG8nOSQFGMshT60dasmOdefkU8OxdAc9rlS44QK8H/GS+6E7WAONUFYZxncgDh8ibHa7SFz8BKm