diff --git a/app/src/main/java/com/fankes/coloros/notify/const/ConstFactory.kt b/app/src/main/java/com/fankes/coloros/notify/const/ConstFactory.kt index 58a49be..8edc341 100644 --- a/app/src/main/java/com/fankes/coloros/notify/const/ConstFactory.kt +++ b/app/src/main/java/com/fankes/coloros/notify/const/ConstFactory.kt @@ -50,6 +50,9 @@ object IconRuleSourceSyncType { /** GitHub Raw (代理 - 7ED Services) */ const val GITHUB_RAW_PROXY_2 = 1000 + /** GitHub Raw (自定义) */ + const val GITHUB_RAW_PROXY = 4000 + /** GitHub Raw (直连) */ const val GITHUB_RAW_DIRECT = 2000 diff --git a/app/src/main/java/com/fankes/coloros/notify/data/ConfigData.kt b/app/src/main/java/com/fankes/coloros/notify/data/ConfigData.kt index c5e5c23..baaa1c1 100644 --- a/app/src/main/java/com/fankes/coloros/notify/data/ConfigData.kt +++ b/app/src/main/java/com/fankes/coloros/notify/data/ConfigData.kt @@ -100,6 +100,9 @@ object ConfigData { /** 通知图标优化名单同步地址 */ val ICON_RULE_SOURCE_SYNC_CUSTOM_URL = PrefsData("_rule_source_sync_way_custom_url", "") + /** 通知图标优化名单同步镜像地址 */ + val ICON_RULE_SOURCE_SYNC_PROXY_URL = PrefsData("_rule_source_sync_way_proxy_url", "") + /** 当前实例 - [Context] or [PackageParam] */ private var instance: Any? = null @@ -386,4 +389,14 @@ object ConfigData { set(value) { putString(ICON_RULE_SOURCE_SYNC_CUSTOM_URL, value) } + + /** + * 通知图标优化名单同步镜像地址 + * @return [String] + */ + var iconRuleSourceSyncProxyUrl + get() = getString(ICON_RULE_SOURCE_SYNC_PROXY_URL) + set(value) { + putString(ICON_RULE_SOURCE_SYNC_PROXY_URL, value) + } } \ No newline at end of file diff --git a/app/src/main/java/com/fankes/coloros/notify/utils/tool/IconRuleManagerTool.kt b/app/src/main/java/com/fankes/coloros/notify/utils/tool/IconRuleManagerTool.kt index 0e8f1a4..8c42a9d 100644 --- a/app/src/main/java/com/fankes/coloros/notify/utils/tool/IconRuleManagerTool.kt +++ b/app/src/main/java/com/fankes/coloros/notify/utils/tool/IconRuleManagerTool.kt @@ -110,6 +110,7 @@ object IconRuleManagerTool { title = "同步列表" var sourceType = ConfigData.iconRuleSourceSyncType var customUrl = ConfigData.iconRuleSourceSyncCustomUrl + var proxyUrl = ConfigData.iconRuleSourceSyncProxyUrl binding.sourceUrlEdit.apply { if (customUrl.isNotBlank()) { setText(customUrl) @@ -117,29 +118,48 @@ object IconRuleManagerTool { } doOnTextChanged { text, _, _, _ -> customUrl = text.toString() } } + binding.sourceUrlEditProxy.apply { + if (proxyUrl.isNotBlank()) { + setText(proxyUrl) + setSelection(proxyUrl.length) + } + doOnTextChanged { text, _, _, _ -> proxyUrl = text.toString() } + } binding.sourceFromTextLin.isVisible = sourceType == IconRuleSourceSyncType.CUSTOM_URL + binding.sourceFromTextLinProxy.isVisible = sourceType == IconRuleSourceSyncType.GITHUB_RAW_PROXY binding.sourceTravelerLin.isVisible = sourceType != IconRuleSourceSyncType.CUSTOM_URL binding.sourceRadio0.isChecked = sourceType == IconRuleSourceSyncType.GITHUB_RAW_PROXY_1 binding.sourceRadio1.isChecked = sourceType == IconRuleSourceSyncType.GITHUB_RAW_PROXY_2 binding.sourceRadio2.isChecked = sourceType == IconRuleSourceSyncType.GITHUB_RAW_DIRECT - binding.sourceRadio3.isChecked = sourceType == IconRuleSourceSyncType.CUSTOM_URL + binding.sourceRadio3.isChecked = sourceType == IconRuleSourceSyncType.GITHUB_RAW_PROXY + binding.sourceRadio4.isChecked = sourceType == IconRuleSourceSyncType.CUSTOM_URL binding.sourceRadio0.setOnClickListener { binding.sourceFromTextLin.isVisible = false + binding.sourceFromTextLinProxy.isVisible = false binding.sourceTravelerLin.isVisible = true sourceType = IconRuleSourceSyncType.GITHUB_RAW_PROXY_1 } binding.sourceRadio1.setOnClickListener { binding.sourceFromTextLin.isVisible = false + binding.sourceFromTextLinProxy.isVisible = false binding.sourceTravelerLin.isVisible = true sourceType = IconRuleSourceSyncType.GITHUB_RAW_PROXY_2 } binding.sourceRadio2.setOnClickListener { binding.sourceFromTextLin.isVisible = false + binding.sourceFromTextLinProxy.isVisible = false binding.sourceTravelerLin.isVisible = true sourceType = IconRuleSourceSyncType.GITHUB_RAW_DIRECT } binding.sourceRadio3.setOnClickListener { + binding.sourceFromTextLin.isVisible = false + binding.sourceFromTextLinProxy.isVisible = true + binding.sourceTravelerLin.isVisible = true + sourceType = IconRuleSourceSyncType.GITHUB_RAW_PROXY + } + binding.sourceRadio4.setOnClickListener { binding.sourceFromTextLin.isVisible = true + binding.sourceFromTextLinProxy.isVisible = false binding.sourceTravelerLin.isVisible = false sourceType = IconRuleSourceSyncType.CUSTOM_URL } @@ -148,7 +168,8 @@ object IconRuleManagerTool { confirmButton { ConfigData.iconRuleSourceSyncType = sourceType ConfigData.iconRuleSourceSyncCustomUrl = customUrl - sync(context, sourceType, customUrl, callback) + ConfigData.iconRuleSourceSyncProxyUrl = proxyUrl + sync(context, sourceType, customUrl, proxyUrl, callback) } cancelButton() neutralButton(text = "自定义规则") { @@ -207,11 +228,13 @@ object IconRuleManagerTool { context: Context, sourceType: Int = ConfigData.iconRuleSourceSyncType, customUrl: String = ConfigData.iconRuleSourceSyncCustomUrl, + proxyUrl: String = ConfigData.iconRuleSourceSyncProxyUrl, callback: () -> Unit ) { when (sourceType) { IconRuleSourceSyncType.GITHUB_RAW_PROXY_1 -> onRefreshing(context, SYNC_PROXY_1_URL, callback) IconRuleSourceSyncType.GITHUB_RAW_PROXY_2 -> onRefreshing(context, SYNC_PROXY_2_URL, callback) + IconRuleSourceSyncType.GITHUB_RAW_PROXY -> onRefreshing(context, "$proxyUrl/$SYNC_DIRECT_URL", callback) IconRuleSourceSyncType.GITHUB_RAW_DIRECT -> onRefreshing(context, SYNC_DIRECT_URL, callback) IconRuleSourceSyncType.CUSTOM_URL -> if (customUrl.isNotBlank()) diff --git a/app/src/main/res/layout/dia_source_from.xml b/app/src/main/res/layout/dia_source_from.xml index d05428f..bae3064 100644 --- a/app/src/main/res/layout/dia_source_from.xml +++ b/app/src/main/res/layout/dia_source_from.xml @@ -49,6 +49,13 @@ android:id="@+id/source_radio_3" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:text="GitHub Proxy (自定义)" + app:buttonTint="@color/colorPrimaryAccent" /> + + @@ -69,6 +76,22 @@ android:singleLine="true" /> + + + + + - \ No newline at end of file +