diff --git a/app/src/main/java/io/nekohasekai/sagernet/ui/SettingsPreferenceFragment.kt b/app/src/main/java/io/nekohasekai/sagernet/ui/SettingsPreferenceFragment.kt index d2831ff..118b176 100644 --- a/app/src/main/java/io/nekohasekai/sagernet/ui/SettingsPreferenceFragment.kt +++ b/app/src/main/java/io/nekohasekai/sagernet/ui/SettingsPreferenceFragment.kt @@ -18,10 +18,7 @@ import io.nekohasekai.sagernet.ktx.* import io.nekohasekai.sagernet.utils.Theme import io.nekohasekai.sagernet.widget.AppListPreference import moe.matsuri.nb4a.Protocols -import moe.matsuri.nb4a.ui.ColorPickerPreference -import moe.matsuri.nb4a.ui.LongClickMenuPreference -import moe.matsuri.nb4a.ui.MTUPreference -import moe.matsuri.nb4a.ui.SimpleMenuPreference +import moe.matsuri.nb4a.ui.* class SettingsPreferenceFragment : PreferenceFragmentCompat() { @@ -113,9 +110,10 @@ class SettingsPreferenceFragment : PreferenceFragmentCompat() { val requireTransproxy = findPreference(Key.REQUIRE_TRANSPROXY)!! val transproxyPort = findPreference(Key.TRANSPROXY_PORT)!! val transproxyMode = findPreference(Key.TRANSPROXY_MODE)!! - val logLevel = findPreference(Key.LOG_LEVEL)!! + val logLevel = findPreference(Key.LOG_LEVEL)!! val mtu = findPreference(Key.MTU)!! + logLevel.dialogLayoutResource = R.layout.layout_loglevel_help logLevel.setOnPreferenceChangeListener { _, _ -> needRestart() true diff --git a/app/src/main/java/moe/matsuri/nb4a/ui/LongClickListPreference.kt b/app/src/main/java/moe/matsuri/nb4a/ui/LongClickListPreference.kt new file mode 100644 index 0000000..d89d52a --- /dev/null +++ b/app/src/main/java/moe/matsuri/nb4a/ui/LongClickListPreference.kt @@ -0,0 +1,28 @@ +package moe.matsuri.nb4a.ui + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import androidx.preference.ListPreference +import androidx.preference.PreferenceViewHolder +import io.nekohasekai.sagernet.R + +class LongClickListPreference +@JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyle: Int = R.attr.dropdownPreferenceStyle +) : ListPreference(context, attrs, defStyle, 0) { + private var mLongClickListener: View.OnLongClickListener? = null + + override fun onBindViewHolder(holder: PreferenceViewHolder) { + super.onBindViewHolder(holder) + val itemView: View = holder.itemView + itemView.setOnLongClickListener { + mLongClickListener?.onLongClick(it) ?: true + } + } + + fun setOnLongClickListener(longClickListener: View.OnLongClickListener) { + this.mLongClickListener = longClickListener + } + +} diff --git a/app/src/main/java/moe/matsuri/nb4a/ui/MTUPreference.kt b/app/src/main/java/moe/matsuri/nb4a/ui/MTUPreference.kt index b3f14e9..bf48c07 100644 --- a/app/src/main/java/moe/matsuri/nb4a/ui/MTUPreference.kt +++ b/app/src/main/java/moe/matsuri/nb4a/ui/MTUPreference.kt @@ -5,7 +5,7 @@ import android.util.AttributeSet import android.view.View import android.view.inputmethod.EditorInfo import android.widget.EditText -import androidx.core.content.res.TypedArrayUtils +import androidx.preference.ListPreference import androidx.preference.PreferenceViewHolder import com.google.android.material.dialog.MaterialAlertDialogBuilder import io.nekohasekai.sagernet.R @@ -13,11 +13,13 @@ import io.nekohasekai.sagernet.R class MTUPreference @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyle: Int = R.attr.dropdownPreferenceStyle -) : SimpleMenuPreference(context, attrs, defStyle, 0) { +) : ListPreference(context, attrs, defStyle, 0) { + init { setSummaryProvider { value.toString() } + dialogLayoutResource = R.layout.layout_mtu_help } override fun onBindViewHolder(holder: PreferenceViewHolder) { diff --git a/app/src/main/res/layout/layout_loglevel_help.xml b/app/src/main/res/layout/layout_loglevel_help.xml new file mode 100644 index 0000000..87934db --- /dev/null +++ b/app/src/main/res/layout/layout_loglevel_help.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_mtu_help.xml b/app/src/main/res/layout/layout_mtu_help.xml new file mode 100644 index 0000000..9aaf590 --- /dev/null +++ b/app/src/main/res/layout/layout_mtu_help.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2144dcb..ec87a22 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -511,5 +511,7 @@ Anyone can write advanced plugins, which can control NekoBox. please download an Show group name in in notification Reset Connections Remove duplicate servers + Long press the preference to set custom MTU. + Long press the preference to set the buffer size. \ No newline at end of file diff --git a/app/src/main/res/xml/global_preferences.xml b/app/src/main/res/xml/global_preferences.xml index 5ce9c99..91c1913 100644 --- a/app/src/main/res/xml/global_preferences.xml +++ b/app/src/main/res/xml/global_preferences.xml @@ -74,7 +74,7 @@ app:summary="@string/show_direct_speed_sum" app:title="@string/show_direct_speed" app:useSimpleSummaryProvider="true" /> -