From 14d47ca6a93270ce88a1d24b7340f7f558c395b4 Mon Sep 17 00:00:00 2001 From: Fankesyooni Date: Mon, 24 Jan 2022 11:06:47 +0800 Subject: [PATCH] Initial commit --- .gitignore | 15 + .idea/.gitignore | 3 + .idea/.name | 1 + .idea/codeStyles/Project.xml | 117 +++++ .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/compiler.xml | 6 + .idea/gradle.xml | 20 + .idea/inspectionProfiles/Project_Default.xml | 10 + .idea/jarRepositories.xml | 40 ++ .idea/misc.xml | 18 + app/.gitignore | 1 + app/build.gradle | 62 +++ app/proguard-rules.pro | 48 ++ .../miui/sbnvicon/ExampleInstrumentedTest.kt | 24 + app/src/main/AndroidManifest.xml | 57 ++ app/src/main/assets/xposed_init | 1 + app/src/main/ic_launcher-playstore.png | Bin 0 -> 13921 bytes .../miui/notify/application/MNvApplication.kt | 46 ++ .../com/fankes/miui/notify/hook/HookMain.kt | 323 ++++++++++++ .../com/fankes/miui/notify/hook/HookMedium.kt | 47 ++ .../fankes/miui/notify/hook/IconPackParams.kt | 59 +++ .../com/fankes/miui/notify/ui/MainActivity.kt | 257 +++++++++ .../fankes/miui/notify/utils/DialogBuilder.kt | 101 ++++ .../fankes/miui/notify/utils/FileUtils.java | 85 +++ .../com/fankes/miui/notify/utils/Utils.kt | 179 +++++++ .../fankes/miui/notify/utils/XPrefUtils.kt | 37 ++ .../drawable/drawabletoolbox/Compatible.kt | 291 +++++++++++ .../drawable/drawabletoolbox/Constants.kt | 29 ++ .../drawabletoolbox/DrawableBuilder.kt | 488 ++++++++++++++++++ .../drawabletoolbox/DrawableProperties.kt | 220 ++++++++ .../drawabletoolbox/DrawableWrapperBuilder.kt | 33 ++ .../drawable/drawabletoolbox/FlipDrawable.kt | 77 +++ .../drawabletoolbox/FlipDrawableBuilder.kt | 34 ++ .../drawabletoolbox/LayerDrawableBuilder.kt | 181 +++++++ .../PathShapeDrawableBuilder.kt | 60 +++ .../drawabletoolbox/RippleDrawableBuilder.kt | 72 +++ .../drawabletoolbox/RotateDrawableBuilder.kt | 51 ++ .../drawabletoolbox/ScaleDrawableBuilder.kt | 44 ++ .../StateListDrawableBuilder.kt | 59 +++ .../fankes/miui/notify/view/MaterialSwitch.kt | 68 +++ app/src/main/res/drawable/dark_round.xml | 6 + app/src/main/res/drawable/green_round.xml | 6 + app/src/main/res/drawable/permotion_round.xml | 6 + app/src/main/res/drawable/red_round.xml | 6 + app/src/main/res/drawable/white_round.xml | 6 + app/src/main/res/layout/activity_main.xml | 448 ++++++++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1528 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 1253 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 3466 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1066 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 775 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2163 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 2101 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 1695 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 5001 bytes app/src/main/res/mipmap-xxhdpi/about.png | Bin 0 -> 4357 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 3296 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 2780 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 7798 bytes .../main/res/mipmap-xxhdpi/icon_launcher.png | Bin 0 -> 7020 bytes app/src/main/res/mipmap-xxhdpi/qr_pay.png | Bin 0 -> 206098 bytes app/src/main/res/mipmap-xxhdpi/restart.png | Bin 0 -> 4298 bytes app/src/main/res/mipmap-xxhdpi/succcess.png | Bin 0 -> 4948 bytes app/src/main/res/mipmap-xxhdpi/warn.png | Bin 0 -> 4102 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 4610 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 4104 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 11512 bytes app/src/main/res/values-night/themes.xml | 16 + app/src/main/res/values/colors.xml | 10 + .../res/values/ic_launcher_background.xml | 4 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/themes.xml | 16 + .../fankes/miui/sbnvicon/ExampleUnitTest.kt | 17 + build.gradle | 32 ++ gradle.properties | 21 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 +++++++ gradlew.bat | 89 ++++ keystore/public | Bin 0 -> 2423 bytes settings.gradle | 2 + 83 files changed, 4158 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/.name create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/compiler.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/com/fankes/miui/sbnvicon/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/assets/xposed_init create mode 100644 app/src/main/ic_launcher-playstore.png create mode 100644 app/src/main/java/com/fankes/miui/notify/application/MNvApplication.kt create mode 100644 app/src/main/java/com/fankes/miui/notify/hook/HookMain.kt create mode 100644 app/src/main/java/com/fankes/miui/notify/hook/HookMedium.kt create mode 100644 app/src/main/java/com/fankes/miui/notify/hook/IconPackParams.kt create mode 100644 app/src/main/java/com/fankes/miui/notify/ui/MainActivity.kt create mode 100644 app/src/main/java/com/fankes/miui/notify/utils/DialogBuilder.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/FileUtils.java create mode 100644 app/src/main/java/com/fankes/miui/notify/utils/Utils.kt create mode 100644 app/src/main/java/com/fankes/miui/notify/utils/XPrefUtils.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/Compatible.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/Constants.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/DrawableBuilder.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/DrawableProperties.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/DrawableWrapperBuilder.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/FlipDrawable.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/FlipDrawableBuilder.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/LayerDrawableBuilder.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/PathShapeDrawableBuilder.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/RippleDrawableBuilder.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/RotateDrawableBuilder.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/ScaleDrawableBuilder.kt create mode 100755 app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/StateListDrawableBuilder.kt create mode 100644 app/src/main/java/com/fankes/miui/notify/view/MaterialSwitch.kt create mode 100755 app/src/main/res/drawable/dark_round.xml create mode 100755 app/src/main/res/drawable/green_round.xml create mode 100644 app/src/main/res/drawable/permotion_round.xml create mode 100755 app/src/main/res/drawable/red_round.xml create mode 100755 app/src/main/res/drawable/white_round.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/about.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_launcher.png create mode 100755 app/src/main/res/mipmap-xxhdpi/qr_pay.png create mode 100644 app/src/main/res/mipmap-xxhdpi/restart.png create mode 100644 app/src/main/res/mipmap-xxhdpi/succcess.png create mode 100644 app/src/main/res/mipmap-xxhdpi/warn.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/values-night/themes.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/ic_launcher_background.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/test/java/com/fankes/miui/sbnvicon/ExampleUnitTest.kt create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 keystore/public create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 0000000..c7f765d --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +MIUINativeNotifyIcon \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..4bec4ea --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,117 @@ + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..fb7f4a8 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..526b4c2 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..146ab09 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..3615609 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..3ff7262 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..a458117 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,62 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' +} + +android { + compileSdk 31 + + signingConfigs { + debug { + storeFile file('../keystore/public') + storePassword '123456' + keyAlias 'public' + keyPassword '123456' + v1SigningEnabled true + v2SigningEnabled true + } + } + + defaultConfig { + applicationId "com.fankes.miui.notify" + minSdk 29 + targetSdk 26 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled true + signingConfig signingConfigs.debug + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } +} + +dependencies { + compileOnly 'de.robv.android.xposed:api:82' + // 基础依赖包 + implementation 'com.gyf.immersionbar:immersionbar:3.0.0' + // Fragment 快速实现 + implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0' + // Kotlin 扩展 + implementation 'com.gyf.immersionbar:immersionbar-ktx:3.0.0' + implementation 'androidx.core:core-ktx:1.7.0' + implementation 'androidx.appcompat:appcompat:1.4.1' + implementation 'com.google.android.material:material:1.5.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.3' + //noinspection GradleDynamicVersion + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..786522e --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,48 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile + +-dontwarn +-ignorewarnings +-optimizationpasses 10 +-dontusemixedcaseclassnames +-dontoptimize +-verbose +-overloadaggressively +-repackageclasses o +-allowaccessmodification +-adaptclassstrings +-adaptresourcefilenames +-adaptresourcefilecontents + +#-optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* +-renamesourcefileattribute H +-keepattributes SourceFile,LineNumberTable + +-keep class android.support** +-keep class androidx** + +-keep public class * extends android.app.Activity +-keep public class * extends android.app.Application +-keep public class * extends android.app.Service +-keep public class * extends android.content.ContentProvider +-keep public class * extends android.app.backup.BackupAgentHelper +-keep public class * extends android.preference.Preference \ No newline at end of file diff --git a/app/src/androidTest/java/com/fankes/miui/sbnvicon/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/fankes/miui/sbnvicon/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..489e777 --- /dev/null +++ b/app/src/androidTest/java/com/fankes/miui/sbnvicon/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.fankes.miui.notify + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("com.fankes.miui.notify", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..654d45f --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/xposed_init b/app/src/main/assets/xposed_init new file mode 100644 index 0000000..843d8be --- /dev/null +++ b/app/src/main/assets/xposed_init @@ -0,0 +1 @@ +com.fankes.miui.notify.hook.HookMain \ No newline at end of file diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..946aa0218fd85230ad798eebad751f6bf277d47a GIT binary patch literal 13921 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 F{{XIZzRdst literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/fankes/miui/notify/application/MNvApplication.kt b/app/src/main/java/com/fankes/miui/notify/application/MNvApplication.kt new file mode 100644 index 0000000..b5b6dc4 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/application/MNvApplication.kt @@ -0,0 +1,46 @@ +/** + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/01/24. + */ +@file:Suppress("unused") + +package com.fankes.miui.notify.application + +import android.app.Application +import androidx.appcompat.app.AppCompatDelegate + +class MNvApplication : Application() { + + companion object { + + /** 全局静态实例 */ + private var context: MNvApplication? = null + + /** 调用全局静态实例 */ + val appContext get() = context ?: error("App is death") + } + + override fun onCreate() { + super.onCreate() + /** 设置静态实例 */ + context = this + /** 禁止系统夜间模式对自己造成干扰 - 模块要什么夜间模式?😅 (其实是我懒) */ + AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/hook/HookMain.kt b/app/src/main/java/com/fankes/miui/notify/hook/HookMain.kt new file mode 100644 index 0000000..0c44dc0 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/hook/HookMain.kt @@ -0,0 +1,323 @@ +/** + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/01/24. + */ +@file:Suppress("DEPRECATION", "SameParameterValue") + +package com.fankes.miui.notify.hook + +import android.content.Context +import android.graphics.Color +import android.graphics.Outline +import android.graphics.drawable.BitmapDrawable +import android.graphics.drawable.Drawable +import android.graphics.drawable.Icon +import android.os.Build +import android.service.notification.StatusBarNotification +import android.util.Log +import android.view.View +import android.view.ViewOutlineProvider +import android.widget.ImageView +import androidx.annotation.Keep +import androidx.core.graphics.drawable.toBitmap +import com.fankes.miui.notify.hook.HookMedium.QQ_PACKAGE_NAME +import com.fankes.miui.notify.hook.HookMedium.SELF_PACKAGE_NAME +import com.fankes.miui.notify.hook.HookMedium.SYSTEMUI_PACKAGE_NAME +import com.fankes.miui.notify.utils.XPrefUtils +import com.fankes.miui.notify.utils.dp +import com.fankes.miui.notify.utils.isNotMIUI +import com.fankes.miui.notify.utils.round +import de.robv.android.xposed.* +import de.robv.android.xposed.callbacks.XC_LoadPackage + +@Keep +class HookMain : IXposedHookLoadPackage { + + companion object { + + private const val NotificationUtilClass = + "$SYSTEMUI_PACKAGE_NAME.statusbar.notification.NotificationUtil" + + private const val NotificationHeaderViewWrapperInjectorClass = + "$SYSTEMUI_PACKAGE_NAME.statusbar.notification.row.wrapper.NotificationHeaderViewWrapperInjector" + + private const val ExpandedNotificationClass = + "$SYSTEMUI_PACKAGE_NAME.statusbar.notification.ExpandedNotification" + + private const val SystemUIApplicationClass = "$SYSTEMUI_PACKAGE_NAME.SystemUIApplication" + + private const val ContrastColorUtilClass = "com.android.internal.util.ContrastColorUtil" + } + + /** 仅作用于替换的 Hook 方法体 */ + private val replaceToNull = object : XC_MethodReplacement() { + override fun replaceHookedMethod(param: MethodHookParam?): Any? { + return null + } + } + + /** 仅作用于替换的 Hook 方法体 */ + private val replaceToTrue = object : XC_MethodReplacement() { + override fun replaceHookedMethod(param: MethodHookParam?): Any { + return true + } + } + + /** 仅作用于替换的 Hook 方法体 */ + private val replaceToFalse = object : XC_MethodReplacement() { + override fun replaceHookedMethod(param: MethodHookParam?): Any { + return false + } + } + + /** + * 忽略异常运行 + * @param it 正常回调 + */ + private fun runWithoutError(error: String, it: () -> Unit) { + try { + it() + } catch (e: Error) { + logE("hookFailed: $error", e) + } catch (e: Exception) { + logE("hookFailed: $error", e) + } catch (e: Throwable) { + logE("hookFailed: $error", e) + } + } + + /** + * Print the log + * @param content + */ + private fun logD(content: String) { + XposedBridge.log("[MIUINativeNotifyIcon][D]>$content") + Log.d("MIUINativeNotifyIcon", content) + } + + /** + * Print the log + * @param content + */ + private fun logE(content: String, e: Throwable? = null) { + XposedBridge.log("[MIUINativeNotifyIcon][E]>$content") + XposedBridge.log(e) + Log.e("MIUINativeNotifyIcon", content, e) + } + + /** + * 查找目标类 + * @param name 类名 + * @return [Class] + */ + private fun XC_LoadPackage.LoadPackageParam.findClass(name: String) = + classLoader.loadClass(name) + + /** + * ⚠️ 这个是修复彩色图标的关键核心代码判断 + * 判断是否为灰度图标 - 反射执行系统方法 + * @param context 实例 + * @param icon 要判断的图标 + * @return [Boolean] + */ + private fun XC_LoadPackage.LoadPackageParam.isGrayscaleIcon(context: Context, icon: Drawable) = + findClass(ContrastColorUtilClass).let { + val instance = it.getDeclaredMethod("getInstance", Context::class.java) + .apply { isAccessible = true }.invoke(null, context) + it.getDeclaredMethod("isGrayscaleIcon", Drawable::class.java) + .apply { isAccessible = true }.invoke(instance, icon) as Boolean + } + + /** + * 获取全局上下文 + * @return [Context] + */ + private val XC_LoadPackage.LoadPackageParam.globalContext + get() = findClass(SystemUIApplicationClass) + .getDeclaredMethod("getContext").apply { isAccessible = true } + .invoke(null) as Context + + override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam?) { + if (lpparam == null) return + when (lpparam.packageName) { + /** Hook 自身 */ + SELF_PACKAGE_NAME -> + XposedHelpers.findAndHookMethod( + "$SELF_PACKAGE_NAME.hook.HookMedium", + lpparam.classLoader, + "isHooked", + replaceToTrue + ) + /** Hook 系统 UI */ + SYSTEMUI_PACKAGE_NAME -> { + /** 若不是 MIUI 系统直接停止 Hook */ + if (isNotMIUI) return + /** 若没开启模块直接停止 Hook */ + if (!XPrefUtils.getBoolean(HookMedium.ENABLE_MODULE, default = true)) return + /** 强制回写系统的状态栏图标样式为原生 */ + runWithoutError("SubstituteSmallIcon") { + XposedHelpers.findAndHookMethod( + NotificationUtilClass, + lpparam.classLoader, + "shouldSubstituteSmallIcon", + lpparam.findClass(ExpandedNotificationClass), + replaceToFalse + ) + } + /** 修复通知图标为彩色 */ + runWithoutError("IgnoreStatusBarIconColor") { + XposedHelpers.findAndHookMethod( + NotificationUtilClass, + lpparam.classLoader, + "ignoreStatusBarIconColor", + lpparam.findClass(ExpandedNotificationClass), + object : XC_MethodReplacement() { + override fun replaceHookedMethod(param: MethodHookParam) = + if (XPrefUtils.getBoolean(HookMedium.ENABLE_COLOR_ICON_HOOK, default = true)) + try { + /** 获取发送通知的 APP */ + val packageName = (param.args[0] as StatusBarNotification).opPkg + + /** 获取通知小图标 */ + val iconDrawable = (param.args[0] as StatusBarNotification) + .notification.smallIcon.loadDrawable(lpparam.globalContext) + /** 如果开启了修复聊天 APP 的图标 */ + if (packageName == QQ_PACKAGE_NAME && + XPrefUtils.getBoolean(HookMedium.ENABLE_CHAT_ICON_HOOK, default = true) + ) false + /** 只要不是灰度就返回彩色图标 */ + else !lpparam.isGrayscaleIcon(lpparam.globalContext, iconDrawable) + } catch (e: Exception) { + logE("Failed to hook ignoreStatusBarIconColor", e) + false + } + else false + } + ) + } + /** 强制回写系统的状态栏图标样式为原生 */ + runWithoutError("GetSmallIcon") { + XposedHelpers.findAndHookMethod( + NotificationUtilClass, + lpparam.classLoader, + "getSmallIcon", + lpparam.findClass(ExpandedNotificationClass), + Int::class.java, + object : XC_MethodHook() { + + override fun afterHookedMethod(param: MethodHookParam) { + runWithoutError("GetSmallIconOnSet") { + /** 获取通知小图标 */ + val iconDrawable = (param.result as Icon).loadDrawable(lpparam.globalContext) + /** 判断要设置的图标 */ + when { + /** 如果开启了修复聊天 APP 的图标 */ + (param.args[0] as StatusBarNotification).opPkg == QQ_PACKAGE_NAME && + XPrefUtils.getBoolean(HookMedium.ENABLE_CHAT_ICON_HOOK, default = true) -> + param.result = Icon.createWithBitmap(IconPackParams.qqSmallIcon) + /** 若不是灰度图标自动处理为圆角 */ + !lpparam.isGrayscaleIcon(lpparam.globalContext, iconDrawable) -> + param.result = Icon.createWithBitmap( + iconDrawable.toBitmap().round(15.dp(lpparam.globalContext)) + ) + } + } + } + } + ) + } + /** 干掉下拉通知图标自动设置回 APP 图标的方法 - Android 12 */ + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) + runWithoutError("ResetIconBgAndPaddings") { + XposedHelpers.findAndHookMethod( + NotificationHeaderViewWrapperInjectorClass, + lpparam.classLoader, + "resetIconBgAndPaddings", + ImageView::class.java, + lpparam.findClass(ExpandedNotificationClass), + replaceToNull + ) + } + /** 修复下拉通知图标自动设置回 APP 图标的方法 - Android 12 */ + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) + runWithoutError("AutoSetAppIcon") { + XposedHelpers.findAndHookMethod( + NotificationHeaderViewWrapperInjectorClass, + lpparam.classLoader, + "setAppIcon", + Context::class.java, + ImageView::class.java, + lpparam.findClass(ExpandedNotificationClass), + object : XC_MethodReplacement() { + override fun replaceHookedMethod(param: MethodHookParam): Any? { + runWithoutError("AutoSetAppIconOnSet") { + /** 获取 [Context] */ + val context = param.args[0] as Context + + /** 获取图标框 */ + val iconImageView = param.args[1] as ImageView + + /** 获取通知小图标 */ + val iconDrawable = (param.args[2] as StatusBarNotification) + .notification.smallIcon.loadDrawable(context) + + /** 获取发送通知的 APP */ + val packageName = (param.args[2] as StatusBarNotification).opPkg + /** 如果开启了修复聊天 APP 的图标 */ + if (packageName == QQ_PACKAGE_NAME && + XPrefUtils.getBoolean(HookMedium.ENABLE_CHAT_ICON_HOOK, default = true) + ) + iconImageView.apply { + /** 设置自定义小图标 */ + setImageDrawable(BitmapDrawable(IconPackParams.qqSmallIcon)) + /** 上色 */ + setColorFilter(Color.WHITE) + } + else { + /** 重新设置图标 - 防止系统更改它 */ + iconImageView.setImageDrawable(iconDrawable) + /** 判断如果是灰度图标就给他设置一个白色颜色遮罩 */ + if (lpparam.isGrayscaleIcon(context, iconDrawable)) + iconImageView.setColorFilter(Color.WHITE) + else + iconImageView.apply { + clipToOutline = true + /** 设置一个圆角轮廓裁切 */ + outlineProvider = object : ViewOutlineProvider() { + override fun getOutline(view: View, out: Outline) { + out.setRoundRect(0, 0, view.width, view.height, 5.dp(context)) + } + } + /** 清除原生的背景边距设置 */ + setPadding(0, 0, 0, 0) + /** 清除原生的主题色背景圆圈颜色 */ + setBackgroundDrawable(null) + } + } + } + return null + } + } + ) + } + logD("hook Completed!") + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/hook/HookMedium.kt b/app/src/main/java/com/fankes/miui/notify/hook/HookMedium.kt new file mode 100644 index 0000000..cba9bd1 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/hook/HookMedium.kt @@ -0,0 +1,47 @@ +/** + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/24. + */ +package com.fankes.miui.notify.hook + +import android.util.Log +import androidx.annotation.Keep + +@Keep +object HookMedium { + + const val ENABLE_MODULE = "_enable_module" + const val ENABLE_HIDE_ICON = "_hide_icon" + const val ENABLE_COLOR_ICON_HOOK = "_color_icon_hook" + const val ENABLE_CHAT_ICON_HOOK = "_chat_icon_hook" + + const val SELF_PACKAGE_NAME = "com.fankes.miui.notify" + const val SYSTEMUI_PACKAGE_NAME = "com.android.systemui" + const val QQ_PACKAGE_NAME = "com.tencent.mobileqq" + + /** + * 判断模块是否激活 + * 在 [HookMain] 中 Hook 掉此方法 + * @return [Boolean] 激活状态 + */ + fun isHooked(): Boolean { + Log.d("MIUINativeNotifyIcon", "isHooked: true") + return false + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/hook/IconPackParams.kt b/app/src/main/java/com/fankes/miui/notify/hook/IconPackParams.kt new file mode 100644 index 0000000..f8d8827 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/hook/IconPackParams.kt @@ -0,0 +1,59 @@ +/** + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/24. + */ +package com.fankes.miui.notify.hook + +import android.graphics.Bitmap +import com.fankes.miui.notify.utils.bitmap +import com.fankes.miui.notify.utils.unbase64 + +object IconPackParams { + + /** + * QQ 通知栏小图标 + * @return [Bitmap] + */ + val qqSmallIcon by lazy { + ("iVBORw0KGgoAAAANSUhEUgAAAEwAAABMCAYAAADHl1ErAAAAAXNSR0IArs4c6QAAAARzQklUCAgI\n" + + "CHwIZIgAAATZSURBVHic7ZxNjF5TGMd/T6uliBk1pSgtxQwlqo2gKghiU4ZaCOIjRGwIiY8QCRs7\n" + + "S4suRJBYkUgXMiIipBYTiZmuKtRHW0biK8xrNE2l9be4d5LpeN/33nue877n3tHf5p259zzPfc4/\n" + + "z7kf5wuOUglLeXFJw8BmYD0wApwBrACW5UUOANPAPuAb4HNg0sx29j/aREgakvSUpHGFMyHpBUln\n" + + "p65Pz5C0VNJLkmYcQs3nkKRtkoZS1y8qkkYl/RBRqPlMS3oodT2jIOnlHgo1nzdT19eFpHf6KNYs\n" + + "O1LXO4hEYs0ynrr+lZD0SkKxZtmeWodSSLoztVJzeC52/aK+uEoaBP6I6TMC55nZt7GcLYrlKOeN\n" + + "yP5i8HZMZ9EEk7QRGI3lLyIbJG2N5Sxak1T2ZLoylr/ITJnZWTEcRckwSeuor1gAqyTdHMNRrCb5\n" + + "TCQ/veT5GE7cTVLSUuBP4Fh/OD1npZn97HEQI8O20AyxAO71OoghWB2fjJ1w38diNMk9wBqvnz5x\n" + + "EDjFzPaHOnBlmLIu5qaIBdmtY7PHgbdJXu60T8ElHmOvYCNO+xQkFWzYaZ+CCzzGXsHOddqnYK2k\n" + + "4HoHG+YXPTXUPiHLycY+g/Bk2EnAoMM+FYtxxO0V7ESHfUqODzX0CLbEYZua40INY/e4LniOClYR\n" + + "j2CtaFH0n99DDT2CneawTU3w969HsEcdtql5PNQwqHunYb2snQjqfQ3NsNtptlgAD4YYhWZYnYfU\n" + + "yhI09FY5wyStpfliQTb0dm1Vo5Am+USATV15sqpBpSaZ91C0aO43ZDtWmNlvZQtXzbC7WVhiATxc\n" + + "pXDVDNsBXFMpnPqz18zOKVu4tGDK5sTvCwqp/mwys1LTPKs0yXsCg2kC95UtWCXDdgPnB4VTf/4C\n" + + "Bszsn6KCpTIsn860UMWC7EF2U5mCZZvkXeGxNIb7yxQq1SQXeHOcpWVmhYMjhRmWPx0XulgAA2U+\n" + + "lco0ySZNZ/JyS1GBMoLdECGQpnB9UYGu97D82/EnHCPFDaTrt2VRhl3G/0ssgKu7nSwSbH3EQJrC\n" + + "pd1OFgl2YYfjh4GpoHDqwRTZ9M12dJ0/ViTYRR2OPwK8WmBbZ94j66pqR6ckAYoFW93m2F4ze61M\n" + + "VDVmwMzeBT5tc25VN8Miwdrd8Lfkvz+WCKyufJf/tlu0tbibYZFgy+b9/7SZ7cr//qREYHXlQ4D8\n" + + "9eGOaF515B4T/1kSLGl3j1fU9oIZZQPRc+sxd8n1TDdNijLsQP47aWa3tTn/eoF9HXnLzP6ee8DM\n" + + "HgPez//tOmZR9Ka/DVgH3Dj/Ivn5IeDXSuGmZ8TMvmp3QtIYcMjMbu3Z1VWPHQTKMuatb4y1RieQ\n" + + "jVV2fbrUhNVm9r3HgXsGYr7Q6QGvnz7wolcsiLvmezv17TubNLONMRzFFGwR8CX1651tAWvMbDqG\n" + + "s2iTgvMhqk3U66P8IHBFLLGgR1v6SZoANvTCdwW+Bi5u9zrk4ZiYziRdBVxHPWYnLgGelfSZmX2Q\n" + + "OpgjkLRV0sfpXq8KmVAddrCTNChpLLEYVRhXNoMymOB7mLIX1p3U76lYRAsYDt2/wvOUXEnzxAIY\n" + + "wLH02nPT30O2ccYoWVf2mYR/Hh0m23dsP9myltlXk9PJlhkuB052+v8F+AL4CGjWln9N5l/CCEZS\n" + + "HWRiiAAAAABJRU5ErkJggg==").unbase64.bitmap + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/ui/MainActivity.kt b/app/src/main/java/com/fankes/miui/notify/ui/MainActivity.kt new file mode 100644 index 0000000..432310d --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/ui/MainActivity.kt @@ -0,0 +1,257 @@ +/** + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/01/24. + */ +@file:Suppress("DEPRECATION", "SetWorldReadable", "SetTextI18n") + +package com.fankes.miui.notify.ui + +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import android.net.Uri +import android.os.Bundle +import android.os.Handler +import android.view.View +import android.widget.LinearLayout +import android.widget.TextView +import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.SwitchCompat +import androidx.constraintlayout.utils.widget.ImageFilterView +import com.fankes.miui.notify.BuildConfig +import com.fankes.miui.notify.R +import com.fankes.miui.notify.hook.HookMedium +import com.fankes.miui.notify.utils.* +import com.gyf.immersionbar.ImmersionBar +import java.io.File + +class MainActivity : AppCompatActivity() { + + companion object { + + /** 模块版本 */ + private const val moduleVersion = BuildConfig.VERSION_NAME + + /** MIUI 版本 */ + private val miuiVersion by lazy { + if (isMIUI) + findPropString(key = "ro.miui.ui.version.code", default = "无法获取") + + " " + findPropString(key = "ro.system.build.version.incremental") + else "不是 MIUI 系统" + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + /** 隐藏系统的标题栏 */ + supportActionBar?.hide() + /** 初始化沉浸状态栏 */ + ImmersionBar.with(this) + .statusBarColor(R.color.white) + .autoDarkModeEnable(false) + .statusBarDarkFont(true) + .navigationBarColor(R.color.white) + .navigationBarDarkIcon(true) + .fitsSystemWindows(true) + .init() + /** 设置文本 */ + findViewById(R.id.main_text_version).text = "当前版本:$moduleVersion" + findViewById(R.id.main_text_miui_version).text = "MIUI 版本:$miuiVersion" + /** 判断是否为 MIUI 系统 */ + if (isNotMIUI) { + showDialog { + title = "不是 MIUI 系统" + msg = "此模块专为 MIUI 系统打造,当前无法识别你的系统为 MIUI,所以模块无法工作。\n" + + "如有问题请联系 酷安 @星夜不荟" + confirmButton(text = "退出") { finish() } + noCancelable() + } + return + } + /** 判断 Hook 状态 */ + if (isHooked()) { + findViewById(R.id.main_lin_status).setBackgroundResource(R.drawable.green_round) + findViewById(R.id.main_img_status).setImageResource(R.mipmap.succcess) + findViewById(R.id.main_text_status).text = "模块已激活" + } else + showDialog { + title = "模块没有激活" + msg = "检测到模块没有激活,模块需要 Xposed 环境依赖," + + "同时需要系统拥有 Root 权限," + + "请自行查看本页面使用帮助与说明第二条。\n" + + "由于需要修改系统应用达到效果,模块不支持太极阴、应用转生。" + confirmButton(text = "我知道了") + noCancelable() + } + /** 初始化 View */ + val moduleEnableSwitch = findViewById(R.id.module_enable_switch) + val hideIconInLauncherSwitch = findViewById(R.id.hide_icon_in_launcher_switch) + val colorIconHookSwitch = findViewById(R.id.color_icon_fix_switch) + val chatIconHookSwitch = findViewById(R.id.chat_icon_fix_switch) + /** 获取 Sp 存储的信息 */ + moduleEnableSwitch.isChecked = getBoolean(HookMedium.ENABLE_MODULE, default = true) + hideIconInLauncherSwitch.isChecked = getBoolean(HookMedium.ENABLE_HIDE_ICON) + colorIconHookSwitch.isChecked = getBoolean(HookMedium.ENABLE_COLOR_ICON_HOOK, default = true) + chatIconHookSwitch.isChecked = getBoolean(HookMedium.ENABLE_CHAT_ICON_HOOK, default = true) + moduleEnableSwitch.setOnCheckedChangeListener { btn, b -> + if (!btn.isPressed) return@setOnCheckedChangeListener + putBoolean(HookMedium.ENABLE_MODULE, b) + } + hideIconInLauncherSwitch.setOnCheckedChangeListener { btn, b -> + if (!btn.isPressed) return@setOnCheckedChangeListener + putBoolean(HookMedium.ENABLE_HIDE_ICON, b) + packageManager.setComponentEnabledSetting( + ComponentName(this@MainActivity, "com.fankes.miui.notify.Home"), + if (b) PackageManager.COMPONENT_ENABLED_STATE_DISABLED else PackageManager.COMPONENT_ENABLED_STATE_ENABLED, + PackageManager.DONT_KILL_APP + ) + } + colorIconHookSwitch.setOnCheckedChangeListener { btn, b -> + if (!btn.isPressed) return@setOnCheckedChangeListener + putBoolean(HookMedium.ENABLE_COLOR_ICON_HOOK, b) + } + chatIconHookSwitch.setOnCheckedChangeListener { btn, b -> + if (!btn.isPressed) return@setOnCheckedChangeListener + putBoolean(HookMedium.ENABLE_CHAT_ICON_HOOK, b) + } + /** 重启按钮点击事件 */ + findViewById(R.id.title_restart_icon).setOnClickListener { + showDialog { + title = "重启系统界面" + msg = "你确定要立即重启系统界面吗?" + confirmButton { restartSystemUI() } + cancelButton() + } + } + /** 恰饭! */ + findViewById(R.id.link_with_follow_me).setOnClickListener { + try { + startActivity(Intent().apply { + setPackage("com.coolapk.market") + action = "android.intent.action.VIEW" + data = Uri.parse("https://www.coolapk.com/u/876977") + /** 防止顶栈一样重叠在自己的 APP 中 */ + flags = Intent.FLAG_ACTIVITY_NEW_TASK + }) + } catch (e: Exception) { + Toast.makeText(this, "你可能没有安装酷安", Toast.LENGTH_SHORT).show() + } + } + /** 项目地址点击事件 */ + findViewById(R.id.link_with_project_address).setOnClickListener { + try { + startActivity(Intent().apply { + action = "android.intent.action.VIEW" + data = Uri.parse("https://github.com/fankes/MIUINativeNotifyIcon") + /** 防止顶栈一样重叠在自己的 APP 中 */ + flags = Intent.FLAG_ACTIVITY_NEW_TASK + }) + } catch (e: Exception) { + Toast.makeText(this, "无法启动系统默认浏览器", Toast.LENGTH_SHORT).show() + } + } + } + + /** + * 判断模块是否激活 + * @return [Boolean] 激活状态 + */ + private fun isHooked() = HookMedium.isHooked() + + /** 重启系统界面 */ + private fun restartSystemUI() = + execShellCmd(cmd = "pgrep systemui").also { pid -> + if (pid.isNotBlank()) + execShellCmd(cmd = "kill -9 $pid") + else Toast.makeText(this, "ROOT 权限获取失败", Toast.LENGTH_SHORT).show() + } + + override fun onResume() { + super.onResume() + setWorldReadable() + } + + override fun onRestart() { + super.onRestart() + setWorldReadable() + } + + override fun onPause() { + super.onPause() + setWorldReadable() + } + + /** + * 获取保存的值 + * @param key 名称 + * @param default 默认值 + * @return [Boolean] 保存的值 + */ + private fun getBoolean(key: String, default: Boolean = false) = + getSharedPreferences( + packageName + "_preferences", + Context.MODE_PRIVATE + ).getBoolean(key, default) + + /** + * 保存值 + * @param key 名称 + * @param bool 值 + */ + private fun putBoolean(key: String, bool: Boolean) { + getSharedPreferences( + packageName + "_preferences", + Context.MODE_PRIVATE + ).edit().putBoolean(key, bool).apply() + setWorldReadable() + /** 延迟继续设置强制允许 SP 可读可写 */ + Handler().postDelayed({ setWorldReadable() }, 500) + Handler().postDelayed({ setWorldReadable() }, 1000) + Handler().postDelayed({ setWorldReadable() }, 1500) + } + + /** + * 强制设置 Sp 存储为全局可读可写 + * 以供模块使用 + */ + private fun setWorldReadable() { + try { + if (FileUtils.getDefaultPrefFile(this).exists()) { + for (file in arrayOf( + FileUtils.getDataDir(this), + FileUtils.getPrefDir(this), + FileUtils.getDefaultPrefFile(this) + )) { + file.setReadable(true, false) + file.setExecutable(true, false) + } + } + } catch (_: Exception) { + Toast.makeText(this, "无法写入模块设置,请检查权限\n如果此提示一直显示,请不要双开模块", Toast.LENGTH_SHORT).show() + } + } + + override fun onBackPressed() { + setWorldReadable() + super.onBackPressed() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/DialogBuilder.kt b/app/src/main/java/com/fankes/miui/notify/utils/DialogBuilder.kt new file mode 100644 index 0000000..7984dda --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/DialogBuilder.kt @@ -0,0 +1,101 @@ +/** + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/7. + */ +@file:Suppress("unused") + +package com.fankes.miui.notify.utils + +import android.app.AlertDialog +import android.content.Context +import android.graphics.Color +import android.graphics.drawable.GradientDrawable + + +/** + * 构造对话框 + * @param it 对话框方法体 + */ +fun Context.showDialog(it: DialogBuilder.() -> Unit) = DialogBuilder(this).apply(it).show() + +/** + * 对话框构造器 + * @param context 实例 + */ +class DialogBuilder(private val context: Context) { + + private var instance: AlertDialog.Builder? = null // 实例对象 + + init { + instance = AlertDialog.Builder(context, android.R.style.Theme_Material_Light_Dialog) + } + + /** 设置对话框不可关闭 */ + fun noCancelable() = instance?.setCancelable(false) + + /** 设置对话框标题 */ + var title + get() = "" + set(value) { + instance?.setTitle(value) + } + + /** 设置对话框消息内容 */ + var msg + get() = "" + set(value) { + instance?.setMessage(value) + } + + /** + * 设置对话框确定按钮 + * @param text 按钮文本内容 + * @param it 点击事件 + */ + fun confirmButton(text: String = "确定", it: () -> Unit = {}) = + instance?.setPositiveButton(text) { _, _ -> it() } + + /** + * 设置对话框取消按钮 + * @param text 按钮文本内容 + * @param it 点击事件 + */ + fun cancelButton(text: String = "取消", it: () -> Unit = {}) = + instance?.setNegativeButton(text) { _, _ -> it() } + + /** + * 设置对话框第三个按钮 + * @param text 按钮文本内容 + * @param it 点击事件 + */ + fun neutralButton(text: String = "更多", it: () -> Unit = {}) = + instance?.setNeutralButton(text) { _, _ -> it() } + + /** 显示对话框 */ + internal fun show() = instance?.create()?.apply { + window?.setBackgroundDrawable(GradientDrawable( + GradientDrawable.Orientation.TOP_BOTTOM, + intArrayOf(Color.WHITE, Color.WHITE) + ).apply { + shape = GradientDrawable.RECTANGLE + gradientType = GradientDrawable.LINEAR_GRADIENT + cornerRadius = 15.dp(this@DialogBuilder.context) + }) + }?.show() +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/FileUtils.java b/app/src/main/java/com/fankes/miui/notify/utils/FileUtils.java new file mode 100755 index 0000000..69fc22e --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/FileUtils.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by zpp0196 on 2019/2/9. + */ +package com.fankes.miui.notify.utils; + +import android.content.Context; + +import com.fankes.miui.notify.BuildConfig; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; + +@SuppressWarnings("ALL") +public class FileUtils { + + private static final String FILE_PREF_NAME = BuildConfig.APPLICATION_ID + "_preferences.xml"; + + public static boolean copyFile(File srcFile, File targetFile) { + FileInputStream ins = null; + FileOutputStream out = null; + try { + if (targetFile.exists()) { + targetFile.delete(); + } + File targetParent = targetFile.getParentFile(); + if (!targetParent.exists()) { + targetParent.mkdirs(); + } + targetFile.createNewFile(); + ins = new FileInputStream(srcFile); + out = new FileOutputStream(targetFile); + byte[] b = new byte[1024]; + int n; + while ((n = ins.read(b)) != -1) { + out.write(b, 0, n); + } + } catch (IOException e) { + e.printStackTrace(); + return false; + } finally { + try { + if (ins != null) { + ins.close(); + } + if (out != null) { + out.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + return true; + } + + public static File getDataDir(Context context) { + return new File(context.getApplicationInfo().dataDir); + } + + public static File getPrefDir(Context context) { + return new File(getDataDir(context), "shared_prefs"); + } + + public static File getDefaultPrefFile(Context context) { + return new File(getPrefDir(context), FILE_PREF_NAME); + } +} diff --git a/app/src/main/java/com/fankes/miui/notify/utils/Utils.kt b/app/src/main/java/com/fankes/miui/notify/utils/Utils.kt new file mode 100644 index 0000000..1b6ad67 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/Utils.kt @@ -0,0 +1,179 @@ +/** + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/7. + */ +@file:Suppress("DEPRECATION", "PrivateApi", "unused") + +package com.fankes.miui.notify.utils + +import android.content.Context +import android.content.pm.PackageInfo +import android.content.pm.PackageManager +import android.graphics.* +import android.graphics.Bitmap.createBitmap +import android.util.Base64 +import com.fankes.miui.notify.application.MNvApplication.Companion.appContext +import java.io.DataInputStream +import java.io.DataOutputStream + + +/** + * 当前设备是否是 MIUI 定制 Android 系统 + * @return [Boolean] 是否符合条件 + */ +val isMIUI by lazy { + try { + Class.forName("android.miui.R") + true + } catch (_: Exception) { + false + } +} + +/** + * 当前设备是否不是 MIUI 定制 Android 系统 + * @return [Boolean] 是否符合条件 + */ +inline val isNotMIUI get() = !isMIUI + +/** + * 得到安装包信息 + * @return [PackageInfo] + */ +val Context.packageInfo get() = packageManager?.getPackageInfo(packageName, 0) ?: PackageInfo() + +/** + * 判断应用是否安装 + * @return [Boolean] + */ +val String.isInstall + get() = + try { + appContext.packageManager.getPackageInfo( + this, + PackageManager.GET_UNINSTALLED_PACKAGES + ) + true + } catch (e: Exception) { + false + } + +/** + * 得到版本信息 + * @return [String] + */ +val Context.versionName get() = packageInfo.versionName ?: "" + +/** + * 得到版本号 + * @return [Int] + */ +val Context.versionCode get() = packageInfo.versionCode + +/** + * dp 转换为 px + * @return [Int] + */ +val Number.dp get() = (toFloat() * appContext.resources.displayMetrics.density).toInt() + +/** + * dp 转换为 px + * @param context 使用的实例 + * @return [Float] + */ +fun Number.dp(context: Context) = toFloat() * context.resources.displayMetrics.density + +/** + * Base64 解密为字节流 + * @return [ByteArray] + */ +val String.unbase64 get() = Base64.decode(this, Base64.DEFAULT) ?: ByteArray(0) + +/** + * 字节流解析为位图 + * @return [Bitmap] + */ +val ByteArray.bitmap: Bitmap get() = BitmapFactory.decodeByteArray(this, 0, size) + +/** + * 圆角图片 + * @param radius 圆角度 + * @return [Bitmap] 圆角后的位图 - 失败会返回处理之前的位图 + */ +fun Bitmap.round(radius: Float): Bitmap = + createBitmap(width, height, Bitmap.Config.ARGB_8888).also { out -> + Canvas(out).also { canvas -> + Paint().also { paint -> + paint.isAntiAlias = true + canvas.drawARGB(0, 0, 0, 0) + paint.color = Color.WHITE + canvas.drawRoundRect(RectF(Rect(0, 0, width, height)), radius, radius, paint) + paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_IN) + canvas.drawBitmap(this, Rect(0, 0, width, height), Rect(0, 0, width, height), paint) + } + } + } + +/** + * 获取系统 Prop 值 + * @param key Key + * @param default 默认值 + * @return [String] + */ +fun findPropString(key: String, default: String = "") = + try { + (Class.forName("android.os.SystemProperties").getDeclaredMethod( + "get", + String::class.java, + String::class.java + ).apply { isAccessible = true }.invoke(null, key, default)) as? String? ?: default + } catch (_: Exception) { + default + } + +/** + * 执行命令 - su + * @param cmd 命令 + * @return [String] 执行结果 + */ +fun execShellCmd(cmd: String): String { + var result = "" + var dos: DataOutputStream? = null + var dis: DataInputStream? = null + try { + val p = Runtime.getRuntime().exec("su") + dos = DataOutputStream(p.outputStream) + dis = DataInputStream(p.inputStream) + dos.writeBytes("$cmd\n") + dos.flush() + dos.writeBytes("exit\n") + dos.flush() + var line: String + while (dis.readLine().also { line = it } != null) result += line + p.waitFor() + } catch (_: Exception) { + } finally { + try { + dos?.close() + dis?.close() + } catch (_: Exception) { + } + } + return result.trim() +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/XPrefUtils.kt b/app/src/main/java/com/fankes/miui/notify/utils/XPrefUtils.kt new file mode 100644 index 0000000..2ca1e6b --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/XPrefUtils.kt @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by zpp0196 on 2018/4/11. + */ +package com.fankes.miui.notify.utils + +import com.fankes.miui.notify.BuildConfig +import de.robv.android.xposed.XSharedPreferences + +object XPrefUtils { + + fun getBoolean(key: String, default: Boolean = false) = pref.getBoolean(key, default) + + private val pref: XSharedPreferences + get() { + val preferences = XSharedPreferences(BuildConfig.APPLICATION_ID) + preferences.makeWorldReadable() + preferences.reload() + return preferences + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/Compatible.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/Compatible.kt new file mode 100755 index 0000000..203a46e --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/Compatible.kt @@ -0,0 +1,291 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ +@file:Suppress("SameParameterValue") + +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +import android.annotation.SuppressLint +import android.graphics.drawable.Drawable +import android.graphics.drawable.GradientDrawable +import android.graphics.drawable.RippleDrawable +import android.graphics.drawable.RotateDrawable +import android.os.Build +import java.lang.reflect.Field +import java.lang.reflect.Method + +private val gradientState = resolveGradientState() + +private fun resolveGradientState(): Class<*> { + val classes = GradientDrawable::class.java.declaredClasses + for (singleClass in classes) { + if (singleClass.simpleName == "GradientState") return singleClass + } + throw RuntimeException("GradientState could not be found in thisAny GradientDrawable implementation") +} + +private val rotateState = resolveRotateState() + +private fun resolveRotateState(): Class<*> { + val classes = RotateDrawable::class.java.declaredClasses + for (singleClass in classes) { + if (singleClass.simpleName == "RotateState") return singleClass + } + throw RuntimeException("RotateState could not be found in thisAny RotateDrawable implementation") +} + +@Throws(SecurityException::class, NoSuchFieldException::class) +private fun resolveField(source: Class<*>, fieldName: String): Field { + val field = source.getDeclaredField(fieldName) + field.isAccessible = true + return field +} + +@Throws(SecurityException::class, NoSuchMethodException::class) +private fun resolveMethod( + source: Class<*>, + methodName: String, + vararg parameterTypes: Class<*> +): Method { + val method = source.getDeclaredMethod(methodName, *parameterTypes) + method.isAccessible = true + return method +} + +fun setInnerRadius(drawable: GradientDrawable, value: Int) { + try { + val innerRadius = resolveField(gradientState, "mInnerRadius") + innerRadius.setInt(drawable.constantState, value) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } +} + +fun setInnerRadiusRatio(drawable: GradientDrawable, value: Float) { + try { + val innerRadius = resolveField(gradientState, "mInnerRadiusRatio") + innerRadius.setFloat(drawable.constantState, value) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } +} + +fun setThickness(drawable: GradientDrawable, value: Int) { + try { + val innerRadius = resolveField(gradientState, "mThickness") + innerRadius.setInt(drawable.constantState, value) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } +} + +fun setThicknessRatio(drawable: GradientDrawable, value: Float) { + try { + val innerRadius = resolveField(gradientState, "mThicknessRatio") + innerRadius.setFloat(drawable.constantState, value) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } +} + +fun setUseLevelForShape(drawable: GradientDrawable, value: Boolean) { + try { + val useLevelForShape = resolveField(gradientState, "mUseLevelForShape") + useLevelForShape.setBoolean(drawable.constantState, value) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } +} + +@SuppressLint("ObsoleteSdkInt") +fun setOrientation(drawable: GradientDrawable, value: GradientDrawable.Orientation) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + drawable.orientation = value + } else { + try { + val orientation = resolveField(gradientState, "mOrientation") + orientation.set(drawable.constantState, value) + val rectIdDirty = resolveField(GradientDrawable::class.java, "mRectIsDirty") + rectIdDirty.setBoolean(drawable, true) + drawable.invalidateSelf() + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } + } +} + +@SuppressLint("ObsoleteSdkInt") +fun setColors(drawable: GradientDrawable, value: IntArray) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { + drawable.colors = value + } else { + try { + val colors = resolveField(gradientState, "mColors") + colors.set(drawable.constantState, value) + drawable.invalidateSelf() + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } + } +} + +fun setGradientRadiusType(drawable: GradientDrawable, value: Int) { + try { + val type = resolveField(gradientState, "mGradientRadiusType") + type.setInt(drawable.constantState, value) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } +} + +fun setGradientRadius(drawable: GradientDrawable, value: Float) { + try { + val gradientRadius = resolveField(gradientState, "mGradientRadius") + gradientRadius.setFloat(drawable.constantState, value) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } +} + +fun setStrokeColor(drawable: GradientDrawable, value: Int) { + try { + val type = resolveField(gradientState, "mStrokeColor") + type.setInt(drawable.constantState, value) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } +} + +fun setDrawable(rotateDrawable: RotateDrawable, drawable: Drawable) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + rotateDrawable.drawable = drawable + } else { + try { + val drawableField = resolveField(rotateState, "mDrawable") + val stateField = resolveField(RotateDrawable::class.java, "mState") + drawableField.set(stateField.get(rotateDrawable), drawable) + drawable.callback = rotateDrawable + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } + } +} + +fun setPivotX(rotateDrawable: RotateDrawable, value: Float) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + rotateDrawable.pivotX = value + } else { + try { + val pivotXField = resolveField(rotateState, "mPivotX") + pivotXField.setFloat(rotateDrawable.constantState, value) + val pivotXRelField = resolveField(rotateState, "mPivotXRel") + pivotXRelField.setBoolean(rotateDrawable.constantState, true) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } + } +} + +fun setPivotY(rotateDrawable: RotateDrawable, value: Float) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + rotateDrawable.pivotY = value + } else { + try { + val pivotYField = resolveField(rotateState, "mPivotY") + pivotYField.setFloat(rotateDrawable.constantState, value) + val pivotYRelField = resolveField(rotateState, "mPivotYRel") + pivotYRelField.setBoolean(rotateDrawable.constantState, true) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } + } +} + +fun setFromDegrees(rotateDrawable: RotateDrawable, value: Float) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + rotateDrawable.fromDegrees = value + } else { + try { + val fromDegreesField = resolveField(rotateState, "mFromDegrees") + fromDegreesField.setFloat(rotateDrawable.constantState, value) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } + } +} + +fun setToDegrees(rotateDrawable: RotateDrawable, value: Float) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + rotateDrawable.toDegrees = value + } else { + try { + val toDegreesField = resolveField(rotateState, "mToDegrees") + toDegreesField.setFloat(rotateDrawable.constantState, value) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } + } +} + +fun setRadius(rippleDrawable: RippleDrawable, value: Int) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + rippleDrawable.radius = value + } else { + try { + val setRadiusMethod = + resolveMethod(RippleDrawable::class.java, "setMaxRadius", Int::class.java) + setRadiusMethod.invoke(rippleDrawable, value) + } catch (e: NoSuchFieldException) { + e.printStackTrace() + } catch (e: IllegalAccessException) { + e.printStackTrace() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/Constants.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/Constants.kt new file mode 100755 index 0000000..061c20c --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/Constants.kt @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ + +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +class Constants { + + companion object { + const val DEFAULT_COLOR = 0xFFBA68C8.toInt() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/DrawableBuilder.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/DrawableBuilder.kt new file mode 100755 index 0000000..d12665e --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/DrawableBuilder.kt @@ -0,0 +1,488 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ +@file:Suppress("unused", "MemberVisibilityCanBePrivate") + +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +import android.content.res.ColorStateList +import android.graphics.drawable.Drawable +import android.graphics.drawable.GradientDrawable +import android.util.StateSet +import java.util.* +import java.util.concurrent.atomic.AtomicInteger + +class DrawableBuilder { + + private var properties = DrawableProperties() + private var order: AtomicInteger = AtomicInteger(1) + private var transformsMap = TreeMap Drawable>() + private var baseDrawable: Drawable? = null + + fun batch(properties: DrawableProperties) = apply { this.properties = properties.copy() } + fun baseDrawable(drawable: Drawable) = apply { baseDrawable = drawable } + + // + fun shape(shape: Int) = apply { properties.shape = shape } + + fun rectangle() = apply { shape(GradientDrawable.RECTANGLE) } + fun oval() = apply { shape(GradientDrawable.OVAL) } + fun line() = apply { shape(GradientDrawable.LINE) } + fun ring() = apply { shape(GradientDrawable.RING) } + fun innerRadius(innerRadius: Int) = apply { properties.innerRadius = innerRadius } + fun innerRadiusRatio(innerRadiusRatio: Float) = + apply { properties.innerRadiusRatio = innerRadiusRatio } + + fun thickness(thickness: Int) = apply { properties.thickness = thickness } + fun thicknessRatio(thicknessRatio: Float) = apply { properties.thicknessRatio = thicknessRatio } + + fun useLevelForRing(use: Boolean = true) = apply { properties.useLevelForRing = use } + + // + fun cornerRadius(cornerRadius: Int) = apply { properties.cornerRadius = cornerRadius } + + fun topLeftRadius(topLeftRadius: Int) = apply { properties.topLeftRadius = topLeftRadius } + fun topRightRadius(topRightRadius: Int) = apply { properties.topRightRadius = topRightRadius } + fun bottomRightRadius(bottomRightRadius: Int) = + apply { properties.bottomRightRadius = bottomRightRadius } + + fun bottomLeftRadius(bottomLeftRadius: Int) = + apply { properties.bottomLeftRadius = bottomLeftRadius } + + fun rounded() = apply { cornerRadius(Int.MAX_VALUE) } + fun cornerRadii( + topLeftRadius: Int, + topRightRadius: Int, + bottomRightRadius: Int, + bottomLeftRadius: Int + ) = apply { + topLeftRadius(topLeftRadius); topRightRadius(topRightRadius); bottomRightRadius( + bottomRightRadius + ); bottomLeftRadius(bottomLeftRadius) + } + + // + + fun gradient(useGradient: Boolean = true) = apply { properties.useGradient = useGradient } + + fun gradientType(type: Int) = apply { properties.type = type } + fun linearGradient() = apply { gradientType(GradientDrawable.LINEAR_GRADIENT) } + fun radialGradient() = apply { gradientType(GradientDrawable.RADIAL_GRADIENT) } + fun sweepGradient() = apply { gradientType(GradientDrawable.SWEEP_GRADIENT) } + fun angle(angle: Int) = apply { properties.angle = angle } + fun centerX(centerX: Float) = apply { properties.centerX = centerX } + fun centerY(centerY: Float) = apply { properties.centerY = centerY } + fun center(centerX: Float, centerY: Float) = apply { centerX(centerX); centerY(centerY) } + + fun useCenterColor(useCenterColor: Boolean = true) = + apply { properties.useCenterColor = useCenterColor } + + fun startColor(startColor: Int) = apply { properties.startColor = startColor } + fun centerColor(centerColor: Int) = apply { + properties.centerColor = centerColor + useCenterColor(true) + } + + fun endColor(endColor: Int) = apply { properties.endColor = endColor } + fun gradientColors(startColor: Int, endColor: Int, centerColor: Int?) = apply { + startColor(startColor); endColor(endColor) + useCenterColor(centerColor != null) + centerColor?.let { + centerColor(it) + } + } + + fun gradientRadiusType(gradientRadiusType: Int) = + apply { properties.gradientRadiusType = gradientRadiusType } + + fun gradientRadius(gradientRadius: Float) = apply { properties.gradientRadius = gradientRadius } + fun gradientRadius(radius: Float, type: Int) = + apply { gradientRadius(radius); gradientRadiusType(type) } + + fun gradientRadiusInPixel(radius: Float) = + apply { gradientRadius(radius); gradientRadiusType(DrawableProperties.RADIUS_TYPE_PIXELS) } + + fun gradientRadiusInFraction(radius: Float) = + apply { gradientRadius(radius); gradientRadiusType(DrawableProperties.RADIUS_TYPE_FRACTION) } + + fun useLevelForGradient(use: Boolean) = apply { properties.useLevelForGradient = use } + fun useLevelForGradient() = apply { useLevelForGradient(true) } + + // + fun width(width: Int) = apply { properties.width = width } + + fun height(height: Int) = apply { properties.height = height } + fun size(width: Int, height: Int) = apply { width(width); height(height) } + fun size(size: Int) = apply { width(size).height(size) } + + // + fun solidColor(solidColor: Int) = apply { properties.solidColor = solidColor } + + private var solidColorPressed: Int? = null + fun solidColorPressed(color: Int?) = apply { solidColorPressed = color } + private var solidColorPressedWhenRippleUnsupported: Int? = null + fun solidColorPressedWhenRippleUnsupported(color: Int?) = + apply { solidColorPressedWhenRippleUnsupported = color } + + private var solidColorDisabled: Int? = null + fun solidColorDisabled(color: Int?) = apply { solidColorDisabled = color } + private var solidColorSelected: Int? = null + fun solidColorSelected(color: Int?) = apply { solidColorSelected = color } + fun solidColorStateList(colorStateList: ColorStateList) = + apply { properties.solidColorStateList = colorStateList } + + // + fun strokeWidth(strokeWidth: Int) = apply { properties.strokeWidth = strokeWidth } + + fun strokeColor(strokeColor: Int) = apply { properties.strokeColor = strokeColor } + private var strokeColorPressed: Int? = null + fun strokeColorPressed(color: Int?) = apply { strokeColorPressed = color } + private var strokeColorDisabled: Int? = null + fun strokeColorDisabled(color: Int?) = apply { strokeColorDisabled = color } + private var strokeColorSelected: Int? = null + fun strokeColorSelected(color: Int?) = apply { strokeColorSelected = color } + fun strokeColorStateList(colorStateList: ColorStateList) = + apply { properties.strokeColorStateList = colorStateList } + + fun dashWidth(dashWidth: Int) = apply { properties.dashWidth = dashWidth } + fun dashGap(dashGap: Int) = apply { properties.dashGap = dashGap } + fun hairlineBordered() = apply { strokeWidth(1) } + fun shortDashed() = apply { dashWidth(12).dashGap(12) } + fun mediumDashed() = apply { dashWidth(24).dashGap(24) } + fun longDashed() = apply { dashWidth(36).dashGap(36) } + fun dashed() = apply { mediumDashed() } + + // + private var rotateOrder = 0 + + + fun rotate(boolean: Boolean = true) = apply { + properties.useRotate = boolean + rotateOrder = if (boolean) { + order.getAndIncrement() + } else { + 0 + } + } + + fun pivotX(pivotX: Float) = apply { properties.pivotX = pivotX } + fun pivotY(pivotY: Float) = apply { properties.pivotY = pivotY } + fun pivot(pivotX: Float, pivotY: Float) = apply { pivotX(pivotX).pivotY(pivotY) } + fun fromDegrees(degrees: Float) = apply { properties.fromDegrees = degrees } + fun toDegrees(degrees: Float) = apply { properties.toDegrees = degrees } + fun degrees(fromDegrees: Float, toDegrees: Float) = + apply { fromDegrees(fromDegrees).toDegrees(toDegrees) } + + fun degrees(degrees: Float) = apply { fromDegrees(degrees).toDegrees(degrees) } + fun rotate(fromDegrees: Float, toDegrees: Float) = + apply { rotate().fromDegrees(fromDegrees).toDegrees(toDegrees) } + + fun rotate(degrees: Float) = apply { rotate().degrees(degrees) } + + // + private var scaleOrder = 0 + + + fun scale(boolean: Boolean = true) = apply { + properties.useScale = boolean + scaleOrder = if (boolean) { + order.getAndIncrement() + } else { + 0 + } + } + + fun scaleLevel(level: Int) = apply { properties.scaleLevel = level } + fun scaleGravity(gravity: Int) = apply { properties.scaleGravity = gravity } + fun scaleWidth(scale: Float) = apply { properties.scaleWidth = scale } + fun scaleHeight(scale: Float) = apply { properties.scaleHeight = scale } + fun scale(scale: Float) = apply { scale().scaleWidth(scale).scaleHeight(scale) } + fun scale(scaleWidth: Float, scaleHeight: Float) = + apply { scale().scaleWidth(scaleWidth).scaleHeight(scaleHeight) } + + // flip + + fun flip(boolean: Boolean = true) = apply { properties.useFlip = boolean } + + fun orientation(orientation: Int) = apply { properties.orientation = orientation } + fun flipVertical() = apply { flip().orientation(FlipDrawable.ORIENTATION_VERTICAL) } + + // + + fun ripple(boolean: Boolean = true) = apply { properties.useRipple = boolean } + + fun rippleColor(color: Int) = apply { properties.rippleColor = color } + fun rippleColorStateList(colorStateList: ColorStateList) = + apply { properties.rippleColorStateList = colorStateList } + + fun rippleRadius(radius: Int) = apply { properties.rippleRadius = radius } + + fun build(): Drawable { + if (baseDrawable != null) { + return wrap(baseDrawable!!) + } + + var drawable: Drawable + + // fall back when ripple is unavailable on devices with API < 21 + if (shouldFallbackRipple()) { + if (solidColorPressedWhenRippleUnsupported != null) { + solidColorPressed(solidColorPressedWhenRippleUnsupported) + } else { + solidColorPressed(properties.rippleColor) + } + } + + if (needStateListDrawable()) { + drawable = StateListDrawableBuilder() + .pressed(buildPressedDrawable()) + .disabled(buildDisabledDrawable()) + .selected(buildSelectedDrawable()) + .normal(buildNormalDrawable()) + .build() + } else { + drawable = GradientDrawable() + setupGradientDrawable(drawable) + } + drawable = wrap(drawable) + return drawable + } + + private fun getSolidColorStateList(): ColorStateList { + if (properties.solidColorStateList != null) { + return properties.solidColorStateList!! + } + + val states = mutableListOf() + val colors = mutableListOf() + + solidColorPressed?.let { + states.add(intArrayOf(android.R.attr.state_pressed)) + colors.add(it) + } + solidColorDisabled?.let { + states.add(intArrayOf(-android.R.attr.state_enabled)) + colors.add(it) + } + solidColorSelected?.let { + states.add(intArrayOf(android.R.attr.state_selected)) + colors.add(it) + } + states.add(StateSet.WILD_CARD) + colors.add(properties.solidColor) + + return ColorStateList(states.toTypedArray(), colors.toIntArray()) + } + + private fun getStrokeColorStateList(): ColorStateList { + if (properties.strokeColorStateList != null) { + return properties.strokeColorStateList!! + } + + val states = mutableListOf() + val colors = mutableListOf() + + strokeColorPressed?.let { + states.add(intArrayOf(android.R.attr.state_pressed)) + colors.add(it) + } + strokeColorDisabled?.let { + states.add(intArrayOf(-android.R.attr.state_enabled)) + colors.add(it) + } + strokeColorSelected?.let { + states.add(intArrayOf(android.R.attr.state_selected)) + colors.add(it) + } + states.add(StateSet.WILD_CARD) + colors.add(properties.strokeColor) + + return ColorStateList(states.toTypedArray(), colors.toIntArray()) + } + + private fun buildPressedDrawable(): Drawable? { + if (solidColorPressed == null && strokeColorPressed == null) return null + + val pressedDrawable = GradientDrawable() + setupGradientDrawable(pressedDrawable) + solidColorPressed?.let { + pressedDrawable.setColor(it) + } + strokeColorPressed?.let { + setStrokeColor(pressedDrawable, it) + } + return pressedDrawable + } + + private fun buildDisabledDrawable(): Drawable? { + if (solidColorDisabled == null && strokeColorDisabled == null) return null + + val disabledDrawable = GradientDrawable() + setupGradientDrawable(disabledDrawable) + solidColorDisabled?.let { + disabledDrawable.setColor(it) + } + strokeColorDisabled?.let { + setStrokeColor(disabledDrawable, it) + } + return disabledDrawable + } + + private fun buildSelectedDrawable(): Drawable? { + if (solidColorSelected == null && strokeColorSelected == null) return null + + val selectedDrawable = GradientDrawable() + setupGradientDrawable(selectedDrawable) + solidColorSelected?.let { + selectedDrawable.setColor(it) + } + strokeColorSelected?.let { + setStrokeColor(selectedDrawable, it) + } + return selectedDrawable + } + + private fun buildNormalDrawable(): Drawable { + val pressedDrawable = GradientDrawable() + setupGradientDrawable(pressedDrawable) + return pressedDrawable + } + + private fun setupGradientDrawable(drawable: GradientDrawable) { + properties.apply { + drawable.shape = shape + if (shape == GradientDrawable.RING) { + setInnerRadius(drawable, innerRadius) + setInnerRadiusRatio(drawable, innerRadiusRatio) + setThickness(drawable, thickness) + setThicknessRatio(drawable, thicknessRatio) + setUseLevelForShape(drawable, useLevelForRing) + } + drawable.cornerRadii = getCornerRadii() + if (useGradient) { + drawable.gradientType = type + setGradientRadiusType(drawable, gradientRadiusType) + setGradientRadius(drawable, gradientRadius) + drawable.setGradientCenter(centerX, centerY) + setOrientation(drawable, getOrientation()) + setColors(drawable, getColors()) + drawable.useLevel = useLevelForGradient + } else { + drawable.color = getSolidColorStateList() + } + drawable.setSize(width, height) + drawable.setStroke( + strokeWidth, + getStrokeColorStateList(), + dashWidth.toFloat(), + dashGap.toFloat() + ) + } + } + + private fun needStateListDrawable(): Boolean { + return (hasStrokeColorStateList() || (!properties.useGradient && hasSolidColorStateList())) + } + + private fun needRotateDrawable(): Boolean { + return properties.useRotate && + !(properties.pivotX == 0.5f && properties.pivotY == 0.5f + && properties.fromDegrees == 0f && properties.toDegrees == 0f) + } + + private fun needScaleDrawable(): Boolean { + return properties.useScale + } + + private fun wrap(drawable: Drawable): Drawable { + var wrappedDrawable = drawable + + if (rotateOrder > 0) { + transformsMap[rotateOrder] = ::wrapRotateIfNeeded + } + if (scaleOrder > 0) { + transformsMap[scaleOrder] = ::wrapScaleIfNeeded + } + + for (action in transformsMap.values) { + wrappedDrawable = action.invoke(wrappedDrawable) + } + + if (properties.useFlip) { + wrappedDrawable = FlipDrawableBuilder() + .drawable(wrappedDrawable) + .orientation(properties.orientation) + .build() + } + + if (isRippleSupported() && properties.useRipple) { + wrappedDrawable = RippleDrawableBuilder() + .drawable(wrappedDrawable) + .color(properties.rippleColor) + .colorStateList(properties.rippleColorStateList) + .radius(properties.rippleRadius) + .build() + } + + return wrappedDrawable + } + + private fun shouldFallbackRipple(): Boolean { + return properties.useRipple && !isRippleSupported() + } + + private fun isRippleSupported() = true + + private fun wrapRotateIfNeeded(drawable: Drawable): Drawable { + if (!needRotateDrawable()) return drawable + + with(properties) { + return RotateDrawableBuilder() + .drawable(drawable) + .pivotX(pivotX) + .pivotY(pivotY) + .fromDegrees(fromDegrees) + .toDegrees(toDegrees) + .build() + } + } + + private fun wrapScaleIfNeeded(drawable: Drawable): Drawable { + if (!needScaleDrawable()) return drawable + + with(properties) { + return ScaleDrawableBuilder() + .drawable(drawable) + .level(scaleLevel) + .scaleGravity(scaleGravity) + .scaleWidth(scaleWidth) + .scaleHeight(scaleHeight) + .build() + } + } + + private fun hasSolidColorStateList(): Boolean { + return solidColorPressed != null || solidColorDisabled != null || solidColorSelected != null + } + + private fun hasStrokeColorStateList(): Boolean { + return strokeColorPressed != null || strokeColorDisabled != null || strokeColorSelected != null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/DrawableProperties.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/DrawableProperties.kt new file mode 100755 index 0000000..0385887 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/DrawableProperties.kt @@ -0,0 +1,220 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ +@file:Suppress("SetterBackingFieldAssignment", "unused") + +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +import android.content.res.ColorStateList +import android.graphics.Color +import android.graphics.drawable.Drawable +import android.graphics.drawable.GradientDrawable +import android.os.Parcel +import android.os.Parcelable +import android.view.Gravity +import java.io.Serializable + +data class DrawableProperties( + + // + @JvmField var shape: Int = GradientDrawable.RECTANGLE, + @JvmField var innerRadius: Int = -1, + @JvmField var innerRadiusRatio: Float = 9f, + @JvmField var thickness: Int = -1, + @JvmField var thicknessRatio: Float = 3f, + @JvmField var useLevelForRing: Boolean = false, + + // + private var _cornerRadius: Int = 0, + @JvmField var topLeftRadius: Int = 0, + @JvmField var topRightRadius: Int = 0, + @JvmField var bottomRightRadius: Int = 0, + @JvmField var bottomLeftRadius: Int = 0, + + // + @JvmField var useGradient: Boolean = false, + @JvmField var type: Int = GradientDrawable.RADIAL_GRADIENT, + @JvmField var angle: Int = 0, + @JvmField var centerX: Float = 0.5f, + @JvmField var centerY: Float = 0.5f, + @JvmField var useCenterColor: Boolean = false, + @JvmField var startColor: Int = Constants.DEFAULT_COLOR, + @JvmField var centerColor: Int? = null, + @JvmField var endColor: Int = 0x7FFFFFFF, + @JvmField var gradientRadiusType: Int = RADIUS_TYPE_FRACTION, + @JvmField var gradientRadius: Float = 0.5f, + @JvmField var useLevelForGradient: Boolean = false, + + // + @JvmField var width: Int = -1, + @JvmField var height: Int = -1, + + // + @JvmField var solidColor: Int = Color.TRANSPARENT, + @JvmField var solidColorStateList: ColorStateList? = null, + + // + @JvmField var strokeWidth: Int = 0, + @JvmField var strokeColor: Int = Color.DKGRAY, + @JvmField var strokeColorStateList: ColorStateList? = null, + @JvmField var dashWidth: Int = 0, + @JvmField var dashGap: Int = 0, + + // + @JvmField var useRotate: Boolean = false, + @JvmField var pivotX: Float = 0.5f, + @JvmField var pivotY: Float = 0.5f, + @JvmField var fromDegrees: Float = 0f, + @JvmField var toDegrees: Float = 0f, + + // + @JvmField var useScale: Boolean = false, + @JvmField var scaleLevel: Int = 10000, + @JvmField var scaleGravity: Int = Gravity.CENTER, + @JvmField var scaleWidth: Float = 0f, + @JvmField var scaleHeight: Float = 0f, + + // flip + @JvmField var useFlip: Boolean = false, + @JvmField var orientation: Int = FlipDrawable.ORIENTATION_HORIZONTAL, + + // ripple + @JvmField var useRipple: Boolean = false, + @JvmField var rippleColor: Int = Constants.DEFAULT_COLOR, + @JvmField var rippleColorStateList: ColorStateList? = null, + @JvmField var rippleRadius: Int = -1 +) : Serializable { + + companion object { + const val RADIUS_TYPE_PIXELS = 0 + const val RADIUS_TYPE_FRACTION = 1 + + @JvmField + val CREATOR = object : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): DrawableProperties { + return DrawableProperties(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } + } + + var cornerRadius: Int = _cornerRadius + set(value) { + _cornerRadius = value + topLeftRadius = value + topRightRadius = value + bottomRightRadius = value + bottomLeftRadius = value + } + + constructor(parcel: Parcel) : this( + parcel.readInt(), + parcel.readInt(), + parcel.readFloat(), + parcel.readInt(), + parcel.readFloat(), + parcel.readByte() != 0.toByte(), + parcel.readInt(), + parcel.readInt(), + parcel.readInt(), + parcel.readInt(), + parcel.readInt(), + parcel.readByte() != 0.toByte(), + parcel.readInt(), + parcel.readInt(), + parcel.readFloat(), + parcel.readFloat(), + parcel.readByte() != 0.toByte(), + parcel.readInt(), + parcel.readValue(Int::class.java.classLoader) as? Int, + parcel.readInt(), + parcel.readInt(), + parcel.readFloat(), + parcel.readByte() != 0.toByte(), + parcel.readInt(), + parcel.readInt(), + parcel.readInt(), + parcel.readParcelable(ColorStateList::class.java.classLoader), + parcel.readInt(), + parcel.readInt(), + parcel.readParcelable(ColorStateList::class.java.classLoader), + parcel.readInt(), + parcel.readInt(), + parcel.readByte() != 0.toByte(), + parcel.readFloat(), + parcel.readFloat(), + parcel.readFloat(), + parcel.readFloat(), + parcel.readByte() != 0.toByte(), + parcel.readInt(), + parcel.readInt(), + parcel.readFloat(), + parcel.readFloat(), + parcel.readByte() != 0.toByte(), + parcel.readInt(), + parcel.readByte() != 0.toByte(), + parcel.readInt(), + parcel.readParcelable(ColorStateList::class.java.classLoader), + parcel.readInt() + ) + + fun copy(): DrawableProperties { + val parcel = Parcel.obtain() + parcel.setDataPosition(0) + val properties = CREATOR.createFromParcel(parcel) + parcel.recycle() + return properties + } + + fun getCornerRadii(): FloatArray { + return floatArrayOf( + topLeftRadius.toFloat(), topLeftRadius.toFloat(), + topRightRadius.toFloat(), topRightRadius.toFloat(), + bottomRightRadius.toFloat(), bottomRightRadius.toFloat(), + bottomLeftRadius.toFloat(), bottomLeftRadius.toFloat() + ) + } + + fun getOrientation(): GradientDrawable.Orientation { + val orientation: GradientDrawable.Orientation = when (val angle = this.angle % 360) { + 0 -> GradientDrawable.Orientation.LEFT_RIGHT + 45 -> GradientDrawable.Orientation.BL_TR + 90 -> GradientDrawable.Orientation.BOTTOM_TOP + 135 -> GradientDrawable.Orientation.BR_TL + 180 -> GradientDrawable.Orientation.RIGHT_LEFT + 225 -> GradientDrawable.Orientation.TR_BL + 270 -> GradientDrawable.Orientation.TOP_BOTTOM + 315 -> GradientDrawable.Orientation.TL_BR + else -> throw IllegalArgumentException("Unsupported angle: $angle") + } + return orientation + } + + fun getColors(): IntArray { + return if (useCenterColor && centerColor != null) { + intArrayOf(startColor, centerColor!!, endColor) + } else intArrayOf(startColor, endColor) + } + + fun materialization(): Drawable = DrawableBuilder().batch(this).build() +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/DrawableWrapperBuilder.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/DrawableWrapperBuilder.kt new file mode 100755 index 0000000..b6ca1f1 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/DrawableWrapperBuilder.kt @@ -0,0 +1,33 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +import android.graphics.drawable.Drawable + +abstract class DrawableWrapperBuilder> { + + protected var drawable: Drawable? = null + + @Suppress("UNCHECKED_CAST") + fun drawable(drawable: Drawable): T = apply { this.drawable = drawable } as T + + abstract fun build(): Drawable +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/FlipDrawable.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/FlipDrawable.kt new file mode 100755 index 0000000..c5a2825 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/FlipDrawable.kt @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ +@file:Suppress("DEPRECATION", "CanvasSize") + +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +import android.graphics.Canvas +import android.graphics.ColorFilter +import android.graphics.Rect +import android.graphics.drawable.Drawable + +class FlipDrawable( + private var drawable: Drawable, + private var orientation: Int = ORIENTATION_HORIZONTAL +) : Drawable() { + + companion object { + const val ORIENTATION_HORIZONTAL = 0 + const val ORIENTATION_VERTICAL = 1 + } + + override fun draw(canvas: Canvas) { + val saveCount = canvas.save() + if (orientation == ORIENTATION_VERTICAL) { + canvas.scale(1f, -1f, (canvas.width / 2).toFloat(), (canvas.height / 2).toFloat()) + } else { + canvas.scale(-1f, 1f, (canvas.width / 2).toFloat(), (canvas.height / 2).toFloat()) + } + drawable.bounds = Rect(0, 0, canvas.width, canvas.height) + drawable.draw(canvas) + canvas.restoreToCount(saveCount) + } + + override fun onLevelChange(level: Int): Boolean { + drawable.level = level + invalidateSelf() + return true + } + + override fun getIntrinsicWidth(): Int { + return drawable.intrinsicWidth + } + + override fun getIntrinsicHeight(): Int { + return drawable.intrinsicHeight + } + + override fun setAlpha(alpha: Int) { + drawable.alpha = alpha + } + + override fun getOpacity(): Int { + return drawable.opacity + } + + override fun setColorFilter(colorFilter: ColorFilter?) { + drawable.colorFilter = colorFilter + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/FlipDrawableBuilder.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/FlipDrawableBuilder.kt new file mode 100755 index 0000000..6bd1200 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/FlipDrawableBuilder.kt @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +import android.graphics.drawable.Drawable + +class FlipDrawableBuilder : DrawableWrapperBuilder() { + + private var orientation: Int = FlipDrawable.ORIENTATION_HORIZONTAL + + fun orientation(orientation: Int) = apply { this.orientation = orientation } + + override fun build(): Drawable { + return FlipDrawable(drawable!!, orientation) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/LayerDrawableBuilder.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/LayerDrawableBuilder.kt new file mode 100755 index 0000000..672184c --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/LayerDrawableBuilder.kt @@ -0,0 +1,181 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +import android.graphics.drawable.Drawable +import android.graphics.drawable.LayerDrawable +import android.os.Build +import android.view.Gravity +import androidx.annotation.RequiresApi +import java.util.* + +class LayerDrawableBuilder { + + companion object { + const val DIMEN_UNDEFINED = Int.MIN_VALUE + } + + @RequiresApi(Build.VERSION_CODES.LOLLIPOP) + private var paddingMode = LayerDrawable.PADDING_MODE_NEST + private var paddingLeft = 0 + private var paddingTop = 0 + private var paddingRight = 0 + private var paddingBottom = 0 + private var paddingStart = 0 + private var paddingEnd = 0 + private val layers = ArrayList() + + @RequiresApi(Build.VERSION_CODES.LOLLIPOP) + fun paddingMode(mode: Int) = apply { paddingMode = mode } + fun paddingLeft(padding: Int) = apply { paddingLeft = padding } + fun paddingTop(padding: Int) = apply { paddingTop = padding } + fun paddingRight(padding: Int) = apply { paddingRight = padding } + fun paddingBottom(padding: Int) = apply { paddingBottom = padding } + + @RequiresApi(Build.VERSION_CODES.M) + fun paddingStart(padding: Int) = apply { paddingStart = padding } + + @RequiresApi(Build.VERSION_CODES.M) + fun paddingEnd(padding: Int) = apply { paddingEnd = padding } + fun padding(padding: Int) = apply { + paddingLeft(padding).paddingTop(padding).paddingRight(padding).paddingBottom(padding) + } + + @RequiresApi(Build.VERSION_CODES.M) + fun paddingRelative(padding: Int) = apply { + paddingStart(padding).paddingTop(padding).paddingEnd(padding).paddingBottom(padding) + } + + fun add(drawable: Drawable) = apply { layers.add(Layer(drawable)) } + + fun width(width: Int) = apply { layers.last().width = width } + fun height(height: Int) = apply { layers.last().height = height } + + fun insetLeft(inset: Int) = apply { layers.last().insetLeft = inset } + fun insetTop(inset: Int) = apply { layers.last().insetTop = inset } + fun insetRight(inset: Int) = apply { layers.last().insetRight = inset } + fun insetBottom(inset: Int) = apply { layers.last().insetBottom = inset } + + @RequiresApi(Build.VERSION_CODES.M) + fun insetStart(inset: Int) = apply { layers.last().insetStart = inset } + + @RequiresApi(Build.VERSION_CODES.M) + fun insetEnd(inset: Int) = apply { layers.last().insetEnd = inset } + fun inset(inset: Int) = + apply { insetLeft(inset).insetTop(inset).insetRight(inset).insetBottom(inset) } + + fun inset(insetLeft: Int, insetTop: Int, insetRight: Int, insetBottom: Int) = apply { + insetLeft(insetLeft).insetTop(insetTop).insetRight(insetRight).insetBottom(insetBottom) + } + + @RequiresApi(Build.VERSION_CODES.M) + fun insetRelative(inset: Int) = + apply { insetStart(inset).insetTop(inset).insetEnd(inset).insetBottom(inset) } + + @RequiresApi(Build.VERSION_CODES.M) + fun insetRelative(insetStart: Int, insetTop: Int, insetEnd: Int, insetBottom: Int) = apply { + insetStart(insetStart).insetTop(insetTop).insetEnd(insetEnd).insetBottom(insetBottom) + } + + @RequiresApi(Build.VERSION_CODES.M) + fun gravity(gravity: Int) = apply { layers.last().gravity = gravity } + + fun modify( + index: Int, drawable: Drawable, + width: Int = DIMEN_UNDEFINED, + height: Int = DIMEN_UNDEFINED, + insetLeft: Int = DIMEN_UNDEFINED, + insetTop: Int = DIMEN_UNDEFINED, + insetRight: Int = DIMEN_UNDEFINED, + insetBottom: Int = DIMEN_UNDEFINED, + insetStart: Int = DIMEN_UNDEFINED, + insetEnd: Int = DIMEN_UNDEFINED + ) = + apply { + val layer = layers[index] + layer.drawable = drawable + if (width != DIMEN_UNDEFINED) layer.width = width + if (height != DIMEN_UNDEFINED) layer.height = height + if (insetLeft != DIMEN_UNDEFINED) layer.insetLeft = insetLeft + if (insetTop != DIMEN_UNDEFINED) layer.insetTop = insetTop + if (insetRight != DIMEN_UNDEFINED) layer.insetRight = insetRight + if (insetBottom != DIMEN_UNDEFINED) layer.insetBottom = insetBottom + if (insetStart != DIMEN_UNDEFINED) layer.insetStart = insetStart + if (insetEnd != DIMEN_UNDEFINED) layer.insetEnd = insetEnd + } + + fun build(): LayerDrawable { + val layerDrawable = LayerDrawable(layers.map { it -> it.drawable }.toTypedArray()) + for (i in 0 until layers.size) { + val layer = layers[i] + layerDrawable.setLayerInset( + i, + layer.insetLeft, + layer.insetTop, + layer.insetRight, + layer.insetBottom + ) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (layer.insetStart != DIMEN_UNDEFINED || layer.insetEnd != DIMEN_UNDEFINED) { + layerDrawable.setLayerInsetRelative( + i, + layer.insetStart, + layer.insetTop, + layer.insetEnd, + layer.insetBottom + ) + } + } + layerDrawable.setId(i, i) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + layerDrawable.setLayerGravity(i, layer.gravity) + layerDrawable.setLayerInsetStart(i, layer.insetStart) + layerDrawable.setLayerInsetEnd(i, layer.insetEnd) + } + } + layerDrawable.paddingMode = paddingMode + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + layerDrawable.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom) + if (paddingStart != DIMEN_UNDEFINED || paddingEnd != DIMEN_UNDEFINED) { + layerDrawable.setPaddingRelative( + paddingStart, + paddingTop, + paddingEnd, + paddingBottom + ) + } + } + + return layerDrawable + } + + internal class Layer(var drawable: Drawable) { + var gravity: Int = Gravity.NO_GRAVITY + var width: Int = -1 + var height: Int = -1 + var insetLeft: Int = 0 + var insetTop: Int = 0 + var insetRight: Int = 0 + var insetBottom: Int = 0 + var insetStart: Int = DIMEN_UNDEFINED + var insetEnd: Int = DIMEN_UNDEFINED + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/PathShapeDrawableBuilder.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/PathShapeDrawableBuilder.kt new file mode 100755 index 0000000..433b084 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/PathShapeDrawableBuilder.kt @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +import android.graphics.Path +import android.graphics.drawable.ShapeDrawable +import android.graphics.drawable.shapes.PathShape + +class PathShapeDrawableBuilder { + + private var path: Path? = null + private var pathStandardWidth: Float = 100f + private var pathStandardHeight: Float = 100f + private var width: Int = -1 + private var height: Int = -1 + + fun path(path: Path, pathStandardWidth: Float, pathStandardHeight: Float) = apply { + this.path = path + this.pathStandardWidth = pathStandardWidth + this.pathStandardHeight = pathStandardHeight + } + + fun width(width: Int) = apply { this.width = width } + fun height(height: Int) = apply { this.height = height } + fun size(size: Int) = apply { width(size).height(size) } + + fun build(custom: ((shapeDrawable: ShapeDrawable) -> Unit)? = null): ShapeDrawable { + val shapeDrawable = ShapeDrawable() + if (path == null || width <= 0 || height <= 0) { + return shapeDrawable + } + val pathShape = PathShape(path!!, pathStandardWidth, pathStandardHeight) + + shapeDrawable.shape = pathShape + shapeDrawable.intrinsicWidth = width + shapeDrawable.intrinsicHeight = height + if (custom != null) { + custom(shapeDrawable) + } + return shapeDrawable + } +} diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/RippleDrawableBuilder.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/RippleDrawableBuilder.kt new file mode 100755 index 0000000..6606d87 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/RippleDrawableBuilder.kt @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +import android.content.res.ColorStateList +import android.graphics.Color +import android.graphics.drawable.* +import android.util.StateSet + +class RippleDrawableBuilder : DrawableWrapperBuilder() { + + private var color: Int = Constants.DEFAULT_COLOR + private var colorStateList: ColorStateList? = null + private var radius: Int = -1 + + fun color(color: Int) = apply { this.color = color } + fun colorStateList(colorStateList: ColorStateList?) = + apply { this.colorStateList = colorStateList } + + fun radius(radius: Int) = apply { this.radius = radius } + + override fun build(): Drawable { + var drawable = this.drawable!! + val colorStateList = this.colorStateList ?: ColorStateList( + arrayOf(StateSet.WILD_CARD), + intArrayOf(color) + ) + + var mask = if (drawable is DrawableContainer) drawable.getCurrent() else drawable + if (mask is ShapeDrawable) { + val state = mask.getConstantState() + if (state != null) { + val temp = state.newDrawable().mutate() as ShapeDrawable + temp.paint.color = Color.BLACK + mask = temp + } + } else if (mask is GradientDrawable) { + val state = mask.getConstantState() + if (state != null) { + val temp = state.newDrawable().mutate() as GradientDrawable + temp.setColor(Color.BLACK) + mask = temp + } + } else { + mask = ColorDrawable(Color.BLACK) + } + + val rippleDrawable = RippleDrawable(colorStateList, drawable, mask) + setRadius(rippleDrawable, radius) + rippleDrawable.invalidateSelf() + drawable = rippleDrawable + return drawable + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/RotateDrawableBuilder.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/RotateDrawableBuilder.kt new file mode 100755 index 0000000..8b563cc --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/RotateDrawableBuilder.kt @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +import android.graphics.drawable.Drawable +import android.graphics.drawable.RotateDrawable + +class RotateDrawableBuilder : DrawableWrapperBuilder() { + + private var pivotX: Float = 0.5f + private var pivotY: Float = 0.5f + private var fromDegrees: Float = 0f + private var toDegrees: Float = 360f + + fun pivotX(x: Float) = apply { pivotX = x } + fun pivotY(y: Float) = apply { pivotY = y } + fun fromDegrees(degree: Float) = apply { fromDegrees = degree } + fun toDegrees(degree: Float) = apply { toDegrees = degree } + + override fun build(): Drawable { + val rotateDrawable = RotateDrawable() + drawable?.let { + setDrawable(rotateDrawable, it) + apply { + setPivotX(rotateDrawable, pivotX) + setPivotY(rotateDrawable, pivotY) + setFromDegrees(rotateDrawable, fromDegrees) + setToDegrees(rotateDrawable, toDegrees) + } + } + return rotateDrawable + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/ScaleDrawableBuilder.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/ScaleDrawableBuilder.kt new file mode 100755 index 0000000..14e0ddc --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/ScaleDrawableBuilder.kt @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +import android.graphics.drawable.Drawable +import android.graphics.drawable.ScaleDrawable +import android.view.Gravity + +class ScaleDrawableBuilder : DrawableWrapperBuilder() { + + private var level: Int = 10000 + private var scaleGravity = Gravity.CENTER + private var scaleWidth: Float = 0f + private var scaleHeight: Float = 0f + + fun level(level: Int) = apply { this.level = level } + fun scaleGravity(gravity: Int) = apply { this.scaleGravity = gravity } + fun scaleWidth(scale: Float) = apply { this.scaleWidth = scale } + fun scaleHeight(scale: Float) = apply { this.scaleHeight = scale } + + override fun build(): Drawable { + val scaleDrawable = ScaleDrawable(drawable, scaleGravity, scaleWidth, scaleHeight) + scaleDrawable.level = level + return scaleDrawable + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/StateListDrawableBuilder.kt b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/StateListDrawableBuilder.kt new file mode 100755 index 0000000..278c4f0 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/utils/drawable/drawabletoolbox/StateListDrawableBuilder.kt @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ +package com.fankes.miui.notify.utils.drawable.drawabletoolbox + +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.graphics.drawable.Drawable +import android.graphics.drawable.StateListDrawable +import android.util.StateSet + +class StateListDrawableBuilder { + + private var pressed: Drawable? = null + private var disabled: Drawable? = null + private var selected: Drawable? = null + private var normal: Drawable = ColorDrawable(Color.TRANSPARENT) + + fun pressed(pressed: Drawable?) = apply { this.pressed = pressed } + fun disabled(disabled: Drawable?) = apply { this.disabled = disabled } + fun selected(selected: Drawable?) = apply { this.selected = selected } + fun normal(normal: Drawable) = apply { this.normal = normal } + + fun build(): StateListDrawable { + val stateListDrawable = StateListDrawable() + setupStateListDrawable(stateListDrawable) + return stateListDrawable + } + + private fun setupStateListDrawable(stateListDrawable: StateListDrawable) { + pressed?.let { + stateListDrawable.addState(intArrayOf(android.R.attr.state_pressed), it) + } + disabled?.let { + stateListDrawable.addState(intArrayOf(-android.R.attr.state_enabled), it) + } + selected?.let { + stateListDrawable.addState(intArrayOf(android.R.attr.state_selected), it) + } + stateListDrawable.addState(StateSet.WILD_CARD, normal) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/fankes/miui/notify/view/MaterialSwitch.kt b/app/src/main/java/com/fankes/miui/notify/view/MaterialSwitch.kt new file mode 100644 index 0000000..ce22644 --- /dev/null +++ b/app/src/main/java/com/fankes/miui/notify/view/MaterialSwitch.kt @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2021. Fankes Studio(qzmmcn@163.com) + * + * This file is part of MIUINativeNotifyIcon. + * + * MIUINativeNotifyIcon is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * MIUINativeNotifyIcon is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file is Created by fankes on 2022/1/8. + */ + +@file:Suppress("SameParameterValue") + +package com.fankes.miui.notify.view + +import android.content.Context +import android.content.res.ColorStateList +import android.graphics.Color +import android.util.AttributeSet +import androidx.appcompat.widget.SwitchCompat +import com.fankes.miui.notify.utils.dp +import com.fankes.miui.notify.utils.drawable.drawabletoolbox.DrawableBuilder + +class MaterialSwitch(context: Context, attrs: AttributeSet?) : SwitchCompat(context, attrs) { + + private fun toColors(selected: Int, pressed: Int, normal: Int): ColorStateList { + val colors = intArrayOf(selected, pressed, normal) + val states = arrayOfNulls(3) + states[0] = intArrayOf(android.R.attr.state_checked) + states[1] = intArrayOf(android.R.attr.state_pressed) + states[2] = intArrayOf() + return ColorStateList(states, colors) + } + + init { + trackDrawable = DrawableBuilder() + .rectangle() + .rounded() + .solidColor(0xFF656565.toInt()) + .height(20.dp) + .cornerRadius(15.dp) + .build() + thumbDrawable = DrawableBuilder() + .rectangle() + .rounded() + .solidColor(Color.WHITE) + .size(20.dp, 20.dp) + .cornerRadius(20.dp) + .strokeWidth(2.dp) + .strokeColor(Color.TRANSPARENT) + .build() + trackTintList = toColors( + 0xFF656565.toInt(), + 0xFFCCCCCC.toInt(), + 0xFFCCCCCC.toInt() + ) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/dark_round.xml b/app/src/main/res/drawable/dark_round.xml new file mode 100755 index 0000000..ccc45c0 --- /dev/null +++ b/app/src/main/res/drawable/dark_round.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/green_round.xml b/app/src/main/res/drawable/green_round.xml new file mode 100755 index 0000000..5ac75d3 --- /dev/null +++ b/app/src/main/res/drawable/green_round.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/permotion_round.xml b/app/src/main/res/drawable/permotion_round.xml new file mode 100644 index 0000000..b7d8b2b --- /dev/null +++ b/app/src/main/res/drawable/permotion_round.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/red_round.xml b/app/src/main/res/drawable/red_round.xml new file mode 100755 index 0000000..2f8a503 --- /dev/null +++ b/app/src/main/res/drawable/red_round.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/white_round.xml b/app/src/main/res/drawable/white_round.xml new file mode 100755 index 0000000..8b43d04 --- /dev/null +++ b/app/src/main/res/drawable/white_round.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..1875ff8 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,448 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..7117e7c84f376521e64cf40cebc1aae81c6759b1 GIT binary patch literal 1528 zcmVhQYWil3(f!o|1Y|<8J8Lx#xOX-#Te15l;lzZCVwLrML+%Ng0qj!Ct zem{Hex#zAqhEYo`wbW8e-USR30Y%JAML{z0bB0xeygm&?~LCaGmtF)GKN&%4_dS0qDkXtj0Qa*E!pyi%aW}>(?qiQW))q& z$0up*EGNdGW0eGEx|*pyM`ID%$eS*tDO8dRVl%!GnYy{6fRS;G-Dvmsr()7u!; zfz0uapz1Wue#{z{pvDaCF0MfZ3#wVADZ{K`3A&iB-OV+qU_sTZH07986~sdoB!DVN z09B9xsvrRrA;|RMqj0M<9r{o00mnb5!P#^k1~2{$Jx4Y``^F{El5;=x8L`M)kRc8_ zw!Z<+<_q9)Ibd{jl!pi0wp(C3xeLq%3+c~`K)!+uvCvhP2kbz%A2B>UEH|=R3!kRj z5kNkIh!Eeuty@!pwfE360^%Wu-7jFun@6`D1j!3Beee);R}_Hlw^C^TV(IPo-;IZ1 zW1}Al!SRd?L)Z7~sXl@sc|pBLH^M0E<^sB`&0zj$K3GfAsPJMLZfO8x?gLamfsnkQ zp~mX5aIB*rESp{d+lf*txLEM8Y%flt`U!+&1+^DH2YuB$xU-NqoX72g&V9K=+Hoql zSnzDu@$H*be}RykAXDDM(D!Qzu!Fti?Bf|9kR5@p@^#!9i62}nI1k~PiQjJ^BqhkS z{xPusd2DRXp&-I~4t);xx`XsKk+2RscLwD59SF$?GUg_bGu2Ld)bJQMUj^M&h1C0E z8R=;QbH4aRqhthGx4jA;=O7h`&q#MGH_3XOc50h29vG;tq}Eiykc1#3S=ZR>4)_V= z2Xgq~2(q2{j$0v9+k@clZ6|A~7pVS&Aqhd|f+xrtr-=#_2)C_+jG`srxLzxGNP1z( zi0iJ%r}`E`5`x+`B$CNPQ>TaoceX)ql1O+CE!M^(hvK2zrTxb5R1sfFlpjY&glAKYkLd zn^U-3AUL{A>mCVf)c7KML0;?^4pZ$;2Fejc7MT2YCj(WG0IDDXR6znrKu|2Xy3PoE zfhrQmwR7CvN4ouqG3|oz^z81nP=P~+EEWfTuK?rw4^n+hglQFow@%%CRyu6Buq<~g zWHKd9t03o%Kj@GX#4|j^Efo2Eh0C-G>fDnJ-IbqAE)@mPTKE*zSGY{8AR)~83%JqH zv19cZmd(l3ep8901zESGkSp=N+gIxdnPUd)f28)CN+d1F_+A3^pWX}Xkd6B_!qxsS zSiX9h+HWe6v>*h37<0;qxnPz4E~3KBpSB*5eddQ17w zY8+oVfoC-u6+D746AG%C$Ox)m6H}t}2kMTcM(xI|VF@~#s#)W0>_0!9$Q8_jnXYE) zVEfYhaxiOs7Bh?QAzxTSs6z)*q7M5~#rrq^Z?XGKMVt6qNxn0Fcg%oUFcW559M9Z6K6Pjnu_%tY zhrH?u^9YX<=F1$+fLU}4bj-a>sE3xnTEsB3$Y`2PWJQxkwQ>eCa9NlTCgl(cZ7Tt_ e)KW_=S=9gF*pXgU?A18{0000Z{ppahH z!wVd*oW$7_UmaTWf>&3y_LuGF{leevdW^rHn^SD1f1m%4gU$D+GV|I$|N4JFavKlO zcG5tDmeFR@Q+}yFGXwmzpHInrx}+%N=5ij5(~o~Qss;w_d}ra*r^`N-{PA1RJS%1Ar@)MPYknrqDn6#Rx#V|h=%4?QQQvxswlB{8 z^ibR&#@D>J>)(o^n4dQ<$-Q(=t*z*dSDgQMedwpB;g^-)-tV6kd{929j-&U%zKz@V zF8=p-O_BZ{HUGN#6KCJ^U6>@_DSII;|Mu%Yo}Lr`EHi)J1r)0nwO(-6dhPW!+e%L8 z-TJp<-wI99->)P7n!Vo|xA|(9tm=&8?zj*foE zO5J@|?6969Jnh^;v7)1wu71)63NL&7Yw@FyE9_JKb?-{Oyr$}1edPM1rlvXFw;Q>F z9ouzHL)X_tOn)!Pe}t9QQg%D5=+Y#+rGMnK?<~E2O6%##9SanM3#$VhwVsqc-5zmQ z&UT?q(n`&4GqLTQqKlRCHtd`~R@}s4J z^y9LHPC92*KTbRsxhpZVs^R>#&-Kr9P4dLGj$PXG(B{XS6#MTr2S3TmycXUR2DI^L zM4j``zjKQHUt8bXQp4u>qh-y$9lk3RM2ob-%$@gZ-Hy8dc~|Q0^e>!|e?eZE#y9uw zzgvfrV#C{_?>}#Uxpba!mGSSmn%p~bAyc}3HhcnVOLMt z$c?=gr~O%LX52XA+P3s~<7^$?DIWr@_nkRz{OduK{L8&o>&&x`b>|#4f232-^f@m^ z-DJYw{k<=iJ+fNZ*yH9RDbd?uWFRG&nqZ=I>Oh9el*Wr48qA9Y1KHe^7x91;L{!bI zRxfjJtl9JEjDVrZ6sd&msrKQihBf_rY}d(49S9Qsbzf7HJO9|i9rIQgivF>D8kW&w z^nr1g%(B@It@o0jTFBh*e=o`YxN31)$dl6>KdG8XUY9maekmS%`rYXr_f|-X{^Wi7 zcGB~wJMJ+A*iEZbPhYsE`#rN!a;D#>@6+=Bo|zu}aj(NNoxd}?ThILYs;OX}wMlUH z|C?L>bNosESnKfYN=AFmyZPK78F`HN|6>(#;x%7UvusY_zTkV|a{cR>Nh<;v7#d#0 Xo4YS4Gd(;{9i-LM)z4*}Q$iB})@wmD literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..49d72a6aae12532aeaf472031624f61792ba6119 GIT binary patch literal 3466 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..bd49b5d33a932096007068bfe22216ae628b4aee GIT binary patch literal 1066 zcmV+_1l9YAP)MR$odf71N)FEbsTn)pgVMfC@88AQAkBlp`~=8 z3w@{{yFw6wiCvwWo0vMc)U>&_!_)iBopH|lp3MuKa~AA@A7|{m@ALlu@8#KHN2iNN z3+r#a5C$*8eDhRrc4lPl?0x6yguEOnpwXs?N>veb4Gark@CP4KyCefzImd;J$YPY$cPR^L05Rng&-Q%63xM0Pb;~ z4}kx-2bxYS0e^P~BUlbR6LhW+>KJI;n+@%EjzMqp_n@GFw;S4S?qP&R0uMHwQ_!He zf$$;q{|yTY_`Kk{br5hhXt8qO%F%fR4T>7D?V1KXpI> zES*~w1FcsrWVU-*QG{M+9k?HzVag{Bt{(nQ(79DH(D}BK5fp~3g6HvB=&pGd(FB%Q z+=6so5y~3q`SOYpB{ks(&y(|HC4}wNcP6kpVTr}x2|6c*!Upj0(xPd|N_ZPCE1e!~+lYw)10h@$`9$&=di-Ix+f+dhVE{n14 zm;z0wmIupauw))tz_bZsnZV|Yj6w!vu$4@PuJ`xD+oko|4yMfzP|pBj-#ruBZtRAZ zi<<{K(~(fufC9t~&n}(`Uu%3Y=S-lr7dO3E`!|l@-a8eiR$qu~V$P z;II=dHAM#Zf!y&^QR9onG6pc9@AXY$b$&`!Jx59+>4-+~ss+N>KR5$CUa!ALw2cmF zl#kHO5p#_R=0|Jw4?Y$cJf8~FI%^8kI`FC{!k8bo7(Dk^>mSZBB;fYJ_tudOV1ycs zCS)v3Ph7ImJZ9ypED_TcMl=?VotvJx6t$qHe#Hxc4L6u|3FPBg!Z?i?i&_ROUL1H> kK5)8GS`zWV#v?}J9|d<2apUR|tJ9k%BiV0{NCb+D!c!`r&i(q$y>f}q@$&~7B6h8Mm;1&$K7Q)ukDCLGMQdFu1!hgW zs-LP?r{F(xo8JDI@@ezhAFe;krMM?*t(Y+R)bwqS zel1G+^FRCg?Y`*`xhKxFFyjhP)Iaj-lxAwgPl?p5w%kydU zniTf(smvb}Jhcn$UL3rn`>uLTlKA;4vD4P>jMP19xsY2l+o@7s`$qHofFIR=ey-Ho zTp0Jl>F6%0)zc4FK6SB)m|%aq_h{upX3?yWpCVi{j!LI4|75W*;6TkB@m&EM`;NSN zT5$5xw=2&JZ20d#O^?>n_IA}jwf}UVX8W2Op|5uTxx@82;9%ZSt!Gbmzdf!Sn;Dtk zzc2C4?mx;v_c*)m7Ve5{dEZvS{HNU~zT?NMjh83g|1MX1xI*h3vt*Dn&;d3fvljvvPJ-rMpW|2T1S=F@tWLh4IU)z2Lvx{{DoyEbWTV|gjdS(d?MQaI?6wje=_Z0N zLSSt3T<9X5YEJOoXs`UxCZ^l2+~;=K3N^%iE~nBcNJ*>Q0_3@N(oHsuY`02+$WKk4 zN#wl&i$&=4uSSTlhDooF1IVIjkrW4+G^l- zDjNiOHGcJm+ZzEp<+;j6lbRQiI-yOT3Wse~2a{J3u=h)jl5bL-h$OMq8c!werE5f9 zg^%p}%I!8*oMnAQ%Ppj+HJBRDkf4N>m3I{21S`u`yhWMT2elj}(Z+oRl{2nDlT>ZS z)Sm3jvhl2T#{yQj=RH=l`3?5x!YAZ$dI%0DGnFEu#yJ{xY;}9e?a2;J=(N4sIFs3# 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..1a76053b1854c15eaa18ed62cf22c54945e92662 GIT binary patch literal 5001 zcmV;46L##0P)L3GduqOv#v2}TTou!SrLF6bN4=aNqye8cj_hrozF z5fp_%K?WQZcpxDAF31i^Cn1oqB@hHc5^CzNu1YR_J4>gRbO`7B{x3=2d#g_Ur|O(j z%k4@;~uPP+WDB~9K#Ni3lt*$QN()g8*`cv-tqHtIlK z%DP2IP=0nxiU^eA@57@F!It!}!4zLpf(n#`R}z_KF3(Dr%LMQ@`z*~|p+x29Huu^y zinT7(88#R?RHxr9Beo68$&lMnA~LD#IATk>4Z$~Tdv-m5GO7&3Kd&?f)d9Ldr|R@= zv?Bbh_&Yb%6h#UDh`N{}LA;e9`8r7AWZ4qvYA}QFI$3?p5LTT&f{vB?+lfz&MwGP`WDao{FI>bhg(PuNU+fq~#4#+NcwiJ>HIQ z_68_AgfPSj8n6>ZJ6QVa?W2KBpt$eMN-@bf8RkV*uBOt>s2cBO5bg;^AZP>H!rEue zmb`O9rwm$_G;@E8HD9+jiubHW1;uD!^9$N0du{a!QToWNbn{y_y}luRyt7~lg226rlR@&C1W6j$(kBQJJx$u~X z3R%xjH*ZmpZ>#XF32uZVW96;iJ+09wIdQv)3;;i=5?38Wk!cnWU_IXJV42n%R~g2{d7uBE6cs*@_c8JYAy#S z`$n7cmc;8Kl$<#&Y)RSb-+WG_nin?Npj!(N511<&Zu*vT#ZG0oWbsZ|lKTB2m1{eV z#qXzw6U)o(NbVcmNZvb-ki5)CN#0uzlbrvIA=%HjQs3_!5R}Ow>WbD5F(oUxtG9@N zvNKg1nw4%o##~RT_bnx>K#4y&`AKr&hrf}_zpW+LP97rH&z~gMFPtK!g<0gv@$KZ| z#;-}?r)k9ULX`UX`hvTnJ)=w~=EMaXlpNMe_`^PQXuZpNzn7Droe@Furw$;O_x(Sq zxPFaPR8-W0a#DK6Le4IHosN|Ds`Bas>?<4{E0YaLhAH5#-Ubj4?iia+R_TCTjFML0pl-H@(SBG+P^~6q+_jV6e`Hmtx)jA4(Niuv44jqmK;(;wA&5^X{ zpY!J4pFOT6IlpYOljK+7%F!(>XxrA~AlTes&nWr)oH%`ZaOu$8K=}T{DJHhLf&%SS z;yGlru)_9piqkWmBiD;gtB9;Ou9uRF8@{ZzzPf_)R)NXcs%Q0+!DXFefmq8}oL~$( zk!C*7(3wyElsKBrd`OB`%_gV*C!Pk{Dq_(4uTZz4BGE~dmz9$IX#-WdI0Vkw_GHuH zmmdld%ht886A9mcaE$5c2F?3vDtY>&p|p1wkc#qh0w0av&&+?h@}ASPhSO_hDgs@B zlI_cg<;AvYz3K=$X=U?*17l>eJYG8#oYoo(6tlNxG>9x{$R!6%pf2xUt0D$DefIcB zhD)0ksjj;Um@}Mwx2H-kM<8a$>k^IMP)^y2>>6jsVu<{lU^Hi^$tN2!_~uNypIkeA zOhrujl}l_UoBR3$}CV!Lg zNZsu47}KnV=>1rqIXxqhlbG`y)BrT#VhQ2*L%-BYDhyCCXAC(#bC~Lyt5LFRg<4m~ z!8qKMWZDxhN$l+%yKYEiKWh^V?XuG3BIU#G1cK?Ac@x-TS#9J4qW{go>O0UA+VaN(%Eq^1N=5xCSS$rhl69g>8SAkzmAe$SGXVd1>lTu=F7`27podx z8!l~L%ofhvF$t?gSs5w#`$)Ckjst<1&5D-~*1r#qRdGO(pWaC$_Gg}${enPyX=Yt; z)$%J#LyOnWRb6uxN(-||-aF1O%mG-UMj-xah~X>BF+1jd(|kZNMZW7$ioD9*2FM;4 zL5kOWs%msyQC@nD&XSWz{(twQJ@vZkx+`$;=Xo?f-L2BSKEUcIj<2juG^~?&Aiil? zg8$)@5G@5A87uE)54zC+C*OOF?M&G=+7VpdyOPZpkh0b#csqi!%NOWe<3Ch-*BhM6 zjY)>z9*U5#E`<3&l^YVPpMU8cC?88TXDJ_Y2hM)|8e4U=ZMY*SD>+Y2&q}7Fpg-Hy zvb|nkAk8iMaR$}X>5Z8xP%aUOHxD=EB**%<0@pXi0bzhS{X(PY?5%)5=(Y@~g!W$B zhSvvJim<#AO@sNkdIfWPz~swS+mi~gOlU{4>CCGS2X(B@0L{L5O5fo`s(a@EnC&|2 zekws-4>s3xCv_obzId6YrDxUm)Df6pfc)G^_p5Yv0hj@HjxZKyb`QNDT-!Ck{Jz>4 zdh;dmkez~@239#8%KK{ph$~({pIBbHhn;e`cIv3=p4x!*rQ$XJM=TRv-tz^R0d|it zmAun5`1v)wV{m@3Xe4O)YM{;4sRBDJLwPr|V zm(G!r9m`4nU!QWtW_(SkG{8H54CxN8?HXWaA6>M&T~N+z_qpBx4CQRE00BOSx+H9_ zV?|>eJxoQVm;s6l zN&b{Ssp@YCU?z;8>xLSBiwu;^;QHo?m~~wOMhMwIT3+qWrHH0#04znUOwg~R9AhTj zEYr$&l>suXLn3JB2-D}c4d6O}c(EAwUA%4)?an@(%H^odTUgQ#1g6 zt{!6em2%qx9A_#6uu^99lbX{X+RejEbKG+(B8+XKlwbQ@MVPCB)zQLF#@f-rv!Fay z92qNk0pkozYTg0%2951=UINzp*Cray_Kx!F z1rA3>){y(xAU=OINcd{^h;IkzrsKt9kBx%#FjDl>OjQtNz)_U-U$SHEs^=OQqW5Fr zZRX>lv%wwb(6QbxB*7XBbaIf?aqBSSVOEjT^Mbk|=ap!7PN!UXvZ1V$rnKv6IvJz7 z-y0w{UcP_Ea4bB4O}un<%Kd8)p8@Td1zSw(6*3Nf4Z|zTQ?6*@z2wY-SJ`p&OWT%` zvtLhQ^9tMhyaasX-9+AaFz^*{M#&EWhc=u#EO$nPux+%c<%9K0;EKHQ+s_*kV%G~D zbZ&p`3UI|at6Sb*i}=KavmDkOt@rKv%P?b>m}c85(i9=Mu(}?-rM>RXhrm@&V?8pT z8l+i|RucZ9L90pKgGcTeWny1kn&lx^@uDtu$+^W04(OYn_%3(yhX7KLSuwG6LF)Hsj65`A=!r zQZ8b^3FpTCcB2dBj!vQ0ctFS5eJkSio12mm1o;^K3*+?LeA&D0QY+4h%l*DRVQ*7* zF-u1JGcv$eid`13-y+;m)~y{A;PWfc^C|h;{e7iw;DB?%-m|`mDK`o`LBRt~Yl<$5 z2kKTU1G8c?r_n zg2;_+8`Ibz@_e*u2c6~4eu4#DeC0qJ-gYe4c$|D8%m{6R*bu}>=rpajX4@y z^BHra91Wt^v)D#|-!Rm0{VzRPs@Vx`e0SCKCS3Ly;(jM7Oh z>Cby8VkUOiOk6Qoe|XPG6Z@Y7%n)!(UX-$OUGQC>EYL#NWrOrbUg#S9D%yay@HPeV zHhLZTO2I_LuXUg#o0>~e^!Iyp{=VJ+)>}Js)eu7gG9?&-HuMHRInW?6qSD7(Ums#e zNU({%@>xT{lwR7|&>6a;4QLD6#M{;=gt;V&;5J$bujXSkbn4bJu+OYMy3c7NPotN? zHHjF(+!O7I?lcC{XB?= zj*Z6G*GGgQ0+3I)@RuTJZY@SdM-W5NwMVOfxbd+eFaEWcX8I?6L;tZbPW$se2OIXR z9%4AY<~d{j#w26mrX^o%=p@OkQGCTyN@Ck?jkJ6@6nFo&7T0Nk4FX! z1n@gP3k&vp1o!ZJv0MP3jxtbITa=ADxPQl%A?j}QKHgbDLY8j1&+G;Lxi8{>C-j6NP8+EGvVSg)&h#uLE_V&L&NKb)qx~)>`~20x`?R zNrUiU$-rU=B~=N0hHJP7_u?7;EXue|xDx`>gi!$Yy%v&{R3*gc;y&@5SIfTv0;`31 TMQl%?00000NkvXXu0mjf1%=il literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/about.png b/app/src/main/res/mipmap-xxhdpi/about.png new file mode 100644 index 0000000000000000000000000000000000000000..12a0dda1890ae23287760900f7e40a3a2867489e GIT binary patch literal 4357 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..8c5551fb0c13cc90f5d39d1e0692f64295118f99 GIT binary patch literal 3296 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 C$~k`k literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..a9dd417b273c1802e04f92d8102969dc3a6d0d8b GIT binary patch literal 2780 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..7b4943a4f1e5d66331e1ab7179c79986648b86fc GIT binary patch literal 7798 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/qr_pay.png b/app/src/main/res/mipmap-xxhdpi/qr_pay.png new file mode 100755 index 0000000000000000000000000000000000000000..2036bf97e658b8d11ecad84ebdc5fc64261db8d1 GIT binary patch literal 206098 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 z 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 z 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/restart.png b/app/src/main/res/mipmap-xxhdpi/restart.png new file mode 100644 index 0000000000000000000000000000000000000000..8b556fec5e5a682e92d47073e8c5a0577306d0f4 GIT binary patch literal 4298 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 U9X52}eog@9a7$RV2`={k02$0v5dZ)H literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/succcess.png b/app/src/main/res/mipmap-xxhdpi/succcess.png new file mode 100644 index 0000000000000000000000000000000000000000..a3ced9bc9c26ff39f66f6167b2e62e25eeb55c5a GIT binary patch literal 4948 zcmWkyc{tQv6#mha`4r9YMHn)ZMq{UpArb}|vJ6f3EFt?Y`<7)8WhbFVNCpkr8QX{m zpMA@&kTpxn`b~e_d!Og7=e*~h``&Y6bhXu4n7Nq&0ASI$i^bF1w7&&>j$X?%xX%Ls zJC6od$-viq-HheKBUSI)OVmsejcb);$fb`KqD7C6QKtBRPG3sj`8*i3<1#Z2KWF6o zxIBZ{`YE*K=)-xAhxza-T6z(#Pl=GX8||=y9nd} z3ef!wekukW5o0)lspo-*dN_q_y#Tc$USq5HgoIKz4yCV$RL@k$n-w29i`p5K1kw zt@x9ivd39ax=VAo$t_%1SeU704d|W;wPse)FPmFpc&&ofA9hI9@VTpFMj6PzHuC%T z?~DaZkTSGiI4)9hZzPv7w1^*EFtPs2;KziguAz`sZE3fT6FbqD3n2F}Tw#AXrh-i# zcJMCOsxU+m+si=V{5A3dLk{d}^#IQ=$re~grbt`yg}j(+5x(rupBJQ|R81iZ`FO`| ze)bDc!BqT39y_zgFA`~N$}n~8C}O^{fYC184EvDw#L2OGaz?7ilk4VJ zdhwBy)~&A}kKK_ExG$7i(qp^xA&SqrUzw@gyeyXk)Zz?m9Zo1vm~9bT(jD&TYU7eq zA?CDJ; zO;IADhM(lh3~)j6>nDZUWdFvKDt<6ErRojgp${07;AvSreBkj?^es*V4!Y8_ragG4 zSXc%$g370+5gd!4e-XdX;qKw5o&NvA z4Ae%2oG82ZXiBR!_q2Yt@nu-m+)e1L%x+#?hvEcXv#-v5Cj+q2dGDX&q|L+4AqqCm za70sy$$!DdRToD&V@pcPFnpsp%*j^i5Qz%|pk}Xza)qH3i_Nge}YQY+PzCqp&ZL zY&5KXGTZ>xjBts^hvmu^>v*PNO*XnzlaQZ3Y|dt_uaUr8Q@S(zGU5b#J-UC@b3^}} zC`Ld2*p8666Ur_~HWMkI#nbBepq@=R&K-S$AmZb=%|n=w<#ahe1@poQVcv<{G@p5=4tnr15e_$h#Dq&;Xu`te!(^V+nR@MHMDp?|4G}j_sTG|Aj_sTQx z3Eg8IU-o<#|8CFO7GtT>i&l6}bhM?$SsE46a)|lc%0;iO)v$CL?+03Eko3YE17!r z)WkdFUJ*5LT&q$l3>70SslpF(BxGejXIjmH>3FQl7TYEGju(*NTYC9JOnLW@ZAANa zPM#6*7vEJy@LJ=FLb6mv`gU9vDspRhKkVI5ou&5`CwNM%i1&hvWvE)`8pSmiL<1$yjC;xl|RM8{P}16B5)-df#8I^?IboLo{T zVm=1OXn%(skKL^mh$U9a+b`LuuoQ&?+V2c({U)p8NoD2c#y;G7Y3QB znk-@KI8<*)b`2PA&IG_dd|Ra9c0q@Stqc@j!BbX+Ac8S_7%#3!)5~kfp;Di2OdpO{ zWy|LILkA2LzRGkx?eTNfoy_CYap>O{C)Tr=8FN{qOrq{yxqXlk3}B zHd+VPSks=uxex%@7hKOs)qK|6n2Kw6L}!U3hnuxC2L}glL4O{-m6J-k^*p9staB~a zNmCmP=}!-6%#o3n-V4#lg7NSiR^swodG`A0^HL^hnsaoNM!C>d_xtVu(9K(czukgH zOU)E@n73xGd@!H)RD=blJXPPOFzhK8v?K2-2p#tJ zdL(k_j^sELY7$+5x)_@Lv3saIj`NWL5<3Fv|Pl?S8 zpwmpTyVl72g@cwdn=~7+x$%B_Yb$#5h_-kb{7B|Gop_?m%br|BP;dWyXCwGqzr($O zuEz^)c4aX2MV$p$jdx16>$dUkYE*p+K7_llEh=eM1H1b+#rX4x*=Qpx)HU{Lbd2|5 z8Bc7W5)PYwNLA$Ggtc|HyAJr}^}3Gy)$AeAToQBXvcOn~lJR1q_R#TgV1{IEIRC7| zgT(H6&p_Ly!xNWmcW<*NWAlw0*LNW=i7vl_PTMq?@+~}$VbE24*J08`pU2rL!x2f@ zSf^9S!Bqf)8pHk@FS&XYjmNESm?$k;DGHgNU$R zOmF9Gi$7?TL!XC>oe3Q~)XYYErc6Bwcid)If;2Qvx$HPTr(F~DINRWl%Abf~39|oF zpF#9lUY0QZC9f~0FV6;QQ7uT0Bcgv(X9l@_306BlOID-2FqEhuOX)_Gn$iB<|g$frl9>Wx%*jzAu0YDp?dI zM-_%1H}4-yBh4u?@uuv!qIGD<*k4>q7K9_xSRM?7Yqm zc~5x>!*Ol>J17o^1$ZCv8>aseZX4UA97Ve1Nhfbu>!85Cidv*ZjXt+K3ZnJ*r^#{bBZ zy9|a;gMp)6yH@=w?FUxfhFDfi%ea2hN97Du zTnsLjnYo71E*W;{`RpkxPH8nNCfk3Pf~P~m#cyw&1)BuNG$-ElNVFxpv4=<_rV03e z^{=HvNY6~3eu+*Xq7SJdhk-1j7;Ac9k>#6HNw9OVM6~;1g*iE}N&lMrssJDxq%fD{xu$7{V!p=n6un z3L1%^3v$NG?KP{(cZ3@RI*LQ(-o=V=a3={YQaZo+P2a`V{bLmAuvrc2+c$l>l z7tiF-Wdg%d=+x5`e4m(&zJL{l4GywXom~T0i97@$W-6X(kzbg?Y}z{wY`dS3Jy-qI zQPO;sm4-BCaSMm`iDwQOC3YN)MBmbs?XY)*b_4%5s*mS}5O2p`jf~ z$dF1?5uo~A=dZ{%WDaxns-HT)P{5UNkG!?lwh8GM1APDB3FA%a++l@KcLUs?T=#%P zq9MFCO5v-esYrBbFa)&eP(AtZ?f`{GoBw1w+QYxlbn_7#G*v@ko(el%bI|WNdPEPtAMhf#Y8wdl`XW z0k?ZE`;y@rkl$QQzyn;+t(YyXOatPjjp`qkSPQc(a-b6UEz~8@!ry_$ocpgJak=8` zoK@B^o!!OL@dat9tM{!U7yT8X_NuhO=8jk-eL#^vzu{`wayX)hU07h$8*6Y7kzmj0 z{J!+2)zhBQYAyQiwWU~^LCDzxR&AqoIk{ckm&cvY4Ce;tBZ1~Jgp=gOFukddzH#0t zeXGbDoJ{|nzW1vUdl*MtE~zuJOjj27w2BNUy}>Z+f{?REJzblrPzfalOG!z2(AjqW zztzk%Q{tsw)4<7S&w(+S-AvY%@UDHv=6ubmQjPA9Uy1GK${seI+@}ZN3-2Z?+CQpE zyvzykZ=ANBvVQsaUZa8V11pvb73NU)sJr#0Y3a%XBj@3SnoX+^u>@P|?6b)U)AJrW zOiCYQixg8!H6o$H0-OOPsoH7MBve@Od|27l`R@Wbx%P90*C{pZYbp;*2xV82vPSIV zHLVl^_5J+){T)rO?9o`n_zf|Xb3Ty|x_|%DS*&-of2!vZfMRZJ-B~6)Slo<+3{2%}<_cTw-pW-q9X?%k-B^_RE)6ObU6i zi8OA08axHoQTvRD1YUn>nHhk2vHGLAKrKEq`}=Q;F!#*V*d5QcU|4^E5FSJG<)5&_ zyfO)YJ}3BUy$h=ADo+zXORLt+9bJFW&IeJC|s8P$Kc=-F*MG>u!P#U-f*@fPsapL1x zMf!Jj&E8l&V4*>T9-xmaBBV5ulQTLx&T LYGX^4EyDi?Ys6*r literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/warn.png b/app/src/main/res/mipmap-xxhdpi/warn.png new file mode 100644 index 0000000000000000000000000000000000000000..5e87f03a3793efdfc9b4de7b3a3d04c375aa22e3 GIT binary patch literal 4102 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 B)j|LO literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..746ffe1bdd0babf12ef106bb448bc34c64bb0aa9 GIT binary patch literal 4610 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 b{DCwU77ri-uMyAwb^vV+1NAahbohS&b%B-y literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..bab54717d0505a3abd2f3045f0fb94e851dd3ea0 GIT binary patch literal 4104 zcmd^Ci96J5`~OaJq7IWHlSC>-Wvn9(BTAN2M94CQrkJ5DVH!&e+Ej?jHeV`P8XQX) zjAbk#>z7H^v80oH9bHEJDuzId;f>u?|rW8xvu-VKlgKA_x(Kg_B_5|V~P4z z{#O71P-lNPvj+e~>Ce4QOvLH1(K-$QQtY#4r!R)OFHHDAM8`1k06Bjo@?J}m)`j9r zxpymKPd)4M!<_f&zdKNMu1GgB-}|G~mp7;HP9q&g%`RElYY(Z=(XH{ON8eSw^Z9t! z=}yIiiW@citlpizv~wpS><4BKc98+U1O-8SoL44Kcx2O)^lAMSnQz$1gE(FbmBC{u zkuCovD;h-as`DBmC3Lbhc&QLhXQ|gUne%sq2J|A+K$C1kIs@lJ>3nSjp(tCga2@;5 z%cjfqX^jT?GQ0@E5VnkL0!8SPz2G4zFGr7grK5;lbR%;gfIgDZb=A(qz%8Rjl{cSw zxi2&Y78FBt2oK&H8%6-Q6qKhU{1uu8!?Cu$v%1}%mmz&@8Zn`}$oGm85Z^&6vxM(M z?O3U`+`M@m0nzxmfg!_EcpE_r)3XksC|^?j#&N*Qp+RTrq?Ac zENZ~&0o%`SZ&F@_AlP{TOlVL>(ukaG?n$fX;937XT7WIFfoAZ>NhN^pirzc{#$hM- zUPraq)4w#TTi1)zPvD#{8!%=I-tFG)xzW<}v)df$F6*^*v`p;wxK!vTr4 zT_8@!M80_4A!~fw`kN1}0No1BSH?0Eht>*ikxA6>4M6h3vA@8#dJiHmrHldo+xq7b zG3pYl2kjb_xE|}xXB}1YA~4qTfE*q3xe%KvSG<6oW}C_&6h;2b#8w6t)AK-216DH#2k>|$6>E16;EM{F*u^Vc+=r-)A~bPX}kW?uD0sr zN}290O-^Ovw2Sy$TPPx=B2tDTEA$v$-a>d){%HU16=4C>%lIjWW?;he0b8))RgKsy zt99a@C2^gfq>0YQn7fkKTYY1dCzuCJwt{Od|}YEhBiaCpyB8Ff-p@Bjg+OMI=(7dog9GCfq&Sl?!5 zV!($Ib}F?m1{0Kly7lS;*1@lu%-RAnL&rO+=L}Wpu52e8PAGy~<#CRPlevr|FPXE2p+=@v_~s<A_EuV0nGvc8y2W~Xk``8X zf=6GR*U=6C3h1UuFL!8&1b|K-pRpS=>C%I=cRY6eK&z_ z=I3IPwptIVVmD=`CN7kZ=SGCX<~_XBl)0W$uB>nSU-m0HL>KI#%uJmCuO!y8FV-kj zj+~I1$K;-eP%C9lWgfADHH{)+sujil+^&Tq(n%hpnfaO z(9UEzSuttzC^s)F&!UU4*%f4W*$XnS_YEWd6uK&)iqVeazw$d-$G8?rJWg`C)G%?! zUo3h#dj!>^jTvuS3`c3nmRB!4Gf?44fvT2spUUg>7*R8oDPnvMEQhv1B1K74RiD#) zd`&?Aym0&tUU4LhIxT$-T<-YjIzXL7h^fbo{(v&uL-U$72lwcRQ`|kk)hAKDob@HIa%R6FtG{ zjxUr;ut`R?UZ;kSdlcBQthsO+x?E!rArR@dW?@`4dm?gXnt4vqi{-Zf$nrjTPgc`&B)03$Ng$C_|S0BQwe}|GBe}eYt!gU>`xY>-a7t#km_0()w zz~ViDYi1nBaLdsDW~dF5z~8v1Q$lFyM##AA-Fj5%x|$y8F}A`M|(lpjtypJV^@ zZ7dw*vay~Fwd6dMroexeO_Xh+x!_Bkhz&;eZFDQJqA&7SHMJ*e<^w(Q1zn4yOYC`$ zqS`F`tD#em=9Ou`6=EcKasEb4l|muvzv$Q`8qy=?P~gdoAv{oSjHj_ z9KP?UAD#8cQ1~y2oJ!vt6E8SSgUyev#tQwDO(9<&f^l_ITeOzT1L_a+LLENPIZ9qm zdL9AZuu{ep=`8rQoQ_igWHcp)mnsH*yF>+HU12KVB0NNE5PlBMEvgQ3a9P?ZmyL0c z8r@xq53thR=Wc9*Hc?usdyNmYgoz8k0iq~!7n1yaV@EMZGs`y&U|L|>X0R(<($|t_ z4^qR-L`~@4PD=Q*vGis=wR19cMhv#X)HiN^;dATm>^3*H#l+k~2cLxyQ;r)^%kkf9 zQrMLqrR3ZGrXwmUYycnE4|Aa({0M~D5ed#LXlXGw28A6b2a*~M+VXVEbZ~+4^pUhD zMkdb;a!=Yuzw5llkI7F7^RwRoo? z#9ASAnjGJsDvRrCeRz;6ucm)A>LfShw$lhew?tR+EaoO4wVs0Ufx4b~R{r^-qL(gc z;MI4>`R-p*%BzSqx<9_~T>&vodWb~Io8$VrX%hv^)d6WylPj0C;@J91>%Yeo{^6Qt zpv}mpt^*DSxkG!Q;&BPSu&;>FXg+XWySulS*gjM4)?MP{Bv+%tI7mJvnlb3-(6thl zJ_nwZXOL?=tE&|2)W3NZV!cRu<}YWNFRbiRW{&qTT=_=IRsFsQx{Wu1w{jDl?42J> zxavHxuVr%Y%C|4bKK7Fj#G${|K{m0sM`5&Kho~gWkC-MG{6#ce?*r?{%Ek|IJrnQc zloYz8f06~?n)?|NubHnV>t$Zv)1^)1Zkz#y*&4ONEQkX-w<<7>AV?P8ggCqO&Ld^f z9IBl@%1w!K?ft$Sn^!fuH^@Rym|@pwRi|?!X`B}3JV2sEklY~ctX~ME2Vzw HdA z*-9T&0Pd;qsKeT2Tmt*5br{^$WRtWgZ1_%sr780AA3Be-UB9ShzTP;%&|`SvdVzSn zH(|=DVY0SJ(F&cUcY9Ef{xn9|g31lI)z?;s*AQ36RlY9b0PkxWqG=tl%d% zi8iRrRshzFgC(+UMnZ#gbIZrOLawzlm!tslBg3mxqYyc#GTANH)n;v)Pu=obnS1{U z`+j#!l4$G>{4?lKQ@t^K0{6oF2>YV?~(%*(<@MTTxY|C@S*G;-uN zr__4n11lygLK;^^RYH)?p_^B(Hn;7Zka3y^NO<(SMoAgH81B9W;dU)-`L+$W%d&gp zmzYbUacCRLw?kKp5d1()&r@DbtIia;PX{GQbIZDe0>#9j63ks^3pe`jF=@C_feeA< zxywk4TXjr_r7+Nt`JeyODYZjRL_N}m=iZ=e!Zo1uDCZ)d9bu5#zI}m*Y|8d@z=Nw7 z$FAQF3jH6{$y37*cV4RDC7xq!0$?ubrDCy(dMK~)l8*U4WBq?P%A$6T@_Mnqd(BD6 z0!lqO1mmY+CD)Cng3gdA!WaK=+@G)J(U;>}U?_&a3J`qD`_`_(%XEbLd#v4(_E;WO z1CT59)e|*$qtS=x=~>7TlwBYLO(Vn>jvBY973Z-$`8dTka1U{)B2fyc?`&g)!zth# z);1W|Zxo?UwxQ`rHI+zHoM#zWebQp$ZG3=+6w$wvrOIm#;OvY(`xJG(5n2YBq+Yh` ui<-l{251bMN8I5bCH0@%`TtIga5oXu0NFaTJVn)?zMeI=F)J}8-2FGXr7vCp literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..5f516e28d5c66637e550c62a369f1b0600a073e0 GIT binary patch literal 11512 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 av41!|E^fKc%)Xvz1}Ms^$<#`j1pgnG>M8^P literal 0 HcmV?d00001 diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..347904a --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..bdc04db --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #656565 + #656565 + #656565 + #656565 + #656565 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..ddc0b5f --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #E06818 + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..ae9b782 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + MIUI 原生通知图标 + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..0f08029 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/app/src/test/java/com/fankes/miui/sbnvicon/ExampleUnitTest.kt b/app/src/test/java/com/fankes/miui/sbnvicon/ExampleUnitTest.kt new file mode 100644 index 0000000..44c2844 --- /dev/null +++ b/app/src/test/java/com/fankes/miui/sbnvicon/ExampleUnitTest.kt @@ -0,0 +1,17 @@ +package com.fankes.miui.notify + +import org.junit.Test + +import org.junit.Assert.* + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +class ExampleUnitTest { + @Test + fun addition_isCorrect() { + assertEquals(4, 2 + 2) + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..185268c --- /dev/null +++ b/build.gradle @@ -0,0 +1,32 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + ext.kotlin_version = "1.6.10" + repositories { + google() + maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } + maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' } + maven { url "https://www.jitpack.io" } + mavenCentral() + } + dependencies { + classpath "com.android.tools.build:gradle:7.0.4" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' } + maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' } + maven { url "https://www.jitpack.io" } + mavenCentral() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..98bed16 --- /dev/null +++ b/gradle.properties @@ -0,0 +1,21 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app"s APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn +android.useAndroidX=true +# Automatically convert third-party libraries to use AndroidX +android.enableJetifier=true +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..dbe6c02 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Jan 24 04:31:03 CST 2022 +distributionBase=GRADLE_USER_HOME +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip +distributionPath=wrapper/dists +zipStorePath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..4f906e0 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..107acd3 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/keystore/public b/keystore/public new file mode 100644 index 0000000000000000000000000000000000000000..4d53697180a3e756629a6c854a2726af6bb19e3e GIT binary patch literal 2423 zcmY+EXEYlM8^@C%B37wVxusDw#0oA!sid`9*Qj;XirI=$t2HilBU+d+vS&6JYC0n>iSoDFMCbdi}?IIw%NINs= zWAwAucqu`vsm<1N>C2Ey!w0HC4yLM-;Z^$yx6uZCK*_D4Jf|yV@ZFfI({JPO&18oW z(qx8>sT}1LHc(I$8F)p+B52{57WE$gZVEaC%+8rh@2v}WxaY2fBX14(%|0Q0>%;yQ zFbGl0_0*QS+jyns!jtS_E$)n|Vi6RxVc^#c#MOiSR5btm3cSI#(D)o|kKjJ19dCFx zW21eyN6$|?1j_gAuCI~2x|AAkJ4gYyPKOvYm@m`Bohn!C)vJA3E*p zO9FZ?q{W!iUzk4;k{ayugC`voS@-+-_|H9i_2<+(Rif_!xacepiVim6T>vC>&c0T2 zK2GsC_+TnU6je#uH)fKgxQv^36v>NHznyxOw{>4mHZlpE7-sBKFHGRtARJiK=jtT-mPudMgl z#pSpVH+H%+*~<7e#P(6aW8*xEvtd|y3TeipmzqpodZmS72Ep}WdmXq)+kHGJVYY3gpH877O{7(NYT^{tdOb=&m0E^KYWwet*wjYTJhU zNyVzF@#nX#0ZiNnnD_Fr2*Vs9-<0s~FnjMsX)nEywbI@}*$ZoJuXWQ4l%NQJ%-ZQm zTeVq@<+;$uFVVEcSL{@cw$juVZEUshD6_`*~PM1gSU&78Qg58(!ZYzkU@fZ*%H zt+(_#?N7Vjp|jhHsJGm{Dp(nQ+-<6@*;$k>=Nxu)UM@mH{j-}~Ho;Q%{pzp*-Rg0b zYaja3Q+d=v#@-n+%x0a!8ev99;BR*}s-JB(?9t9;-!K=N3}OEEMR6uXRI zt-#AvN<(ZTc6n5fVtsKfFoG05Gu&6>A$#gt!#73G1>Cf&4^4`E|K4FU`^JybiCG7B zZ!LmRXobQvlR8$rIqMo9UK!173%DWGYU6C_x?X(R^Q{3aIa#8A6%H?uJ^B;^v(C31 z4MJ;bKtd(<_Piu_Iyqo7122pWfa82?M$}*G)LPyV(>gSDLOGqpKLgw?rq2bvRcQTm zMI$c$ZpxleFjoj!D}gth_3DO+|9E8&;hiUR(5cqUvlbpX!V#8dO{VQsRQm^Yh%fhT zi5TmwmO{6$VZ9*l+@vnzb1+cH-qLolhafWHI8UISX*lHZyQN`BL<&eAGx=$z ziwEI&G?s+?xsI8EiO&AE-W2EMzUbNq*3ScVaL3)+xwOLB{(YQmmR`8pV*^Q}kLJla zwlVhyD|Rb3sW ztcW7A6#QLc2j>!5QcqA42naY?kN!!3|1vE2KZZ3p5OV&p#_qjd)zRT?gk;$HPh|er zummEDDYD*yjzWba@@W*aN0TFoKCRX|NWS|z-0W=-Rl7-9VJyvjsteiv0TlwOd^6kX?ADh432D7EB{dg{YP?;4pqs1e>lXadtXl{dx(mbLv5{n&l!m8dQL29_k zq4Bp=!52Qo`{LY5>rbWouG`>_b90QHEpK!dQ68~e`_&0bC%rw|Ri}EXNQQIOja!=s zib_BuWssV1<=vwBMdv0pnuCIRJbe?q-282A>+_wsl&ieoDTUKE1&Dy|omc#G)c)(EXKj4X^1VinF{ z=9o)xDc$L55+&SGBJTO+EkJEb3)B^^l2Z=6w&Bu2HG0^uq^z3FDMPE?^34cwzX+zv zhsP~a&o4LH8I;q#5BdAfD=_AFDxkN{^ja%bFKw#O#t(ghyAXfoaY<~lP*90TmP@Cm zP}YA;-Pl2ezcG(SGjBE!oL-%e#JBOnH@bCQ&UrscYJ@JmJIKcDudE=zySvr!`%S*n zT_rgcl&g{{$D>&61EN6m!+ROSDWuECp7Vs%H9dlZ1FuNn{E$qjwkorv>8aMp>erDV zi~iS=8X+N%5(5luWHa?&08CJqQDP_#Fq;ey3kb#rU=?8Q>XtQyc8hXjejT+Feq!`B hAF_W!`#ztGeSnqRt)CY5$8sro?gF