(R.id.config_list_no_data_view).apply {
+ text = if (iconAllDatas.isEmpty()) "噫,竟然什么都没有~\n请点击右上角同步按钮获取云端数据" else "噫,竟然什么都没找到~"
+ isVisible = iconDatas.isEmpty()
+ }
}
/**
@@ -205,8 +282,8 @@ class ConfigureActivity : BaseActivity() {
* @return [Array]
*/
private val iconDatas
- get() = if (filterText.isBlank()) IconPackParams.iconDatas
- else IconPackParams.iconDatas.filter {
+ get() = if (filterText.isBlank()) iconAllDatas
+ else iconAllDatas.filter {
it.appName.lowercase().contains(filterText.lowercase()) || it.packageName.lowercase().contains(filterText.lowercase())
- }.toTypedArray()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/fankes/miui/notify/utils/ClientRequestTool.kt b/app/src/main/java/com/fankes/miui/notify/utils/ClientRequestTool.kt
new file mode 100644
index 0000000..d8039e7
--- /dev/null
+++ b/app/src/main/java/com/fankes/miui/notify/utils/ClientRequestTool.kt
@@ -0,0 +1,110 @@
+/*
+ * MIUINativeNotifyIcon - Fix the native notification bar icon function abandoned by the MIUI development team.
+ * Copyright (C) 2019-2022 Fankes Studio(qzmmcn@163.com)
+ * https://github.com/fankes/MIUINativeNotifyIcon
+ *
+ * This software is non-free but opensource software: you can redistribute it
+ * and/or modify it under the terms of the GNU Affero General Public License
+ * as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ *
+ * This software 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
+ * Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * and eula along with this software. If not, see
+ *
+ *
+ * This file is Created by fankes on 2022/2/25.
+ */
+@file:Suppress("TrustAllX509TrustManager", "CustomX509TrustManager")
+
+package com.fankes.miui.notify.utils
+
+import android.app.Activity
+import com.highcapable.yukihookapi.hook.log.loggerD
+import okhttp3.*
+import java.io.IOException
+import java.security.SecureRandom
+import java.security.cert.X509Certificate
+import javax.net.ssl.*
+
+/**
+ * 网络请求管理类
+ */
+object ClientRequestTool {
+
+ /**
+ * 发送 GET 请求内容并等待
+ * @param context 实例
+ * @param url 请求地址
+ * @param it 回调 - ([Boolean] 是否成功,[String] 成功的内容或失败消息)
+ */
+ fun wait(context: Activity, url: String, it: (Boolean, String) -> Unit) {
+ OkHttpClient().newBuilder().apply {
+ SSLSocketClient.sSLSocketFactory?.let { sslSocketFactory(it, SSLSocketClient.trustManager) }
+ hostnameVerifier(SSLSocketClient.hostnameVerifier)
+ }.build().newCall(
+ Request.Builder()
+ .url(url)
+ .get()
+ .build()
+ ).enqueue(object : Callback {
+ override fun onFailure(call: Call, e: IOException) {
+ context.runOnUiThread { it(false, e.toString()) }
+ }
+
+ override fun onResponse(call: Call, response: Response) {
+ val bodyString = response.body?.string() ?: ""
+ context.runOnUiThread { it(true, bodyString) }
+ }
+ })
+ }
+
+ /**
+ * 自动信任 SSL 证书
+ *
+ * 放行全部加密 SSL 请求
+ */
+ object SSLSocketClient {
+
+ /**
+ * 格式化实例
+ * @return [SSLSocketFactory] or null
+ */
+ val sSLSocketFactory
+ get() = safeOfNull {
+ SSLContext.getInstance("TLS").let {
+ it.init(null, arrayOf(trustManager), SecureRandom())
+ it.socketFactory
+ }
+ }
+
+ /**
+ * 使用的实例
+ * @return [HostnameVerifier]
+ */
+ val hostnameVerifier get() = HostnameVerifier { _, _ -> true }
+
+ /**
+ * 信任管理者
+ * @return [X509TrustManager]
+ */
+ val trustManager
+ get() = object : X509TrustManager {
+
+ override fun checkClientTrusted(chain: Array?, authType: String?) {
+ loggerD(msg = "TrustX509 --> $authType")
+ }
+
+ override fun checkServerTrusted(chain: Array?, authType: String?) {
+ loggerD(msg = "TrustX509 --> $authType")
+ }
+
+ override fun getAcceptedIssuers() = arrayOf()
+ }
+ }
+}
\ 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
index ff1095e..38976f6 100644
--- a/app/src/main/java/com/fankes/miui/notify/utils/DialogBuilder.kt
+++ b/app/src/main/java/com/fankes/miui/notify/utils/DialogBuilder.kt
@@ -26,8 +26,6 @@ package com.fankes.miui.notify.utils
import android.app.AlertDialog
import android.content.Context
-import android.graphics.Color
-import android.graphics.drawable.GradientDrawable
import android.util.DisplayMetrics
import android.view.LayoutInflater
import android.view.View
@@ -109,14 +107,7 @@ class DialogBuilder(private val context: Context) {
internal fun show() = instance?.create()?.apply {
val dm = DisplayMetrics()
(context.getSystemService(Context.WINDOW_SERVICE) as WindowManager).defaultDisplay.getMetrics(dm)
- customLayoutView?.let { setView(it.apply { minimumWidth = round(dm.widthPixels / 1.3).toInt() }) }
- 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)
- })
+ customLayoutView?.let { setView(it.apply { minimumWidth = round(x = dm.widthPixels / 1.3).toInt() }) }
+ setDefaultStyle(context = this@DialogBuilder.context)
}?.show()
}
\ No newline at end of file
diff --git a/app/src/main/java/com/fankes/miui/notify/utils/SystemUITool.kt b/app/src/main/java/com/fankes/miui/notify/utils/SystemUITool.kt
index 9f39e87..f5a7f2a 100644
--- a/app/src/main/java/com/fankes/miui/notify/utils/SystemUITool.kt
+++ b/app/src/main/java/com/fankes/miui/notify/utils/SystemUITool.kt
@@ -58,4 +58,13 @@ object SystemUITool {
if (YukiHookModuleStatus.isActive())
context.snake(msg = "设置需要重启系统界面才能生效", actionText = "立即重启") { restartSystemUI(context) }
else context.snake(msg = "模块没有激活,更改不会生效")
+
+ /**
+ * 显示更新数据后需要重启系统界面的 [Snackbar]
+ * @param context 实例
+ */
+ fun showNeedUpdateApplySnake(context: Context) =
+ if (YukiHookModuleStatus.isActive())
+ context.snake(msg = "数据已更新,请重启系统界面使更改生效", actionText = "立即重启") { restartSystemUI(context) }
+ else context.snake(msg = "模块没有激活,更改不会生效")
}
\ No newline at end of file
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
index d102ba0..db1cd12 100644
--- a/app/src/main/java/com/fankes/miui/notify/utils/Utils.kt
+++ b/app/src/main/java/com/fankes/miui/notify/utils/Utils.kt
@@ -25,6 +25,7 @@
package com.fankes.miui.notify.utils
import android.app.Activity
+import android.app.AlertDialog
import android.content.Context
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
@@ -32,6 +33,7 @@ import android.content.res.Configuration
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Color
+import android.graphics.drawable.GradientDrawable
import android.os.Build
import android.provider.Settings
import android.util.Base64
@@ -215,6 +217,21 @@ val ByteArray.bitmap: Bitmap get() = BitmapFactory.decodeByteArray(this, 0, size
*/
val String.bitmap: Bitmap get() = unbase64.bitmap
+/**
+ * 设置对话框默认风格
+ * @param context 使用的实例
+ */
+fun AlertDialog.setDefaultStyle(context: Context) =
+ window?.setBackgroundDrawable(
+ GradientDrawable(
+ GradientDrawable.Orientation.TOP_BOTTOM,
+ intArrayOf(Color.WHITE, Color.WHITE)
+ ).apply {
+ shape = GradientDrawable.RECTANGLE
+ gradientType = GradientDrawable.LINEAR_GRADIENT
+ cornerRadius = 15.dp(context)
+ })
+
/**
* 获取系统 Prop 值
* @param key Key
diff --git a/app/src/main/res/layout/activity_config.xml b/app/src/main/res/layout/activity_config.xml
index b2d2b45..3bbd983 100644
--- a/app/src/main/res/layout/activity_config.xml
+++ b/app/src/main/res/layout/activity_config.xml
@@ -52,7 +52,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
- android:text="..."
+ android:text="适配列表正在等待装载"
android:textColor="@color/colorTextDark"
android:textSize="12sp" />
@@ -61,7 +61,7 @@
android:id="@+id/config_title_up"
android:layout_width="22dp"
android:layout_height="22dp"
- android:layout_marginEnd="10dp"
+ android:layout_marginEnd="5dp"
android:src="@mipmap/ic_page_top"
android:tint="@color/colorTextGray"
android:tooltipText="滚动到顶部" />
@@ -70,7 +70,7 @@
android:id="@+id/config_title_down"
android:layout_width="22dp"
android:layout_height="22dp"
- android:layout_marginEnd="17dp"
+ android:layout_marginEnd="15dp"
android:src="@mipmap/ic_page_bottom"
android:tint="@color/colorTextGray"
android:tooltipText="滚动到底部" />
@@ -83,6 +83,15 @@
android:src="@mipmap/ic_filter"
android:tint="@color/colorTextGray"
android:tooltipText="按条件过滤" />
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 77ab1e8..b419011 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -280,6 +280,18 @@
android:textColor="@color/colorTextGray"
android:textSize="15sp" />
+
+