From 3503cf35b129d22c5d06c93b240c2c70757d4ea3 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Mon, 17 Apr 2023 22:42:55 +0800 Subject: [PATCH] Added notification icon force system color function --- .../fankes/coloros/notify/data/ConfigData.kt | 13 ++++++++ .../notify/hook/entity/SystemUIHooker.kt | 10 +++++-- .../notify/ui/activity/MainActivity.kt | 23 +++++++++++++- app/src/main/res/layout/activity_main.xml | 30 +++++++++++++++++++ 4 files changed, 73 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/fankes/coloros/notify/data/ConfigData.kt b/app/src/main/java/com/fankes/coloros/notify/data/ConfigData.kt index 805b1f8..ebbcf3c 100644 --- a/app/src/main/java/com/fankes/coloros/notify/data/ConfigData.kt +++ b/app/src/main/java/com/fankes/coloros/notify/data/ConfigData.kt @@ -61,6 +61,9 @@ object ConfigData { /** 通知栏中的通知图标圆角程度 */ val NOTIFY_ICON_CORNER_SIZE = PrefsData("_notify_icon_corner", 15) + /** 强制通知栏中的通知图标使用系统着色 */ + val ENABLE_NOTIFY_ICON_FORCE_SYSTEM_COLOR = PrefsData("_notify_icon_force_system_color", false) + /** 强制通知栏中的通知图标为 APP 图标 */ val ENABLE_NOTIFY_ICON_FORCE_APP_ICON = PrefsData("_notify_icon_force_app_icon", false) @@ -264,6 +267,16 @@ object ConfigData { putInt(NOTIFY_ICON_CORNER_SIZE, value) } + /** + * 是否强制通知栏中的通知图标使用系统着色 + * @return [Boolean] + */ + var isEnableNotifyIconForceSystemColor + get() = getBoolean(ENABLE_NOTIFY_ICON_FORCE_SYSTEM_COLOR) + set(value) { + putBoolean(ENABLE_NOTIFY_ICON_FORCE_SYSTEM_COLOR, value) + } + /** * 是否强制通知栏中的通知图标为 APP 图标 * @return [Boolean] diff --git a/app/src/main/java/com/fankes/coloros/notify/hook/entity/SystemUIHooker.kt b/app/src/main/java/com/fankes/coloros/notify/hook/entity/SystemUIHooker.kt index 225ab66..c484d05 100644 --- a/app/src/main/java/com/fankes/coloros/notify/hook/entity/SystemUIHooker.kt +++ b/app/src/main/java/com/fankes/coloros/notify/hook/entity/SystemUIHooker.kt @@ -439,11 +439,17 @@ object SystemUIHooker : YukiBaseHooker() { val md3Style = if (isUpperOfAndroidS) context.systemAccentColor else (if (context.isSystemInDarkMode) 0xFF707173.toInt() else oldStyle) + /** 原生通知图标颜色 */ + val nativeIconColor = if (ConfigData.isEnableNotifyIconForceSystemColor) 0 else iconColor + + /** 自定义通知图标颜色 */ + val customIconColor = if (ConfigData.isEnableNotifyIconForceSystemColor) 0 else customTriple.second + /** 旧版图标着色 */ - val oldApplyColor = customTriple.second.takeIf { it != 0 } ?: iconColor.takeIf { it != 0 } ?: oldStyle + val oldApplyColor = customIconColor.takeIf { it != 0 } ?: nativeIconColor.takeIf { it != 0 } ?: oldStyle /** 新版图标着色 */ - val newApplyColor = customTriple.second.takeIf { it != 0 } ?: iconColor.takeIf { it != 0 } ?: md3Style + val newApplyColor = customIconColor.takeIf { it != 0 } ?: nativeIconColor.takeIf { it != 0 } ?: md3Style /** 判断风格并开始 Hook */ if (ConfigData.isEnableMd3NotifyIconStyle) { diff --git a/app/src/main/java/com/fankes/coloros/notify/ui/activity/MainActivity.kt b/app/src/main/java/com/fankes/coloros/notify/ui/activity/MainActivity.kt index b5d59c8..783473b 100644 --- a/app/src/main/java/com/fankes/coloros/notify/ui/activity/MainActivity.kt +++ b/app/src/main/java/com/fankes/coloros/notify/ui/activity/MainActivity.kt @@ -183,9 +183,30 @@ class MainActivity : BaseActivity() { SystemUITool.refreshSystemUI(context = this@MainActivity) } } + binding.notifyIconForceSystemColorSwitch.bind(ConfigData.ENABLE_NOTIFY_ICON_FORCE_SYSTEM_COLOR) { + isAutoApplyChanges = false + onChanged { + /** 应用更改并刷新系统界面 */ + fun applyChangesAndRefresh() { + applyChangesAndReinitialize() + SystemUITool.refreshSystemUI(context = this@MainActivity) + } + if (it) showDialog { + title = "破坏性功能警告" + msg = "开启这个功能后,任何通知栏中的通知图标都会忽略图标自身的着色属性,全部使用系统默认颜色 (系统提供的统一色调) 着色。\n\n" + + "此功能仅面向一些追求图标美观度的用户,我们不推荐开启这个功能,且发生任何 BUG 都不会去修复,仍然继续开启吗?" + confirmButton { applyChangesAndRefresh() } + cancelButton { cancelChanges() } + noCancelable() + } else applyChangesAndRefresh() + } + } binding.notifyIconForceAppIconSwitch.bind(ConfigData.ENABLE_NOTIFY_ICON_FORCE_APP_ICON) { isAutoApplyChanges = false - onInitialize { binding.notifyIconCustomCornerItem.isVisible = it.not() && ConfigData.isEnableMd3NotifyIconStyle } + onInitialize { + binding.notifyIconForceSystemColorItem.isVisible = it.not() + binding.notifyIconCustomCornerItem.isVisible = it.not() && ConfigData.isEnableMd3NotifyIconStyle + } onChanged { /** 应用更改并刷新系统界面 */ fun applyChangesAndRefresh() { diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c5a87b8..6e0faac 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -614,6 +614,36 @@ android:textSize="12sp" /> + + + + + + +