From 5bbf40c784cdcad23a2738cc8f3e5640ad005244 Mon Sep 17 00:00:00 2001 From: yuhan6665 <1588741+yuhan6665@users.noreply.github.com> Date: Fri, 11 Sep 2020 21:30:08 -0400 Subject: [PATCH] Grey out per-app proxy in proxy only mode --- .../com/v2ray/ang/ui/SettingsActivity.kt | 93 +++++++++---------- .../values-sw360dp-v13/values-preference.xml | 6 ++ .../src/main/res/values-zh-rCN/strings.xml | 5 + .../src/main/res/values-zh-rTW/strings.xml | 6 ++ V2rayNG/app/src/main/res/values/strings.xml | 5 + .../app/src/main/res/xml/pref_settings.xml | 2 +- 6 files changed, 66 insertions(+), 51 deletions(-) create mode 100644 V2rayNG/app/src/main/res/values-sw360dp-v13/values-preference.xml diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt index 4fef00c8..f36b9c12 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SettingsActivity.kt @@ -1,15 +1,10 @@ package com.v2ray.ang.ui -import android.content.SharedPreferences import android.os.Bundle -import android.preference.* -import com.v2ray.ang.AngApplication +import android.support.v7.preference.* import com.v2ray.ang.R import com.v2ray.ang.AppConfig -import com.v2ray.ang.extension.defaultDPreference -import com.v2ray.ang.extension.onClick import com.v2ray.ang.util.Utils -import org.jetbrains.anko.act import org.jetbrains.anko.defaultSharedPreferences import org.jetbrains.anko.startActivity import org.jetbrains.anko.toast @@ -50,18 +45,18 @@ class SettingsActivity : BaseActivity() { supportActionBar?.setDisplayHomeAsUpEnabled(true) } - class SettingsFragment : PreferenceFragment(), SharedPreferences.OnSharedPreferenceChangeListener { - val perAppProxy by lazy { findPreference(PREF_PER_APP_PROXY) as CheckBoxPreference } - val sppedEnabled by lazy { findPreference(PREF_SPEED_ENABLED) as CheckBoxPreference } - val sniffingEnabled by lazy { findPreference(PREF_SNIFFING_ENABLED) as CheckBoxPreference } - val proxySharing by lazy { findPreference(PREF_PROXY_SHARING) as CheckBoxPreference } - val domainStrategy by lazy { findPreference(PREF_ROUTING_DOMAIN_STRATEGY) as ListPreference } - val routingMode by lazy { findPreference(PREF_ROUTING_MODE) as ListPreference } + class SettingsFragment : PreferenceFragmentCompat() { + private val perAppProxy by lazy { findPreference(PREF_PER_APP_PROXY) as CheckBoxPreference } + private val sppedEnabled by lazy { findPreference(PREF_SPEED_ENABLED) as CheckBoxPreference } + private val sniffingEnabled by lazy { findPreference(PREF_SNIFFING_ENABLED) as CheckBoxPreference } + private val proxySharing by lazy { findPreference(PREF_PROXY_SHARING) as CheckBoxPreference } + private val domainStrategy by lazy { findPreference(PREF_ROUTING_DOMAIN_STRATEGY) as ListPreference } + private val routingMode by lazy { findPreference(PREF_ROUTING_MODE) as ListPreference } - val forwardIpv6 by lazy { findPreference(PREF_FORWARD_IPV6) as CheckBoxPreference } - val enableLocalDns by lazy { findPreference(PREF_LOCAL_DNS_ENABLED) as CheckBoxPreference } - val domesticDns by lazy { findPreference(PREF_DOMESTIC_DNS) as EditTextPreference } - val remoteDns by lazy { findPreference(PREF_REMOTE_DNS) as EditTextPreference } + private val forwardIpv6 by lazy { findPreference(PREF_FORWARD_IPV6) as CheckBoxPreference } + private val enableLocalDns by lazy { findPreference(PREF_LOCAL_DNS_ENABLED) as CheckBoxPreference } + private val domesticDns by lazy { findPreference(PREF_DOMESTIC_DNS) as EditTextPreference } + private val remoteDns by lazy { findPreference(PREF_REMOTE_DNS) as EditTextPreference } // val autoRestart by lazy { findPreference(PREF_AUTO_RESTART) as CheckBoxPreference } @@ -69,31 +64,31 @@ class SettingsActivity : BaseActivity() { // val socksPort by lazy { findPreference(PREF_SOCKS_PORT) as EditTextPreference } // val httpPort by lazy { findPreference(PREF_HTTP_PORT) as EditTextPreference } - val routingCustom: Preference by lazy { findPreference(PREF_ROUTING_CUSTOM) } + private val routingCustom: Preference by lazy { findPreference(PREF_ROUTING_CUSTOM) } // val donate: Preference by lazy { findPreference(PREF_DONATE) } // val licenses: Preference by lazy { findPreference(PREF_LICENSES) } // val feedback: Preference by lazy { findPreference(PREF_FEEDBACK) } // val tgGroup: Preference by lazy { findPreference(PREF_TG_GROUP) } + private val mode: Preference by lazy { findPreference(AppConfig.PREF_MODE) } + private fun restartProxy() { - Utils.stopVService(activity) - Utils.startVService(activity) + Utils.stopVService(requireContext()) + Utils.startVService(requireContext()) } private fun isRunning(): Boolean { return false //TODO no point of adding logic now since Settings will be changed soon } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) + override fun onCreatePreferences(bundle: Bundle?, s: String?) { addPreferencesFromResource(R.xml.pref_settings) - var app = activity.application as AngApplication perAppProxy.setOnPreferenceClickListener { if (isRunning()) { - Utils.stopVService(activity) + Utils.stopVService(requireContext()) } - startActivity() + activity?.startActivity() perAppProxy.isChecked = true true } @@ -110,7 +105,7 @@ class SettingsActivity : BaseActivity() { proxySharing.setOnPreferenceClickListener { if (proxySharing.isChecked) - toast(R.string.toast_warning_pref_proxysharing) + activity?.toast(R.string.toast_warning_pref_proxysharing) if (isRunning()) restartProxy() true @@ -127,10 +122,11 @@ class SettingsActivity : BaseActivity() { true } - routingCustom.onClick { + routingCustom.setOnPreferenceClickListener { if (isRunning()) - Utils.stopVService(activity) - startActivity() + Utils.stopVService(requireContext()) + activity?.startActivity() + false } forwardIpv6.setOnPreferenceClickListener { @@ -146,7 +142,7 @@ class SettingsActivity : BaseActivity() { } - domesticDns.setOnPreferenceChangeListener { preference, any -> + domesticDns.setOnPreferenceChangeListener { _, any -> // domesticDns.summary = any as String val nval = any as String domesticDns.summary = if (nval == "") AppConfig.DNS_DIRECT else nval @@ -155,7 +151,7 @@ class SettingsActivity : BaseActivity() { true } - remoteDns.setOnPreferenceChangeListener { preference, any -> + remoteDns.setOnPreferenceChangeListener { _, any -> // remoteDns.summary = any as String val nval = any as String remoteDns.summary = if (nval == "") AppConfig.DNS_AGENT else nval @@ -164,6 +160,11 @@ class SettingsActivity : BaseActivity() { true } + mode.setOnPreferenceChangeListener { _, newValue -> + updatePerAppProxy(newValue.toString()) + true + } + // donate.onClick { // startActivity() // } @@ -203,10 +204,9 @@ class SettingsActivity : BaseActivity() { override fun onStart() { super.onStart() - - perAppProxy.isChecked = defaultSharedPreferences.getBoolean(PREF_PER_APP_PROXY, false) - remoteDns.summary = defaultSharedPreferences.getString(PREF_REMOTE_DNS, "") - domesticDns.summary = defaultSharedPreferences.getString(PREF_DOMESTIC_DNS, "") + updatePerAppProxy(activity?.defaultSharedPreferences?.getString(AppConfig.PREF_MODE, "VPN")) + remoteDns.summary = activity?.defaultSharedPreferences?.getString(PREF_REMOTE_DNS, "") + domesticDns.summary = activity?.defaultSharedPreferences?.getString(PREF_DOMESTIC_DNS, "") if (remoteDns.summary == "") { remoteDns.summary = AppConfig.DNS_AGENT @@ -218,24 +218,17 @@ class SettingsActivity : BaseActivity() { // socksPort.summary = defaultSharedPreferences.getString(PREF_SOCKS_PORT, "10808") // lanconnPort.summary = defaultSharedPreferences.getString(PREF_HTTP_PORT, "") - - defaultSharedPreferences.registerOnSharedPreferenceChangeListener(this) } - override fun onStop() { - super.onStop() - defaultSharedPreferences.unregisterOnSharedPreferenceChangeListener(this) - } - - override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String?) { - when (key) { -// PREF_AUTO_RESTART -> -// act.defaultDPreference.setPrefBoolean(key, sharedPreferences.getBoolean(key, false)) - - PREF_PER_APP_PROXY -> - act.defaultDPreference.setPrefBoolean(key, sharedPreferences.getBoolean(key, false)) + private fun updatePerAppProxy(mode: String?) { + val preference = activity?.defaultSharedPreferences ?: return + if (mode == "VPN") { + perAppProxy.isEnabled = true + perAppProxy.isChecked = preference.getBoolean(PREF_PER_APP_PROXY, false) + } else { + perAppProxy.isEnabled = false + perAppProxy.isChecked = false } } } - } diff --git a/V2rayNG/app/src/main/res/values-sw360dp-v13/values-preference.xml b/V2rayNG/app/src/main/res/values-sw360dp-v13/values-preference.xml new file mode 100644 index 00000000..c19ba30b --- /dev/null +++ b/V2rayNG/app/src/main/res/values-sw360dp-v13/values-preference.xml @@ -0,0 +1,6 @@ + + + + false + 0dp + diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml index 03079878..2393ffa6 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -186,4 +186,9 @@ 代理共享已启用,请确保处于受信网络 配置格式错误 + + VPN + 仅代理 + + diff --git a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml index 3c36272e..1385760e 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -187,4 +187,10 @@ 其他設備可以使用socks/http協定通過您的IP地址連接到代理\nHttp 代理: http://您的ip:10809\nSocks 代理: socks(4/5)://您的ip:10808\n僅在受信任的網路中啟用以避免未經授權的連接 代理共享已啟用,請確保處於受信網路 配置格式錯誤 + + + VPN + 僅代理 + + diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index 753db002..9b63540d 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -188,4 +188,9 @@ Proxy sharing enabled\nMake sure you are in a trusted network Config malformed + + VPN + Proxy only + + diff --git a/V2rayNG/app/src/main/res/xml/pref_settings.xml b/V2rayNG/app/src/main/res/xml/pref_settings.xml index c52d1b09..021594a4 100644 --- a/V2rayNG/app/src/main/res/xml/pref_settings.xml +++ b/V2rayNG/app/src/main/res/xml/pref_settings.xml @@ -88,7 +88,7 @@