diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt index b09b2a0f..f4c1148c 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt @@ -27,6 +27,7 @@ import android.support.v4.view.GravityCompat import android.support.v7.app.ActionBarDrawerToggle import android.support.v7.widget.helper.ItemTouchHelper import android.util.Log +import com.v2ray.ang.BuildConfig import com.v2ray.ang.dto.EConfigType import com.v2ray.ang.extension.defaultDPreference //import com.v2ray.ang.InappBuyActivity @@ -36,6 +37,7 @@ import java.util.concurrent.TimeUnit import com.v2ray.ang.helper.SimpleItemTouchHelperCallback import com.v2ray.ang.util.AngConfigManager.configs import kotlinx.coroutines.* +import libv2ray.Libv2ray class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedListener { companion object { @@ -113,6 +115,7 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList drawer_layout.addDrawerListener(toggle) toggle.syncState() nav_view.setNavigationItemSelectedListener(this) + version.text = "v${BuildConfig.VERSION_NAME} (${Libv2ray.checkVersionX()})" } fun startV2Ray() { 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 0bf13dff..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,23 +1,13 @@ package com.v2ray.ang.ui -import android.content.Intent -import android.content.SharedPreferences -import android.net.Uri import android.os.Bundle -import android.preference.* -import com.v2ray.ang.AngApplication -import com.v2ray.ang.BuildConfig -//import com.v2ray.ang.InappBuyActivity +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 -import libv2ray.Libv2ray class SettingsActivity : BaseActivity() { companion object { @@ -42,7 +32,6 @@ class SettingsActivity : BaseActivity() { // const val PREF_LICENSES = "pref_licenses" // const val PREF_FEEDBACK = "pref_feedback" // const val PREF_TG_GROUP = "pref_tg_group" - const val PREF_VERSION = "pref_version" // const val PREF_AUTO_RESTART = "pref_auto_restart" const val PREF_FORWARD_IPV6 = "pref_forward_ipv6" } @@ -56,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 } @@ -75,32 +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) } - val version: Preference by lazy { findPreference(PREF_VERSION) } + + 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 } @@ -117,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 @@ -134,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 { @@ -153,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 @@ -162,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 @@ -171,6 +160,11 @@ class SettingsActivity : BaseActivity() { true } + mode.setOnPreferenceChangeListener { _, newValue -> + updatePerAppProxy(newValue.toString()) + true + } + // donate.onClick { // startActivity() // } @@ -206,16 +200,13 @@ class SettingsActivity : BaseActivity() { // httpPort.summary = any as String // true // } - - version.summary = "${BuildConfig.VERSION_NAME} (${Libv2ray.checkVersionX()})" } 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 @@ -227,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/layout/activity_main.xml b/V2rayNG/app/src/main/res/layout/activity_main.xml index ce364e7a..fca2f06d 100644 --- a/V2rayNG/app/src/main/res/layout/activity_main.xml +++ b/V2rayNG/app/src/main/res/layout/activity_main.xml @@ -111,7 +111,23 @@ app:headerLayout="@layout/nav_header" app:itemIconTint="@color/colorPrimary_dark" app:itemTextColor="@color/colorPrimary" - app:menu="@menu/menu_drawer" /> + app:menu="@menu/menu_drawer" > + + + + + + diff --git a/V2rayNG/app/src/main/res/menu/menu_drawer.xml b/V2rayNG/app/src/main/res/menu/menu_drawer.xml index 69cc38b8..a10ac0d6 100644 --- a/V2rayNG/app/src/main/res/menu/menu_drawer.xml +++ b/V2rayNG/app/src/main/res/menu/menu_drawer.xml @@ -16,25 +16,27 @@ - - - + - - - - - - + + + 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 592c2fb8..2393ffa6 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -73,7 +73,6 @@ 设置 - 关于 进阶设置 分应用代理 @@ -124,7 +123,6 @@ 一些推广,点击查看详情(捐赠可去除) 模式 - 版本 初始化错误: 无法查询到项目 @@ -188,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 14714e24..1385760e 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -74,7 +74,6 @@ 設定 - 關於 進階設定 Proxy 個別應用程式 @@ -126,7 +125,6 @@ 一些推廣,點擊查看詳情(捐款可去除) 模式 - 版本 錯誤設定: Error querying inventory @@ -189,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 ee72e193..9b63540d 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -74,7 +74,6 @@ Settings - About Advanced Settings Per-app proxy @@ -126,7 +125,6 @@ Promotion,click for details(Donation can be removed) Mode - Version Error Setup: Error querying inventory @@ -190,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 19aa1e3f..021594a4 100644 --- a/V2rayNG/app/src/main/res/xml/pref_settings.xml +++ b/V2rayNG/app/src/main/res/xml/pref_settings.xml @@ -88,34 +88,10 @@ - - - - - - - - - - - - - - - - - - - - - -