From 0f3e0a0ea21a5ceb345f1f1fe938b0ab436fc43a Mon Sep 17 00:00:00 2001
From: 2dust <31833384+2dust@users.noreply.github.com>
Date: Wed, 9 Apr 2025 10:47:35 +0800
Subject: [PATCH] Optimize and improve RoutingSettingActivity
---
.../v2ray/ang/ui/RoutingSettingActivity.kt | 30 ++++++++++++-------
.../res/layout/activity_routing_setting.xml | 25 +++++++++-------
2 files changed, 34 insertions(+), 21 deletions(-)
diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt
index 104e5049..e585cff8 100644
--- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt
+++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt
@@ -7,8 +7,6 @@ import android.os.Bundle
import android.util.Log
import android.view.Menu
import android.view.MenuItem
-import android.view.View
-import android.widget.AdapterView
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AlertDialog
import androidx.lifecycle.lifecycleScope
@@ -67,15 +65,9 @@ class RoutingSettingActivity : BaseActivity() {
mItemTouchHelper = ItemTouchHelper(SimpleItemTouchHelperCallback(adapter))
mItemTouchHelper?.attachToRecyclerView(binding.recyclerView)
- val found = Utils.arrayFind(routing_domain_strategy, MmkvManager.decodeSettingsString(AppConfig.PREF_ROUTING_DOMAIN_STRATEGY) ?: "")
- found.let { binding.spDomainStrategy.setSelection(if (it >= 0) it else 0) }
- binding.spDomainStrategy.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
- override fun onNothingSelected(parent: AdapterView<*>?) {
- }
-
- override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
- MmkvManager.encodeSettings(AppConfig.PREF_ROUTING_DOMAIN_STRATEGY, routing_domain_strategy[position])
- }
+ binding.tvDomainStrategySummary.text = getDomainStrategy()
+ binding.layoutDomainStrategy.setOnClickListener {
+ setDomainStrategy()
}
}
@@ -98,6 +90,22 @@ class RoutingSettingActivity : BaseActivity() {
else -> super.onOptionsItemSelected(item)
}
+ private fun getDomainStrategy(): String {
+ return MmkvManager.decodeSettingsString(AppConfig.PREF_ROUTING_DOMAIN_STRATEGY) ?: routing_domain_strategy.first()
+ }
+
+ private fun setDomainStrategy() {
+ android.app.AlertDialog.Builder(this).setItems(routing_domain_strategy.asList().toTypedArray()) { _, i ->
+ try {
+ val value = routing_domain_strategy[i]
+ MmkvManager.encodeSettings(AppConfig.PREF_ROUTING_DOMAIN_STRATEGY, value)
+ binding.tvDomainStrategySummary.text = value
+ } catch (e: Exception) {
+ Log.e(AppConfig.TAG, "Failed to set domain strategy", e)
+ }
+ }.show()
+ }
+
private fun importPredefined() {
AlertDialog.Builder(this).setItems(preset_rulesets.asList().toTypedArray()) { _, i ->
AlertDialog.Builder(this).setMessage(R.string.routing_settings_import_rulesets_tip)
diff --git a/V2rayNG/app/src/main/res/layout/activity_routing_setting.xml b/V2rayNG/app/src/main/res/layout/activity_routing_setting.xml
index 6c3d7001..d79b4c84 100644
--- a/V2rayNG/app/src/main/res/layout/activity_routing_setting.xml
+++ b/V2rayNG/app/src/main/res/layout/activity_routing_setting.xml
@@ -18,30 +18,35 @@
android:orientation="vertical">
+ android:background="?attr/selectableItemBackground"
+ android:clickable="true"
+ android:focusable="true"
+ android:gravity="center|start"
+ android:orientation="vertical"
+ android:padding="@dimen/padding_spacing_dp16">
+ android:text="@string/routing_settings_domain_strategy"
+ android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />
-
+ android:maxLines="1"
+ android:textAppearance="@style/TextAppearance.AppCompat.Small" />