Compare commits

..

12 Commits

Author SHA1 Message Date
2dust 17af24d179 up 1.8.22 2024-04-26 13:45:59 +08:00
2dust c260e447ea Adjust UI 2024-04-25 17:52:34 +08:00
2dust 0eb40ae993 Adjust UI 2024-04-25 10:34:15 +08:00
ibrahem Qasim 18f3e39346 Update Arabic translation (#3042)
* Create android.yml

* Create gradle-publish.yml

* Update strings.xml

* Delete .github/workflows/android.yml

* Delete .github/workflows/gradle-publish.yml

* Update strings.xml

* Update strings.xml

* Update strings.xml

* Update strings.xml
2024-04-25 08:17:58 +08:00
2dust 311af02726 up 1.8.21 2024-04-23 17:32:20 +08:00
2dust b799969de8 Adjust UI 2024-04-23 13:45:50 +08:00
2dust 93541883bb Adjust UI 2024-04-22 10:35:16 +08:00
2dust 33430bff8d Adjust UI 2024-04-21 16:31:34 +08:00
2dust 3bc2081540 Adjust UI 2024-04-21 12:05:42 +08:00
2dust a3b1feabff Bug fix
https://github.com/2dust/v2rayNG/issues/3024
2024-04-20 15:38:55 +08:00
2dust 7af8d3843e Merge pull request #3025 from solokot/master
Update Russian translation
2024-04-20 15:11:02 +08:00
solokot 2235805800 Update Russian translation 2024-04-19 18:40:09 +03:00
57 changed files with 639 additions and 731 deletions
+3 -4
View File
@@ -11,8 +11,8 @@ android {
applicationId = "com.v2ray.ang"
minSdk = 21
targetSdk = 34
versionCode = 554
versionName = "1.8.20"
versionCode = 558
versionName = "1.8.22"
multiDexEnabled = true
}
@@ -96,7 +96,7 @@ dependencies {
implementation("androidx.viewpager2:viewpager2:1.1.0-beta02")
// Androidx ktx
implementation("androidx.activity:activity-ktx:1.8.2")
implementation("androidx.activity:activity-ktx:1.9.0")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.7.0")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
@@ -111,7 +111,6 @@ dependencies {
implementation("io.reactivex:rxjava:1.3.8")
implementation("io.reactivex:rxandroid:1.2.1")
implementation("com.tbruyelle.rxpermissions:rxpermissions:0.9.4@aar")
implementation("com.github.jorgecastilloprz:fabprogresscircle:1.01@aar")
implementation("me.drakeet.support:toastcompat:1.1.0")
implementation("com.blacksquircle.ui:editorkit:2.9.0")
implementation("com.blacksquircle.ui:language-base:2.9.0")
@@ -8,8 +8,8 @@ import android.content.Context
import android.content.Intent
import android.os.Build
import android.widget.RemoteViews
import com.v2ray.ang.R
import com.v2ray.ang.AppConfig
import com.v2ray.ang.R
import com.v2ray.ang.service.V2RayServiceManager
import com.v2ray.ang.util.Utils
@@ -38,23 +38,11 @@ class WidgetProvider : AppWidgetProvider() {
})
remoteViews.setOnClickPendingIntent(R.id.layout_switch, pendingIntent)
if (isRunning) {
if (!Utils.getDarkModeStatus(context)) {
remoteViews.setInt(R.id.image_switch, "setImageResource", R.drawable.ic_stat_name)
}
remoteViews.setInt(
R.id.layout_switch,
"setBackgroundResource",
R.drawable.ic_rounded_corner_active
)
remoteViews.setInt(R.id.image_switch, "setImageResource", R.drawable.ic_stop_24dp)
remoteViews.setInt(R.id.layout_background, "setBackgroundResource", R.drawable.ic_rounded_corner_active)
} else {
if (!Utils.getDarkModeStatus(context)) {
remoteViews.setInt(R.id.image_switch, "setImageResource", R.drawable.ic_stat_name_black)
}
remoteViews.setInt(
R.id.layout_switch,
"setBackgroundResource",
R.drawable.ic_rounded_corner_grey
)
remoteViews.setInt(R.id.image_switch, "setImageResource", R.drawable.ic_play_24dp)
remoteViews.setInt(R.id.layout_background, "setBackgroundResource", R.drawable.ic_rounded_corner_inactive)
}
for (appWidgetId in appWidgetIds) {
@@ -1,6 +1,9 @@
package com.v2ray.ang.service
import android.app.*
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
@@ -290,7 +293,7 @@ object V2RayServiceManager {
.setShowWhen(false)
.setOnlyAlertOnce(true)
.setContentIntent(contentPendingIntent)
.addAction(R.drawable.ic_close_grey_800_24dp,
.addAction(R.drawable.ic_delete_24dp,
service.getString(R.string.notification_action_stop_v2ray),
stopV2RayPendingIntent)
//.build()
@@ -146,21 +146,16 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
mainViewModel.isRunning.observe(this) { isRunning ->
adapter.isRunning = isRunning
if (isRunning) {
if (!Utils.getDarkModeStatus(this)) {
binding.fab.setImageResource(R.drawable.ic_stat_name)
}
binding.fab.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(this, R.color.color_fab_orange))
binding.fab.setImageResource(R.drawable.ic_stop_24dp)
binding.fab.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(this, R.color.color_fab_active))
setTestState(getString(R.string.connection_connected))
binding.layoutTest.isFocusable = true
} else {
if (!Utils.getDarkModeStatus(this)) {
binding.fab.setImageResource(R.drawable.ic_stat_name)
}
binding.fab.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(this, R.color.color_fab_grey))
binding.fab.setImageResource(R.drawable.ic_play_24dp)
binding.fab.backgroundTintList = ColorStateList.valueOf(ContextCompat.getColor(this, R.color.color_fab_inactive))
setTestState(getString(R.string.connection_not_connected))
binding.layoutTest.isFocusable = false
}
hideCircle()
}
mainViewModel.startListenBroadcast()
}
@@ -208,10 +203,7 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
if (mainStorage?.decodeString(MmkvManager.KEY_SELECTED_SERVER).isNullOrEmpty()) {
return
}
showCircle()
// toast(R.string.toast_services_start)
V2RayServiceManager.startV2Ray(this)
hideCircle()
}
fun restartV2Ray() {
@@ -657,29 +649,6 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList
return super.onKeyDown(keyCode, event)
}
fun showCircle() {
binding.fabProgressCircle.show()
}
fun hideCircle() {
try {
Observable.timer(300, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
try {
if (binding.fabProgressCircle.isShown) {
binding.fabProgressCircle.hide()
}
} catch (e: Exception) {
Log.w(ANG_PACKAGE, e)
}
}
} catch (e: Exception) {
Log.d(ANG_PACKAGE, e.toString())
}
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {
// Handle navigation view item clicks here.
when (item.itemId) {
@@ -3,12 +3,12 @@ package com.v2ray.ang.ui
import android.content.Intent
import android.graphics.Color
import android.text.TextUtils
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.google.gson.Gson
import com.tencent.mmkv.MMKV
import com.v2ray.ang.AngApplication.Companion.application
@@ -73,9 +73,9 @@ class MainRecyclerAdapter(val activity: MainActivity) : RecyclerView.Adapter<Mai
holder.itemMainBinding.tvTestResult.setTextColor(ContextCompat.getColor(mActivity, R.color.colorPing))
}
if (guid == mainStorage?.decodeString(MmkvManager.KEY_SELECTED_SERVER)) {
holder.itemMainBinding.layoutIndicator.setBackgroundResource(R.color.colorSelected)
holder.itemMainBinding.layoutIndicator.setBackgroundResource(R.color.colorAccent)
} else {
holder.itemMainBinding.layoutIndicator.setBackgroundResource(R.color.colorUnselected)
holder.itemMainBinding.layoutIndicator.setBackgroundResource(0)
}
holder.itemMainBinding.tvSubscription.text = ""
val json = subStorage?.decodeString(config.subscriptionId)
@@ -166,13 +166,11 @@ class MainRecyclerAdapter(val activity: MainActivity) : RecyclerView.Adapter<Mai
}
notifyItemChanged(mActivity.mainViewModel.getPosition(guid))
if (isRunning) {
mActivity.showCircle()
Utils.stopVService(mActivity)
Observable.timer(500, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
V2RayServiceManager.startV2Ray(mActivity)
mActivity.hideCircle()
}
}
}
@@ -5,17 +5,15 @@ import android.graphics.Color
import android.text.TextUtils
import android.view.LayoutInflater
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import androidx.recyclerview.widget.RecyclerView
import com.google.gson.Gson
import com.tencent.mmkv.MMKV
import com.v2ray.ang.R
import com.v2ray.ang.databinding.ItemQrcodeBinding
import com.v2ray.ang.databinding.ItemRecyclerSubSettingBinding
import com.v2ray.ang.dto.EConfigType
import com.v2ray.ang.extension.toast
import com.v2ray.ang.util.AngConfigManager
import com.v2ray.ang.util.MmkvManager
import com.v2ray.ang.util.QRCodeDecoder
import com.v2ray.ang.util.Utils
@@ -38,9 +36,9 @@ class SubSettingRecyclerAdapter(val activity: SubSettingActivity) :
holder.itemSubSettingBinding.tvName.text = subItem.remarks
holder.itemSubSettingBinding.tvUrl.text = subItem.url
if (subItem.enabled) {
holder.itemSubSettingBinding.chkEnable.setBackgroundResource(R.color.colorSelected)
holder.itemSubSettingBinding.chkEnable.setBackgroundResource(R.color.colorAccent)
} else {
holder.itemSubSettingBinding.chkEnable.setBackgroundResource(R.color.colorUnselected)
holder.itemSubSettingBinding.chkEnable.setBackgroundResource(0)
}
holder.itemView.setBackgroundColor(Color.TRANSPARENT)
@@ -82,15 +82,12 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application
AppConfig.PREF_MUX_CONCURRENCY,
AppConfig.PREF_MUX_XUDP_CONCURRENCY -> {
settingsStorage?.encode(
key,
sharedPreferences.getString(key, "8")?.toIntOrNull() ?: 8
)
settingsStorage?.encode(key, sharedPreferences.getString(key, "8"))
}
AppConfig.PREF_PER_APP_PROXY_SET -> {
settingsStorage?.encode(key, sharedPreferences.getStringSet(key, setOf()))
}
// AppConfig.PREF_PER_APP_PROXY_SET -> {
// settingsStorage?.encode(key, sharedPreferences.getStringSet(key, setOf()))
// }
}
if (key == AppConfig.PREF_UI_MODE_NIGHT) {
Utils.setNightMode(getApplication())
Binary file not shown.

Before

Width:  |  Height:  |  Size: 651 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 476 B

@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M784,112L240,112c-88,0 -160,72 -160,160v480c0,88 72,160 160,160h544c88,0 160,-72 160,-160L944,272c0,-88 -72,-160 -160,-160zM880,752c0,52.8 -43.2,96 -96,96L240,848c-52.8,0 -96,-43.2 -96,-96L144,272c0,-52.8 43.2,-96 96,-96h544c52.8,0 96,43.2 96,96v480z" />
<path
android:fillColor="#FFFFFFFF"
android:pathData="M352,480c52.8,0 96,-43.2 96,-96s-43.2,-96 -96,-96 -96,43.2 -96,96 43.2,96 96,96zM352,352c17.6,0 32,14.4 32,32s-14.4,32 -32,32 -32,-14.4 -32,-32 14.4,-32 32,-32zM814.4,731.2l-3.2,-3.2 -177.6,-177.6c-25.6,-25.6 -65.6,-25.6 -91.2,0l-80,80 -36.8,-36.8c-25.6,-25.6 -65.6,-25.6 -91.2,0L200,728c-4.8,6.4 -8,14.4 -8,24 0,17.6 14.4,32 32,32 9.6,0 16,-3.2 22.4,-9.6L380.8,640l134.4,134.4c6.4,6.4 14.4,9.6 24,9.6 17.6,0 32,-14.4 32,-32 0,-9.6 -4.8,-17.6 -9.6,-24l-52.8,-52.8 80,-80L769.6,776c6.4,4.8 12.8,8 20.8,8 17.6,0 32,-14.4 32,-32 0,-8 -3.2,-16 -8,-20.8z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#fff"
android:pathData="M21,19V5c0,-1.1 -0.9,-2 -2,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2zM8.5,13.5l2.5,3.01L14.5,12l4.5,6H5l3.5,-4.5z"/>
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zm1,15h-2v-6h2v6zm0,-8h-2V7h2v2z" />
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M213.333333 789.461333V234.538667C213.333333 168.533333 285.013333 127.530667 341.930667 160.981333l471.68 277.461334c56.106667 32.981333 56.106667 114.133333 0 147.114666L341.930667 863.018667C285.056 896.469333 213.333333 855.466667 213.333333 789.461333z" />
</vector>
@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/ic_shortcut_background"
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp" />
<item
android:drawable="@drawable/ic_stat_name"
android:left="12dp"
android:top="12dp"
android:right="12dp"
android:bottom="12dp" />
</layer-list>
@@ -1,19 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="48"
android:viewportHeight="48">
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:fillColor="#f5f5f5"
android:pathData="M24,24m-22,0a22,22 0,1 1,44 0a22,22 0,1 1,-44 0Z" />
<path
android:fillColor="#000000"
android:pathData="M24,21.8 C25.7673,21.8,27.2,23.2327,27.2,25 C27.2,26.7673,25.7673,28.2,24,28.2
C22.2327,28.2,20.8,26.7673,20.8,25 C20.8,23.2327,22.2327,21.8,24,21.8 Z" />
<path
android:fillColor="#000000"
android:pathData="M21,15 L19.17,17 L16,17 A2,2,0,0,0,14,19 L14,31 A2,2,0,0,0,16,33 L32,33
A2,2,0,0,0,34,31 L34,19 A2,2,0,0,0,32,17 L28.83,17 L27,15 Z M24,30
A5,5,0,1,1,29,25 A5,5,0,0,1,24,30 Z" />
android:fillColor="#FFFFFFFF"
android:pathData="M181.333333 384a32 32 0 0 1-64 0v-111.146667a155.52 155.52 0 0 1 155.52-155.52H384a32 32 0 0 1 0 64h-111.146667a91.52 91.52 0 0 0-91.52 91.52V384zM640 181.333333a32 32 0 0 1 0-64h111.146667a155.52 155.52 0 0 1 155.52 155.52V384a32 32 0 0 1-64 0v-111.146667a91.52 91.52 0 0 0-91.52-91.52H640zM842.666667 640a32 32 0 0 1 64 0v111.146667a155.52 155.52 0 0 1-155.52 155.52H640a32 32 0 0 1 0-64h111.146667a91.52 91.52 0 0 0 91.52-91.52V640zM384 842.666667a32 32 0 0 1 0 64h-111.146667a155.52 155.52 0 0 1-155.52-155.52V640a32 32 0 0 1 64 0v111.146667a91.52 91.52 0 0 0 91.52 91.52H384z m-192-298.666667a32 32 0 0 1 0-64h640a32 32 0 0 1 0 64H192z" />
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M256 192h512c35.392 0 64 28.608 64 64v512c0 35.392-28.608 64-64 64H256c-35.392 0-64-28.608-64-64V256c0-35.392 28.608-64 64-64z" />
</vector>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 855 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

@@ -1,9 +0,0 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:angle="135"
android:centerColor="#009688"
android:endColor="#00695C"
android:startColor="#4DB6AC"
android:type="linear" />
</shape>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0"
android:width="24dp">
<path
android:fillColor="#424242"
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z" />
</vector>
@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:fillColor="#FF000000"
android:pathData="M784,112L240,112c-88,0 -160,72 -160,160v480c0,88 72,160 160,160h544c88,0 160,-72 160,-160L944,272c0,-88 -72,-160 -160,-160zM880,752c0,52.8 -43.2,96 -96,96L240,848c-52.8,0 -96,-43.2 -96,-96L144,272c0,-52.8 43.2,-96 96,-96h544c52.8,0 96,43.2 96,96v480z" />
<path
android:fillColor="#FF000000"
android:pathData="M352,480c52.8,0 96,-43.2 96,-96s-43.2,-96 -96,-96 -96,43.2 -96,96 43.2,96 96,96zM352,352c17.6,0 32,14.4 32,32s-14.4,32 -32,32 -32,-14.4 -32,-32 14.4,-32 32,-32zM814.4,731.2l-3.2,-3.2 -177.6,-177.6c-25.6,-25.6 -65.6,-25.6 -91.2,0l-80,80 -36.8,-36.8c-25.6,-25.6 -65.6,-25.6 -91.2,0L200,728c-4.8,6.4 -8,14.4 -8,24 0,17.6 14.4,32 32,32 9.6,0 16,-3.2 22.4,-9.6L380.8,640l134.4,134.4c6.4,6.4 14.4,9.6 24,9.6 17.6,0 32,-14.4 32,-32 0,-9.6 -4.8,-17.6 -9.6,-24l-52.8,-52.8 80,-80L769.6,776c6.4,4.8 12.8,8 20.8,8 17.6,0 32,-14.4 32,-32 0,-8 -3.2,-16 -8,-20.8z" />
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="#000"
android:pathData="M21,19V5c0,-1.1 -0.9,-2 -2,-2H5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2zM8.5,13.5l2.5,3.01L14.5,12l4.5,6H5l3.5,-4.5z"/>
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zm1,15h-2v-6h2v6zm0,-8h-2V7h2v2z" />
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M213.333333 789.461333V234.538667C213.333333 168.533333 285.013333 127.530667 341.930667 160.981333l471.68 277.461334c56.106667 32.981333 56.106667 114.133333 0 147.114666L341.930667 863.018667C285.056 896.469333 213.333333 855.466667 213.333333 789.461333z" />
</vector>
@@ -1,19 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="48"
android:viewportHeight="48">
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M0,512C0,229.23 229.81,0 512,0 794.77,0 1024,229.81 1024,512 1024,794.77 794.19,1024 512,1024 229.23,1024 0,794.19 0,512Z" />
<path
android:fillColor="@color/colorBg"
android:pathData="M24,24m-22,0a22,22 0,1 1,44 0a22,22 0,1 1,-44 0Z" />
<path
android:fillColor="@color/colorText"
android:pathData="M24,21.8 C25.7673,21.8,27.2,23.2327,27.2,25 C27.2,26.7673,25.7673,28.2,24,28.2
C22.2327,28.2,20.8,26.7673,20.8,25 C20.8,23.2327,22.2327,21.8,24,21.8 Z" />
<path
android:fillColor="@color/colorText"
android:pathData="M21,15 L19.17,17 L16,17 A2,2,0,0,0,14,19 L14,31 A2,2,0,0,0,16,33 L32,33
A2,2,0,0,0,34,31 L34,19 A2,2,0,0,0,32,17 L28.83,17 L27,15 Z M24,30
A5,5,0,1,1,29,25 A5,5,0,0,1,24,30 Z" />
android:fillColor="#FF000000"
android:pathData="M780.16 875.52H652.8c-17.92 0-32-14.08-32-32s14.08-32 32-32h127.36c16 0 29.44-13.44 29.44-29.44v-127.36c0-17.92 14.08-32 32-32s32 14.08 32 32v127.36c-0.64 51.2-42.24 93.44-93.44 93.44zM192.64 415.36c-17.92 0-32-14.08-32-32V256c0-51.2 41.6-93.44 93.44-93.44h127.36c17.92 0 32 14.08 32 32s-14.08 32-32 32h-128c-16 0-29.44 13.44-29.44 29.44v127.36c0.64 17.92-14.08 32-31.36 32zM840.96 415.36c-17.92 0-32-14.08-32-32V256c0-16-13.44-29.44-29.44-29.44h-127.36c-17.92 0-32-14.08-32-32s14.08-32 32-32h127.36c51.2 0 93.44 41.6 93.44 93.44v127.36c0 17.92-14.08 32-32 32zM381.44 875.52h-128c-51.2 0-93.44-41.6-93.44-93.44v-127.36c0-17.92 14.08-32 32-32s32 14.08 32 32v127.36c0 16 13.44 29.44 29.44 29.44h127.36c17.92 0 32 14.08 32 32s-14.08 32-31.36 32zM759.04 553.6H274.56c-17.92 0-32-14.08-32-32s14.08-32 32-32h484.48c17.92 0 32 14.08 32 32s-14.72 32-32 32z" />
</vector>
File diff suppressed because one or more lines are too long
@@ -1,18 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="1024"
android:viewportWidth="1024">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M0,512C0,229.23 229.81,0 512,0 794.77,0 1024,229.81 1024,512 1024,794.77 794.19,1024 512,1024 229.23,1024 0,794.19 0,512Z" />
<item
android:drawable="@drawable/ic_shortcut_background"
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp" />
<item
android:drawable="@drawable/ic_stat_name_black"
android:left="12dp"
android:top="12dp"
android:right="12dp"
android:bottom="12dp" />
</layer-list>
<path
android:fillColor="#FF000000"
android:pathData="M742.4 691.2c-12.8-12.8-25.6-12.8-38.4 0-51.2 51.2-115.2 83.2-185.6 83.2-128 0-230.4-89.6-256-204.8l44.8 0C320 569.6 332.8 550.4 320 537.6L243.2 428.8c-6.4-12.8-25.6-12.8-32 0L134.4 537.6c-12.8 12.8 0 32 19.2 32l51.2 0C224 716.8 358.4 832 512 832c89.6 0 166.4-32 230.4-96C748.8 723.2 748.8 704 742.4 691.2L742.4 691.2zM281.6 332.8c12.8 12.8 25.6 12.8 38.4 0C371.2 275.2 441.6 249.6 512 249.6c128 0 230.4 89.6 256 204.8l-44.8 0c-19.2 0-25.6 19.2-19.2 32l76.8 108.8c6.4 12.8 25.6 12.8 32 0l76.8-108.8c12.8-12.8 0-32-19.2-32l-51.2 0C800 307.2 665.6 192 512 192 422.4 192 345.6 230.4 281.6 288 275.2 300.8 275.2 320 281.6 332.8L281.6 332.8zM627.2 556.8c0 25.6-25.6 51.2-51.2 51.2l-128 0c-25.6 0-51.2-25.6-51.2-51.2L396.8 473.6c0-25.6 25.6-51.2 51.2-51.2l128 0c25.6 0 51.2 25.6 51.2 51.2L627.2 556.8 627.2 556.8zM627.2 556.8" />
</vector>
@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/color_fab_orange"/>
<corners android:radius="20dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
<corners android:radius="20dp" />
<padding
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp" />
<solid android:color="@color/color_fab_active" />
</shape>
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/color_switch_fab_grey"/>
<corners android:radius="20dp"/>
<padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
</shape>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="20dp" />
<padding
android:bottom="0dp"
android:left="0dp"
android:right="0dp"
android:top="0dp" />
<solid android:color="@color/color_fab_inactive" />
</shape>
@@ -1,19 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="48"
android:viewportHeight="48">
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:fillColor="#050505"
android:pathData="M24,24m-22,0a22,22 0,1 1,44 0a22,22 0,1 1,-44 0Z" />
<path
android:fillColor="#FFFFFF"
android:pathData="M24,21.8 C25.7673,21.8,27.2,23.2327,27.2,25 C27.2,26.7673,25.7673,28.2,24,28.2
C22.2327,28.2,20.8,26.7673,20.8,25 C20.8,23.2327,22.2327,21.8,24,21.8 Z" />
<path
android:fillColor="#FFFFFF"
android:pathData="M21,15 L19.17,17 L16,17 A2,2,0,0,0,14,19 L14,31 A2,2,0,0,0,16,33 L32,33
A2,2,0,0,0,34,31 L34,19 A2,2,0,0,0,32,17 L28.83,17 L27,15 Z M24,30
A5,5,0,1,1,29,25 A5,5,0,0,1,24,30 Z" />
android:fillColor="#FF000000"
android:pathData="M181.333333 384a32 32 0 0 1-64 0v-111.146667a155.52 155.52 0 0 1 155.52-155.52H384a32 32 0 0 1 0 64h-111.146667a91.52 91.52 0 0 0-91.52 91.52V384zM640 181.333333a32 32 0 0 1 0-64h111.146667a155.52 155.52 0 0 1 155.52 155.52V384a32 32 0 0 1-64 0v-111.146667a91.52 91.52 0 0 0-91.52-91.52H640zM842.666667 640a32 32 0 0 1 64 0v111.146667a155.52 155.52 0 0 1-155.52 155.52H640a32 32 0 0 1 0-64h111.146667a91.52 91.52 0 0 0 91.52-91.52V640zM384 842.666667a32 32 0 0 1 0 64h-111.146667a155.52 155.52 0 0 1-155.52-155.52V640a32 32 0 0 1 64 0v111.146667a91.52 91.52 0 0 0 91.52 91.52H384z m-192-298.666667a32 32 0 0 1 0-64h640a32 32 0 0 1 0 64H192z" />
</vector>
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0"
android:width="24dp">
android:viewportHeight="24.0">
<path
android:fillColor="#000000"
android:pathData="M3,5h2L5,3c-1.1,0 -2,0.9 -2,2zM3,13h2v-2L3,11v2zM7,21h2v-2L7,19v2zM3,9h2L5,7L3,7v2zM13,3h-2v2h2L13,3zM19,3v2h2c0,-1.1 -0.9,-2 -2,-2zM5,21v-2L3,19c0,1.1 0.9,2 2,2zM3,17h2v-2L3,15v2zM9,3L7,3v2h2L9,3zM11,21h2v-2h-2v2zM19,13h2v-2h-2v2zM19,21c1.1,0 2,-0.9 2,-2h-2v2zM19,9h2L21,7h-2v2zM19,17h2v-2h-2v2zM15,21h2v-2h-2v2zM15,5h2L17,3h-2v2zM7,17h10L17,7L7,7v10zM9,9h6v6L9,15L9,9z" />
@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid android:color="@color/colorBg" />
<size android:width="44dp" android:height="44dp" />
</shape>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:fillColor="#FFFFFFFF"
android:pathData="M256 192h512c35.392 0 64 28.608 64 64v512c0 35.392-28.608 64-64 64H256c-35.392 0-64-28.608-64-64V256c0-35.392 28.608-64 64-64z" />
</vector>
@@ -15,7 +15,6 @@
android:id="@+id/layout_backup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
@@ -26,8 +25,7 @@
<ImageView
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_backup_24dp"
app:tint="?attr/colorMainText" />
app:srcCompat="@drawable/ic_backup_24dp" />
<LinearLayout
android:layout_width="wrap_content"
@@ -57,7 +55,6 @@
android:id="@+id/layout_restore"
android:layout_width="match_parent"
android:layout_height="@dimen/server_height"
android:background="@color/colorPrimary"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
@@ -68,8 +65,7 @@
<ImageView
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_restore_24dp"
app:tint="?attr/colorMainText" />
app:srcCompat="@drawable/ic_restore_24dp" />
<TextView
android:layout_width="wrap_content"
@@ -91,7 +87,6 @@
android:id="@+id/layout_soure_ccode"
android:layout_width="match_parent"
android:layout_height="@dimen/server_height"
android:background="@color/colorPrimary"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
@@ -102,8 +97,7 @@
<ImageView
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_source_code_24dp"
app:tint="?attr/colorMainText" />
app:srcCompat="@drawable/ic_source_code_24dp" />
<TextView
android:layout_width="wrap_content"
@@ -117,7 +111,6 @@
android:id="@+id/layout_feedback"
android:layout_width="match_parent"
android:layout_height="@dimen/server_height"
android:background="@color/colorPrimary"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
@@ -128,8 +121,7 @@
<ImageView
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_feedback_24dp"
app:tint="?attr/colorMainText" />
app:srcCompat="@drawable/ic_feedback_24dp" />
<TextView
android:layout_width="wrap_content"
@@ -144,7 +136,6 @@
android:id="@+id/layout_tg_channel"
android:layout_width="match_parent"
android:layout_height="@dimen/server_height"
android:background="@color/colorPrimary"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
@@ -155,8 +146,7 @@
<ImageView
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_telegram_24dp"
app:tint="?attr/colorMainText" />
app:srcCompat="@drawable/ic_telegram_24dp" />
<TextView
android:layout_width="wrap_content"
@@ -170,7 +160,6 @@
android:id="@+id/layout_privacy_policy"
android:layout_width="match_parent"
android:layout_height="@dimen/server_height"
android:background="@color/colorPrimary"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
@@ -181,8 +170,7 @@
<ImageView
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_privacy_24dp"
app:tint="?attr/colorMainText" />
app:srcCompat="@drawable/ic_privacy_24dp" />
<TextView
android:layout_width="wrap_content"
@@ -5,7 +5,7 @@
android:layout_height="match_parent"
android:paddingStart="10dp"
android:paddingEnd="10dp"
tools:context=".ui.MainActivity">
tools:context=".ui.LogcatActivity">
<ProgressBar
android:id="@+id/pb_waiting"
@@ -48,7 +48,7 @@
android:id="@+id/layout_test"
android:layout_width="match_parent"
android:layout_height="@dimen/connection_test_height"
android:background="@color/colorMainTestBg"
android:background="@color/colorPrimary"
android:gravity="center|start"
android:nextFocusRight="@+id/fab"
android:clickable="true"
@@ -63,14 +63,13 @@
android:minLines="1"
android:paddingStart="16dp"
android:text="@string/connection_test_pending"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/colorText" />
android:textAppearance="@style/TextAppearance.AppCompat.Small"/>
</LinearLayout>
</LinearLayout>
<com.github.jorgecastilloprz.FABProgressCircle
<FrameLayout
android:id="@+id/fabProgressCircle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -94,7 +93,7 @@
android:src="@drawable/ic_stat_name"
app:layout_anchorGravity="bottom|right|end" />
</com.github.jorgecastilloprz.FABProgressCircle>
</FrameLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</RelativeLayout>
</LinearLayout>
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.ServerActivity">
tools:context=".ui.ServerCustomConfigActivity">
<LinearLayout
android:layout_width="match_parent"
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.ServerActivity">
tools:context=".ui.SubSettingActivity">
<LinearLayout
android:layout_width="match_parent"
@@ -6,7 +6,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".ui.MainActivity">
tools:context=".ui.SubSettingActivity">
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/main_content"
@@ -3,7 +3,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:background="@color/colorPrimary"
android:foreground="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true">
@@ -1,30 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/item_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical">
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/item_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical">
<androidx.cardview.widget.CardView
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:layout_margin="1dp"
app:cardCornerRadius="5dp">
<LinearLayout
android:id="@+id/info_container"
android:clickable="true"
android:focusable="true"
android:nextFocusRight="@+id/layout_share"
android:background="@color/colorPrimary"
android:foreground="?attr/selectableItemBackground"
android:layout_width="match_parent"
android:layout_height="@dimen/server_height"
android:layout_gravity="center"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:gravity="center"
android:nextFocusRight="@+id/layout_share"
android:orientation="horizontal">
<LinearLayout
@@ -65,7 +64,7 @@
android:layout_height="wrap_content"
android:lines="1"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textSize="12sp"/>
android:textSize="12sp" />
</LinearLayout>
@@ -78,31 +77,31 @@
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingEnd="5dp">
<TextView
android:id="@+id/tv_subscription"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingEnd="5dp">
android:layout_weight="1"
android:lines="1"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/color_secondary"
android:textSize="10sp"
tools:text="Sub" />
<TextView
android:id="@+id/tv_subscription"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:lines="1"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/color_secondary"
android:textSize="10sp"
tools:text="Sub" />
<TextView
android:id="@+id/tv_test_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lines="1"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/colorPing"
android:textSize="10sp"
tools:text="214ms" />
android:id="@+id/tv_test_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:lines="1"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/colorPing"
android:textSize="10sp"
tools:text="214ms" />
</LinearLayout>
<LinearLayout
@@ -127,8 +126,7 @@
<ImageView
android:layout_width="wrap_content"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_share_24dp"
app:tint="?attr/colorMainText" />
app:srcCompat="@drawable/ic_share_24dp" />
</LinearLayout>
@@ -146,8 +144,7 @@
<ImageView
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_edit_24dp"
app:tint="?attr/colorMainText" />
app:srcCompat="@drawable/ic_edit_24dp" />
</LinearLayout>
@@ -165,8 +162,7 @@
<ImageView
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_delete_24dp"
app:tint="?attr/colorMainText" />
app:srcCompat="@drawable/ic_delete_24dp" />
</LinearLayout>
</LinearLayout>
@@ -184,7 +180,7 @@
android:layout_height="wrap_content"
android:lines="1"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textColor="@color/color_fab_orange"
android:textColor="@color/colorConfigType"
android:textSize="10sp" />
</LinearLayout>
@@ -10,42 +10,41 @@
android:id="@+id/item_cardview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:layout_margin="1dp"
android:orientation="horizontal"
card_view:cardCornerRadius="5dp">
<LinearLayout
android:id="@+id/info_container"
android:clickable="true"
android:focusable="true"
android:background="@color/colorPrimary"
android:foreground="?attr/selectableItemBackground"
android:nextFocusRight="@+id/layout_edit"
android:layout_width="match_parent"
android:layout_height="@dimen/server_height"
android:layout_gravity="center"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
android:gravity="center"
android:nextFocusRight="@+id/layout_edit"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/chk_enable"
android:layout_width="6dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical" />
android:id="@+id/chk_enable"
android:layout_width="6dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingStart="9dp"
android:orientation="vertical">
android:orientation="vertical"
android:paddingStart="9dp">
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />
<TextView
android:id="@+id/tv_url"
@@ -73,14 +72,12 @@
android:focusable="true"
android:gravity="center"
android:orientation="vertical"
android:padding="@dimen/layout_margin_spacing"
>
android:padding="@dimen/layout_margin_spacing">
<ImageView
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_share_24dp"
app:tint="?attr/colorMainText"/>
app:srcCompat="@drawable/ic_share_24dp" />
</LinearLayout>
@@ -99,8 +96,7 @@
<ImageView
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_edit_24dp"
app:tint="?attr/colorMainText" />
app:srcCompat="@drawable/ic_edit_24dp" />
</LinearLayout>
</LinearLayout>
@@ -1,24 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
app:cardCornerRadius="5dp">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="1dp"
app:cardCornerRadius="5dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:background="@color/colorPrimary"
android:foreground="?attr/selectableItemBackground"
android:padding="@dimen/nav_header_vertical_spacing">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="?attr/selectableItemBackground"
android:gravity="center"
android:orientation="horizontal"
android:padding="@dimen/nav_header_vertical_spacing">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
@@ -72,24 +72,22 @@
<ImageView
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_edit_24dp"
app:tint="?attr/colorMainText" />
app:srcCompat="@drawable/ic_edit_24dp" />
</LinearLayout>
<LinearLayout
android:id="@+id/layout_remove"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:padding="@dimen/nav_header_vertical_spacing">
android:id="@+id/layout_remove"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
android:padding="@dimen/nav_header_vertical_spacing">
<ImageView
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_delete_24dp"
app:tint="?attr/colorMainText" />
android:layout_width="@dimen/png_height"
android:layout_height="@dimen/png_height"
app:srcCompat="@drawable/ic_delete_24dp" />
</LinearLayout>
</LinearLayout>
</androidx.cardview.widget.CardView>
@@ -6,10 +6,10 @@
android:background="@drawable/nav_header_bg"
android:gravity="center"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
android:paddingBottom="@dimen/activity_vertical_margin">
<TextView
android:layout_width="match_parent"
@@ -19,8 +19,7 @@
android:gravity="center"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="@string/app_name"
android:textAppearance="@style/TextAppearance.AppCompat.Display1"
android:textColor="@color/colorText" />
android:textAppearance="@style/TextAppearance.AppCompat.Display1" />
</LinearLayout>
@@ -2,16 +2,30 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/layout_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:id="@+id/layout_background"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical">
android:layout_gravity="center">
<ImageView
<ImageView
android:id="@+id/image_switch"
android:layout_width="40dp"
android:layout_height="40dp"
android:padding="10dp"
android:layout_width="45dp"
android:layout_height="45dp"
android:padding="12dp"
app:srcCompat="@drawable/ic_stat_name" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name"
android:textColor="@android:color/white"
android:textSize="10sp" />
</LinearLayout>
@@ -8,7 +8,7 @@
app:showAsAction="always" />
<item
android:id="@+id/select_photo"
android:icon="@drawable/ic_image_photo"
android:icon="@drawable/ic_image_24dp"
android:title=""
app:showAsAction="always" />
</menu>
+288 -236
View File
@@ -1,240 +1,292 @@
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<string name="app_widget_name">التبديل</string>
<string name="app_tile_name">التبديل</string>
<string name="app_tile_first_use">أول استخدام لهذه الميزة، يرجى استخدام التطبيق لإضافة خادم</string>
<string name="navigation_drawer_open">افتح درج التنقل</string>
<string name="navigation_drawer_close">أغلق درج التنقل</string>
<string name="migration_success">نجحت عملية ترحيل البيانات!</string>
<string name="migration_fail">فشلت عملية ترحيل البيانات!</string>
<!-- Notifications -->
<string name="notification_action_stop_v2ray">توقف</string>
<string name="toast_permission_denied">غير قادر على الحصول على الإذن</string>
<string name="notification_action_more">اضغط للمزيد</string>
<string name="toast_services_start">بدء الخدمات</string>
<string name="toast_services_stop">توقف الخدمات</string>
<string name="toast_services_success">نجح بدء الخدمات</string>
<string name="toast_services_failure">فشل بدء الخدمات</string>
<!--ServerActivity-->
<string name="title_server">ملف التكوين</string>
<string name="menu_item_add_config">إضافة تكوين</string>
<string name="menu_item_save_config">حفظ التكوين</string>
<string name="menu_item_del_config">حذف التكوين</string>
<string name="menu_item_import_config_qrcode">استيراد التكوين من QRcode</string>
<string name="menu_item_import_config_clipboard">استيراد التكوين من الحافظة</string>
<string name="menu_item_import_config_manually_vmess">الكتابة يدويا [Vmess]</string>
<string name="menu_item_import_config_manually_vless">الكتابة يدويا [VLESS]</string>
<string name="menu_item_import_config_manually_ss">الكتابة يدويا [Shadowsocks]</string>
<string name="menu_item_import_config_manually_socks">الكتابة يدويا [Socks]</string>
<string name="menu_item_import_config_manually_trojan">الكتابة يدويا [Trojan]</string>
<string name="menu_item_import_config_manually_wireguard">[Wireguard] الكتابة يدويا</string>
<string name="menu_item_import_config_custom">تكوين مخصص</string>
<string name="menu_item_import_config_custom_clipboard">استيراد التكوين المخصص من الحافظة</string>
<string name="menu_item_import_config_custom_local">استيراد التكوين المخصص من ملف محلي</string>
<string name="menu_item_import_config_custom_url">استيراد التكوين المخصص من URL</string>
<string name="menu_item_import_config_custom_url_scan">استيراد التكوين المخصص من مسح URL</string>
<string name="del_config_comfirm">تأكيد الحذف؟</string>
<string name="server_lab_remarks">ملاحظات</string>
<string name="server_lab_address">العنوان</string>
<string name="server_lab_port">المنفذ</string>
<string name="server_lab_id">المعرف</string>
<string name="server_lab_alterid">alterId</string>
<string name="server_lab_security">الأمان</string>
<string name="server_lab_network">الشبكة</string>
<string name="server_lab_more_function">النقل</string>
<string name="server_lab_head_type">نوع الرأس</string>
<string name="server_lab_mode_type">وضع gRPC</string>
<string name="server_lab_request_host">طلب الاستضافة (host/ws host/h2 host)/QUIC security/gRPC Authority</string>
<string name="server_lab_path">المسار (ws path/h2 path)/QUIC key/kcp seed/gRPC serviceName</string>
<string name="server_lab_stream_security">TLS</string>
<string name="server_lab_allow_insecure">allowInsecure</string>
<string name="server_lab_sni">SNI</string>
<string name="server_lab_address3">العنوان</string>
<string name="server_lab_port3">المنفذ</string>
<string name="server_lab_id3">كلمة المرور</string>
<string name="server_lab_security3">الأمان</string>
<string name="server_lab_id4">كلمة المرور (اختياري)</string>
<string name="server_lab_security4">المستخدم (اختياري)</string>
<string name="server_lab_encryption">التشفير</string>
<string name="server_lab_flow">التدفق</string>
<string name="server_lab_reserved">Reserved (اختياري)</string>
<string name="server_lab_local_address">العنوان المحلي IPv4(اختياري)</string>
<string name="server_lab_local_mtu">Mtu(optional, default 1420)</string>
<string name="toast_success">نجاح</string>
<string name="toast_failure">فشل</string>
<string name="toast_none_data">لا يوجد شيء</string>
<string name="toast_incorrect_protocol">بروتوكول غير صحيح</string>
<string name="toast_decoding_failed">فشل التشفير</string>
<string name="title_file_chooser">اختر ملف التكوين</string>
<string name="toast_require_file_manager">الرجاء تثبيت مدير الملفات.</string>
<string name="server_customize_config">تخصيص التكوين</string>
<string name="toast_config_file_invalid">تكوين غير صالح</string>
<string name="server_lab_content">المحتوى</string>
<string name="toast_none_data_clipboard">لا توجد بيانات في الحافظة</string>
<string name="toast_invalid_url">URL غير صالح</string>
<string name="server_lab_need_inbound">تأكد من أن منافذ الدخول متسقة مع الإعدادات</string>
<string name="toast_malformed_josn">تكوين غير صحيح</string>
<string name="server_lab_request_host6">الاستضافة (SNI) (اختياري)</string>
<string name="toast_asset_copy_failed">فشل نسخ الملف، يرجى استخدام مدير الملفات</string>
<string name="menu_item_add_file">إضافة ملفات</string>
<string name="menu_item_download_file">تحميل الملفات</string>
<string name="toast_action_not_allowed">هذا الإجراء محظور</string>
<!-- PerAppProxyActivity -->
<string name="title_user_asset_add_url">أضف عنوان URL للأصل</string>
<string name="msg_file_not_found">لم يتم العثور على الملف</string>
<string name="msg_remark_is_duplicate">الملاحظات موجودة بالفعل</string>
<string name="msg_dialog_progress">جار التحميل</string>
<string name="menu_item_search">بحث</string>
<string name="menu_item_select_all">تحديد الكل</string>
<string name="msg_enter_keywords">أدخل الكلمات الرئيسية</string>
<string name="switch_bypass_apps_mode">وضع التجاوز</string>
<string name="menu_item_select_proxy_app">تحديد التطبيق الوكيل تلقائيا</string>
<string name="msg_downloading_content">جار تحميل المحتوى</string>
<string name="menu_item_export_proxy_app">تصدير إلى الحافظة</string>
<string name="menu_item_import_proxy_app">استيراد من الحافظة</string>
<!-- Preferences -->
<string name="title_settings">الإعدادات</string>
<string name="title_advanced">إعدادات متقدمة</string>
<string name="title_vpn_settings">إعدادات VPN</string>
<string name="title_pref_per_app_proxy">وكيل لكل تطبيق</string>
<string name="summary_pref_per_app_proxy">عام: التطبيق المحدد هو الوكيل، الاتصال غير المحدد مباشر؛ \nوضع التجاوز: التطبيق المحدد متصل مباشرة، الوكيل غير المحدد. \nالخيار لتحديد التطبيق الوكيل تلقائيا في القائمة</string>
<string name="title_pref_mux_enabled">تمكين Mux</string>
<string name="summary_pref_mux_enabled">حركة مرور TCP مع 8 اتصالات افتراضية، قم بتخصيص كيفية التعامل مع UDP وQUIC أدناهn\أسرع، لكنه قد يسبب اتصالاً غير مستقر</string>
<string name="title_pref_mux_concurency">اتصالات TCP (النطاق من -1 إلى 1024)</string>
<string name="title_pref_mux_xudp_concurency">اتصالات XUDP (النطاق من -1 إلى 1024)</string>
<string name="title_pref_mux_xudp_quic">التعامل مع QUIC في نفق مكس</string>
<string-array name="mux_xudp_quic_entries">
<item>يرفض</item>
<item>مسموح</item>
<item>يتخطى</item>
</string-array>
<string name="title_pref_speed_enabled">تمكين عرض السرعة</string>
<string name="summary_pref_speed_enabled">عرض السرعة الحالية في الإشعار.\nسيتغير رمز الإشعار استنادًا إلى الاستخدام.</string>
<string name="title_pref_sniffing_enabled">تمكين Sniffing</string>
<string name="summary_pref_sniffing_enabled">محاولة استخلاص النطاق من الحزمة (الافتراضي هو التشغيل)</string>
<string name="title_pref_local_dns_enabled">تمكين DNS المحلي</string>
<string name="summary_pref_local_dns_enabled">DNS يتم معالجتها بواسطة وحدة DNS الأساسية (موصى بها، إذا كانت بحاجة إلى توجيه تجاوز الشبكة المحلية والعنوان الرئيسي)</string>
<string name="title_pref_fake_dns_enabled">تمكين DNS الوهمي</string>
<string name="summary_pref_fake_dns_enabled">DNS المحلي يعود بعنوان IP وهمي (أسرع، ولكن قد لا يعمل لبعض التطبيقات)</string>
<string name="title_pref_prefer_ipv6">تفضيل IPv6</string>
<string name="summary_pref_prefer_ipv6">تفضيل عنوان IPv6 والمسارات</string>
<string name="title_pref_routing">التوجيه</string>
<string name="title_pref_routing_domain_strategy">استراتيجية النطاق</string>
<string name="title_pref_routing_mode">قواعد محددة مسبقا</string>
<string name="title_pref_routing_custom">قواعد مخصصة</string>
<string name="title_pref_remote_dns">DNS عن بُعد (اختياري)</string>
<string name="summary_pref_remote_dns">DNS</string>
<string name="title_pref_vpn_dns">DNS VPN (IPv4/v6 فقط)</string>
<string name="title_pref_domestic_dns">DNS المحلي (اختياري)</string>
<string name="summary_pref_domestic_dns">DNS</string>
<string name="title_pref_proxy_sharing_enabled">السماح بالاتصالات من الشبكة المحلية</string>
<string name="summary_pref_proxy_sharing_enabled">يمكن للأجهزة الأخرى الاتصال بالوكيل عبر عنوان IP الخاص بك من خلال socks/http، فقط تمكين في الشبكة الموثوقة لتجنب الاتصال غير المصرح به</string>
<string name="toast_warning_pref_proxysharing_short">السماح بالاتصالات من الشبكة المحلية، تأكد من أنك في شبكة موثوقة</string>
<string name="title_pref_allow_insecure">allowInsecure</string>
<string name="summary_pref_allow_insecure">عند استخدام TLS، الافتراضي هو allowInsecure</string>
<string name="title_pref_socks_port">منفذ الوكيل SOCKS5</string>
<string name="summary_pref_socks_port">منفذ الوكيل SOCKS5</string>
<string name="title_pref_http_port">منفذ الوكيل HTTP</string>
<string name="summary_pref_http_port">منفذ الوكيل HTTP</string>
<string name="title_pref_local_dns_port">منفذ DNS المحلي</string>
<string name="summary_pref_local_dns_port">منفذ DNS المحلي</string>
<string name="title_pref_confirm_remove">تأكيد حذف ملف التكوين</string>
<string name="summary_pref_confirm_remove">هل يتطلب حذف ملف التكوين تأكيدًا ثانيًا من المستخدم</string>
<string name="title_pref_start_scan_immediate">بدء المسح فورا</string>
<string name="summary_pref_start_scan_immediate">افتح الكاميرا للمسح فورا عند بدء التشغيل، وإلا يمكنك اختيار المسح الضوئي للرمز أو اختيار صورة في شريط الأدوات</string>
<string name="title_pref_feedback">الملاحظات</string>
<string name="summary_pref_feedback">إرسال ملاحظات عن التحسينات أو الأخطاء إلى GitHub</string>
<string name="summary_pref_tg_group">الانضمام إلى مجموعة Telegram</string>
<string name="toast_tg_app_not_found">لم يتم العثور على تطبيق Telegram</string>
<string name="title_privacy_policy">حریم خصوصی</string>
<string name="title_about">About</string>
<string name="title_source_code">Source code</string>
<string name="title_tg_channel">Telegram channel</string>
<string name="title_configuration_backup">Backup configuration</string>
<string name="summary_configuration_backup">Storage location: [%s], The backup will be cleared after uninstalling the app or clearing the storage</string>
<string name="title_configuration_restore">Restore configuration</string>
<string name="title_pref_promotion">ترقية</string>
<string name="summary_pref_promotion">ترقية، انقر للحصول على التفاصيل (يمكن إزالة التبرع)</string>
<string name="title_pref_auto_update_subscription">اشتراكات التحديث التلقائي</string>
<string name="summary_pref_auto_update_subscription">قم بتحديث اشتراكاتك تلقائيًا بفاصل زمني في الخلفية. اعتمادًا على الجهاز، قد لا تعمل هذه الميزة دائمًا</string>
<string name="title_pref_auto_update_interval">الفاصل الزمني للتحديث التلقائي (الدقائق، القيمة الدنيا 15)</string>
<string name="title_core_loglevel">مستوى السجل</string>
<string name="title_mode">الوضع</string>
<string name="title_mode_help">انقر علي للمزيد من المساعدة</string>
<string name="title_language">اللغة</string>
<string name="title_ui_settings">إعدادات واجهة المستخدم</string>
<string name="title_pref_ui_mode_night">UI mode settings</string>
<string name="title_logcat">Logcat</string>
<string name="logcat_copy">نسخ</string>
<string name="logcat_clear">مسح</string>
<string name="title_service_restart">إعادة تشغيل الخدمة</string>
<string name="title_del_all_config">حذف الكل (قبل أول خطوة)</string>
<string name="title_del_duplicate_config">حذف المكررات (2)</string>
<string name="title_del_invalid_config">حذف العناوين العاطلة (بعد الاختبار؛ 4)</string>
<string name="title_export_all">تصدير التكوينات غير المخصصة إلى الحافظة</string>
<string name="title_sub_setting">إعدادات مجموعة الاشتراك</string>
<string name="sub_setting_remarks">ملاحظات</string>
<string name="sub_setting_url">URL اختياري</string>
<string name="sub_setting_enable">تمكين التحديث</string>
<string name="sub_auto_update">تمكين التحديث التلقائي</string>
<string name="title_sub_update">تحديث الاشتراك (1)</string>
<string name="title_ping_all_server">Tcping كل التكوين</string>
<string name="title_real_ping_all_server">اختبر كل العناوين (3)</string>
<string name="title_user_asset_setting">ملفات الأصول الجغرافية</string>
<string name="title_sort_by_test_results">ترتيب العناوين حسب نتائج الاختبار (5)</string>
<string name="title_filter_config">تصفية ملف التكوين</string>
<string name="filter_config_all">جميع مجموعات الاشتراك</string>
<string name="title_del_duplicate_config_count">حذف %d من التكوينات المكررة</string>
<string name="tasker_start_service">بدء الخدمة</string>
<string name="tasker_setting_confirm">تأكيد</string>
<string name="routing_settings_title">إعدادات التوجيه</string>
<string name="routing_settings_tips">مفصولة بفواصل (،)، تذكر الحفظ</string>
<string name="routing_settings_save">حفظ</string>
<string name="routing_settings_delete">مسح</string>
<string name="routing_settings_scan_replace">مسح واستبدال</string>
<string name="routing_settings_scan_append">مسح وإضافة</string>
<string name="routing_settings_default_rules">تعيين قواعد التوجيه الافتراضية</string>
<string name="connection_test_pending">فحص الاتصال</string>
<string name="connection_test_testing">جارٍ الفحص...</string>
<string name="connection_test_available">نجاح: استغرق الاتصال HTTP %dms</string>
<string name="connection_test_error">فشل في اكتشاف الاتصال بالإنترنت: %s</string>
<string name="connection_test_fail">الإنترنت غير متوفر</string>
<string name="connection_test_error_status_code">رمز الخطأ: #%d</string>
<string name="connection_connected">متصل، اضغط لفحص الاتصال</string>
<string name="connection_not_connected">غير متصل</string>
<string name="import_subscription_success">تم استيراد الاشتراك بنجاح</string>
<string name="import_subscription_failure">فشل استيراد الاشتراك</string>
<string-array name="share_method">
<item>QRcode</item>
<item>تصدير إلى الحافظة</item>
<item>تصدير التكوين الكامل إلى الحافظة</item>
</string-array>
<string-array name="share_sub_method">
<item>QRcode</item>
<item>تصدير إلى الحافظة</item>
</string-array>
<string-array name="routing_tag">
<item>مسار وكيل أو IP</item>
<item>مسار مباشر أو IP</item>
<item>مسار محظور أو IP</item>
</string-array>
<string-array name="routing_mode">
<item>وكيل عالمي</item>
<item>تجاوز عنوان الشبكة المحلية ثم الوكيل</item>
<item>تجاوز عنوان البر الرئيسي ثم الوكيل</item>
<item>تجاوز عنوان الشبكة المحلية والبر الرئيسي ثم الوكيل</item>
<item>مباشر عالمي</item>
</string-array>
<string-array name="mode_entries">
<item>VPN</item>
<item>الوكيل فقط</item>
</string-array>
<string name="menu_item_add_asset">يضيف</string>
<string name="menu_item_add_url">إضافة رابط</string>
<string name="app_name" translatable="false">v2rayNG</string>
<string name="app_widget_name">التبديل</string>
<string name="app_tile_name">التبديل</string>
<string name="app_tile_first_use">أول استخدام لهذه الميزة، يرجى استخدام التطبيق لإضافة خادم</string>
<string name="navigation_drawer_open">افتح درج التنقل</string>
<string name="navigation_drawer_close">أغلق درج التنقل</string>
<string name="migration_success">نجحت عملية ترحيل البيانات!</string>
<string name="migration_fail">فشلت عملية ترحيل البيانات!</string>
<!-- Notifications -->
<string name="notification_action_stop_v2ray">توقف</string>
<string name="toast_permission_denied">غير قادر على الحصول على الإذن</string>
<string name="notification_action_more">اضغط للمزيد</string>
<string name="toast_services_start">بدء الخدمات</string>
<string name="toast_services_stop">توقف الخدمات</string>
<string name="toast_services_success">نجح بدء الخدمات</string>
<string name="toast_services_failure">فشل بدء الخدمات</string>
<!--ServerActivity-->
<string name="title_server">ملف الإعدادات</string>
<string name="menu_item_add_config">إضافة إعدادات</string>
<string name="menu_item_save_config">حفظ الإعدادات</string>
<string name="menu_item_del_config">حذف الإعدادات</string>
<string name="menu_item_import_config_qrcode">استيراد الإعدادات من QRcode</string>
<string name="menu_item_import_config_clipboard">استيراد الإعدادات من الحافظة</string>
<string name="menu_item_import_config_manually_vmess">الكتابة يدويا [Vmess]</string>
<string name="menu_item_import_config_manually_vless">الكتابة يدويا [VLESS]</string>
<string name="menu_item_import_config_manually_ss">الكتابة يدويا [Shadowsocks]</string>
<string name="menu_item_import_config_manually_socks">الكتابة يدويا [Socks]</string>
<string name="menu_item_import_config_manually_trojan">الكتابة يدويا [Trojan]</string>
<string name="menu_item_import_config_manually_wireguard">[Wireguard] الكتابة يدويا</string>
<string name="menu_item_import_config_custom">إعدادات مخصص</string>
<string name="menu_item_import_config_custom_clipboard">استيراد الإعدادات المخصص من الحافظة</string>
<string name="menu_item_import_config_custom_local">استيراد الإعدادات المخصص من ملف محلي</string>
<string name="menu_item_import_config_custom_url">استيراد الإعدادات المخصص من URL</string>
<string name="menu_item_import_config_custom_url_scan">استيراد الإعدادات المخصص من مسح URL</string>
<string name="del_config_comfirm">تأكيد الحذف؟</string>
<string name="server_lab_remarks">ملاحظات</string>
<string name="server_lab_address">العنوان</string>
<string name="server_lab_port">المنفذ</string>
<string name="server_lab_id">المعرف</string>
<string name="server_lab_alterid">alterId</string>
<string name="server_lab_security">الأمان</string>
<string name="server_lab_network">الشبكة</string>
<string name="server_lab_more_function">النقل</string>
<string name="server_lab_head_type">نوع الرأس</string>
<string name="server_lab_mode_type">وضع gRPC</string>
<string name="server_lab_request_host">طلب استضافة (host/ws host/httpupgrade host/h2 host)/QUIC security/gRPC Authority</string>
<string name="server_lab_path">مسار (ws path/httpupgrade path/h2 path)/QUIC key/kcp seed/gRPC serviceName</string>
<string name="server_lab_stream_security">TLS</string>
<string name="server_lab_stream_fingerprint" translatable="false">بصمة</string>
<string name="server_lab_stream_alpn" translatable="false">بروتوكول الطبقة الآخرى التالية (ALPN)</string>
<string name="server_lab_allow_insecure">allowInsecure</string>
<string name="server_lab_sni">SNI</string>
<string name="server_lab_address3">العنوان</string>
<string name="server_lab_port3">المنفذ</string>
<string name="server_lab_id3">كلمة المرور</string>
<string name="server_lab_security3">الأمان</string>
<string name="server_lab_id4">كلمة المرور (اختياري)</string>
<string name="server_lab_security4">المستخدم (اختياري)</string>
<string name="server_lab_encryption">التشفير</string>
<string name="server_lab_flow">التدفق</string>
<string name="server_lab_public_key" translatable="false">المفتاح العام</string>
<string name="server_lab_short_id" translatable="false">الهوية المختصرة</string>
<string name="server_lab_spider_x" translatable="false">سبايدر إكس</string>
<string name="server_lab_secret_key" translatable="false">المفتاح السري</string>
<string name="server_lab_reserved">محجوز (اختياري)</string>
<string name="server_lab_local_address">العنوان المحلي (اختياري IPv4/IPv6، مفصولة بفاصلة)</string>
<string name="server_lab_local_mtu">Mtu (اختياري، افتراضي 1420)</string>
<string name="toast_success">نجاح</string>
<string name="toast_failure">فشل</string>
<string name="toast_none_data">لا يوجد شيء</string>
<string name="toast_incorrect_protocol">بروتوكول غير صحيح</string>
<string name="toast_decoding_failed">فشل التشفير</string>
<string name="title_file_chooser">اختر ملف الإعدادات</string>
<string name="toast_require_file_manager">الرجاء تثبيت مدير الملفات.</string>
<string name="server_customize_config">تخصيص الإعدادات</string>
<string name="toast_config_file_invalid">إعدادات غير صالحة</string>
<string name="server_lab_content">المحتوى</string>
<string name="toast_none_data_clipboard">لا توجد بيانات في الحافظة</string>
<string name="toast_invalid_url">URL غير صالح</string>
<string name="server_lab_need_inbound">تأكد من أن منافذ الدخول متسقة مع الإعدادات</string>
<string name="toast_malformed_josn">إعدادات غير صحيحة</string>
<string name="server_lab_request_host6">استضافة (SNI) (اختياري)</string>
<string name="toast_asset_copy_failed">فشل نسخ الملف، يرجى استخدام مدير الملفات</string>
<string name="menu_item_add_asset">إضافة أصول</string>
<string name="menu_item_add_file">إضافة ملفات</string>
<string name="menu_item_add_url">إضافة رابط</string>
<string name="title_url" translatable="false">رابط</string>
<string name="menu_item_download_file">تحميل الملفات</string>
<string name="title_user_asset_add_url">أضف عنوان URL للأصل</string>
<string name="msg_file_not_found">لم يتم العثور على الملف</string>
<string name="msg_remark_is_duplicate">الملاحظات موجودة بالفعل</string>
<string name="toast_action_not_allowed">هذا الإجراء محظور</string>
<!-- PerAppProxyActivity -->
<string name="msg_dialog_progress">جار التحميل</string>
<string name="menu_item_search">بحث</string>
<string name="menu_item_select_all">تحديد الكل</string>
<string name="msg_enter_keywords">أدخل الكلمات الرئيسية</string>
<string name="switch_bypass_apps_mode">وضع التجاوز</string>
<string name="menu_item_select_proxy_app">تحديد التطبيق الوكيل تلقائيا</string>
<string name="msg_downloading_content">جار تحميل المحتوى</string>
<string name="menu_item_export_proxy_app">تصدير إلى الحافظة</string>
<string name="menu_item_import_proxy_app">استيراد من الحافظة</string>
<!-- Preferences -->
<string name="title_settings">الإعدادات</string>
<string name="title_advanced">إعدادات متقدمة</string>
<string name="title_vpn_settings">إعدادات VPN</string>
<string name="title_pref_per_app_proxy">وكيل لكل تطبيق</string>
<string name="summary_pref_per_app_proxy">عام: التطبيق المحدد هو الوكيل، الاتصال غير المحدد مباشر؛ \nوضع التجاوز: التطبيق المحدد متصل مباشرة، الوكيل غير المحدد. \nالخيار لتحديد التطبيق الوكيل تلقائيا في القائمة</string>
<string name="title_mux_settings">إعدادات Mux</string>
<string name="title_pref_mux_enabled">تمكين Mux</string>
<string name="summary_pref_mux_enabled">حركة مرور TCP مع 8 اتصالات افتراضية، قم بتخصيص كيفية التعامل مع UDP وQUIC أدناهn\أسرع، لكنه قد يسبب اتصالاً غير مستقر</string>
<string name="title_pref_mux_concurency">اتصالات TCP (النطاق من -1 إلى 1024)</string>
<string name="title_pref_mux_xudp_concurency">اتصالات XUDP (النطاق من -1 إلى 1024)</string>
<string name="title_pref_mux_xudp_quic">التعامل مع QUIC في نفق مكس</string>
<string name="title_pref_speed_enabled">تمكين عرض السرعة</string>
<string name="summary_pref_speed_enabled">عرض السرعة الحالية في الإشعار.\nسيتغير رمز الإشعار استنادًا إلى الاستخدام.</string>
<string name="title_pref_sniffing_enabled">تمكين Sniffing</string>
<string name="summary_pref_sniffing_enabled">محاولة استخلاص النطاق من الحزمة (مشغلة افتراضيًا)</string>
<string name="title_pref_local_dns_enabled">تمكين DNS المحلي</string>
<string name="summary_pref_local_dns_enabled">DNS يتم معالجتها بواسطة وحدة DNS الأساسية (موصى بها، إذا كانت بحاجة إلى توجيه تجاوز الشبكة المحلية والعنوان الرئيسي)</string>
<string name="title_pref_fake_dns_enabled">تمكين DNS الوهمي</string>
<string name="summary_pref_fake_dns_enabled">DNS المحلي يعود بعنوان IP وهمي (أسرع، ولكن قد لا يعمل لبعض التطبيقات)</string>
<string name="title_pref_prefer_ipv6">تفضيل IPv6</string>
<string name="summary_pref_prefer_ipv6">تفضيل عنوان IPv6 والمسارات</string>
<string name="title_pref_routing">التوجيه</string>
<string name="title_pref_routing_domain_strategy">استراتيجية النطاق</string>
<string name="title_pref_routing_mode">قواعد محددة مسبقا</string>
<string name="title_pref_routing_custom">قواعد مخصصة</string>
<string name="title_pref_remote_dns">DNS (udp/tcp/https/quic) عن بُعد (اختياري)</string>
<string name="summary_pref_remote_dns">DNS</string>
<string name="title_pref_vpn_dns">DNS VPN (IPv4/v6 فقط)</string>
<string name="title_pref_domestic_dns">DNS المحلي (اختياري)</string>
<string name="summary_pref_domestic_dns">DNS</string>
<string name="title_pref_proxy_sharing_enabled">السماح بالاتصالات من الشبكة المحلية</string>
<string name="summary_pref_proxy_sharing_enabled">يمكن للأجهزة الأخرى الاتصال بالوكيل عبر عنوان IP الخاص بك من خلال socks/http، فقط تمكين في الشبكة الموثوقة لتجنب الاتصال غير المصرح به</string>
<string name="toast_warning_pref_proxysharing_short">السماح بالاتصالات من الشبكة المحلية، تأكد من أنك في شبكة موثوقة</string>
<string name="title_pref_allow_insecure">allowInsecure</string>
<string name="summary_pref_allow_insecure">عند استخدام TLS، الافتراضي هو allowInsecure</string>
<string name="title_pref_socks_port">منفذ الوكيل SOCKS5</string>
<string name="summary_pref_socks_port">منفذ الوكيل SOCKS5</string>
<string name="title_pref_http_port">منفذ الوكيل HTTP</string>
<string name="summary_pref_http_port">منفذ الوكيل HTTP</string>
<string name="title_pref_local_dns_port">منفذ DNS المحلي</string>
<string name="summary_pref_local_dns_port">منفذ DNS المحلي</string>
<string name="title_pref_confirm_remove">تأكيد حذف ملف الإعدادات</string>
<string name="summary_pref_confirm_remove">هل يتطلب حذف ملف الإعدادات تأكيدًا ثانيًا من المستخدم</string>
<string name="title_pref_start_scan_immediate">بدء المسح فورا</string>
<string name="summary_pref_start_scan_immediate">افتح الكاميرا للمسح فورا عند بدء التشغيل، وإلا يمكنك اختيار المسح الضوئي للرمز أو اختيار صورة في شريط الأدوات</string>
<string name="title_pref_feedback">الملاحظات</string>
<string name="summary_pref_feedback">إرسال ملاحظات عن التحسينات أو الأخطاء إلى GitHub</string>
<string name="summary_pref_tg_group">الانضمام إلى مجموعة Telegram</string>
<string name="toast_tg_app_not_found">لم يتم العثور على تطبيق تيليجرام</string>
<string name="title_privacy_policy">سياسة الخصوصية\nترجمة م. ابراهيم قاسم</string>
<string name="title_about">عن</string>
<string name="title_source_code">الكود المصدري</string>
<string name="title_tg_channel">قناة تليجرام</string>
<string name="title_configuration_backup">إعدادات النسخ الاحتياطي</string>
<string name="summary_configuration_backup">مكان التخزين: [%s]، سيتم مسح النسخة الاحتياطية بعد إلغاء تثبيت التطبيق أو مسح مساحة التخزين</string>
<string name="title_configuration_restore">استعادة الاعدادات</string>
<string name="title_pref_promotion">ترقية</string>
<string name="summary_pref_promotion">ترقية، انقر للحصول على التفاصيل (يمكن إزالة التبرع)</string>
<string name="title_pref_auto_update_subscription">اشتراكات التحديث التلقائي</string>
<string name="summary_pref_auto_update_subscription">قم بتحديث اشتراكاتك تلقائيًا بفاصل زمني في الخلفية. اعتمادًا على الجهاز، قد لا تعمل هذه الميزة دائمًا</string>
<string name="title_pref_auto_update_interval">الفاصل الزمني للتحديث التلقائي (أقل قيمة بالدقائق 15)</string>
<string name="title_core_loglevel">مستوى السجل</string>
<string name="title_mode">الوضع</string>
<string name="title_mode_help">انقر هنا للمزيد من المساعدة</string>
<string name="title_language">اللغة</string>
<string name="title_ui_settings">إعدادات واجهة المستخدم</string>
<string name="title_pref_ui_mode_night">إعدادات وضع واجهة المستخدم</string>
<string name="title_logcat">Logcat</string>
<string name="logcat_copy">نسخ</string>
<string name="logcat_clear">مسح</string>
<string name="title_service_restart">إعادة تشغيل الخدمة</string>
<string name="title_del_all_config">حذف الكل (قبل أول خطوة)</string>
<string name="title_del_duplicate_config">حذف المكررات (2)</string>
<string name="title_del_invalid_config">حذف العناوين العاطلة (بعد الاختبار؛ 4)</string>
<string name="title_export_all">تصدير الإعدادات غير المخصصة إلى الحافظة</string>
<string name="title_sub_setting">إعدادات الاشتراكات</string>
<string name="sub_setting_remarks">ملاحظات</string>
<string name="sub_setting_url">URL اختياري</string>
<string name="sub_setting_enable">تمكين التحديث</string>
<string name="sub_auto_update">تمكين التحديث التلقائي</string>
<string name="title_sub_update">تحديث الاشتراك (1)</string>
<string name="title_ping_all_server">Tcping كل الإعدادات</string>
<string name="title_real_ping_all_server">اختبر كل العناوين (3)</string>
<string name="title_user_asset_setting">ملفات الأصول الجغرافية</string>
<string name="title_sort_by_test_results">ترتيب العناوين حسب نتائج الاختبار (5)</string>
<string name="title_filter_config">تصفية ملف الإعدادات</string>
<string name="filter_config_all">جميع مجموعات الاشتراك</string>
<string name="title_del_duplicate_config_count">حذف %d من الإعدادات المكررة</string>
<string name="tasker_start_service">بدء الخدمة</string>
<string name="tasker_setting_confirm">تأكيد</string>
<string name="routing_settings_title">إعدادات التوجيه</string>
<string name="routing_settings_tips">مفصولة بفواصل (،)، تذكر الحفظ</string>
<string name="routing_settings_save">حفظ</string>
<string name="routing_settings_delete">مسح</string>
<string name="routing_settings_scan_replace">مسح واستبدال</string>
<string name="routing_settings_scan_append">مسح وإضافة</string>
<string name="routing_settings_default_rules">تعيين قواعد التوجيه الافتراضية</string>
<string name="connection_test_pending">فحص الاتصال</string>
<string name="connection_test_testing">جارٍ الفحص...</string>
<string name="connection_test_available">نجاح: استغرق الاتصال HTTP %dms</string>
<string name="connection_test_error">فشل في اكتشاف الاتصال بالإنترنت: %s</string>
<string name="connection_test_fail">الإنترنت غير متوفر</string>
<string name="connection_test_error_status_code">رمز الخطأ: #%d</string>
<string name="connection_connected">متصل، اضغط لفحص الاتصال</string>
<string name="connection_not_connected">غير متصل</string>
<string name="import_subscription_success">تم استيراد الاشتراك بنجاح</string>
<string name="import_subscription_failure">فشل استيراد الاشتراك</string>
<string name="title_fragment_settings">إعدادات الكسر / fragment</string>
<string name="title_pref_fragment_packets">حزم الكسر</string>
<string name="title_pref_fragment_length">طول الكسر (الحد الأدنى - الحد الأقصى)</string>
<string name="title_pref_fragment_interval">فاصل زمني للكسر (الحد الأدنى - الحد الأقصى)</string>
<string name="title_pref_fragment_enabled">تمكين الكسر</string>
<string-array name="mux_xudp_quic_entries">
<item>رفض</item>
<item>سماح</item>
<item>تخطي</item>
</string-array>
<string-array name="share_method">
<item>QRcode</item>
<item>تصدير إلى الحافظة</item>
<item>تصدير الإعدادت الكاملة إلى الحافظة</item>
</string-array>
<string-array name="share_sub_method">
<item>QRcode</item>
<item>تصدير إلى الحافظة</item>
</string-array>
<string-array name="routing_tag">
<item>عنوان URL للوكيل أو IP</item>
<item>عنوان URL المباشر أو IP</item>
<item>عنوان URL المحظور أو IP</item>
</string-array>
<string-array name="routing_mode">
<item>وكيل عالمي proxy</item>
<item>تجاوز عنوان LAN ثم الوكيل proxy</item>
<item>تجاوز عنوان البر الرئيسي ثم الوكيل</item>
<item>تجاوز عنوان LAN والبر الرئيسي ثم الوكيل proxy</item>
<item>عالمي مباشر</item>
</string-array>
<string-array name="mode_entries">
<item>VPN</item>
<item>Proxy فقط</item>
</string-array>
<string-array name="ui_mode_night">
<item>حسب النظام</item>
<item>عادي</item>
<item>مظلم</item>
</string-array>
<string-array name="ui_mode_night">
<item>Follow system</item>
<item>Light</item>
<item>Dark</item>
</string-array>
</resources>
@@ -1,15 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="color_switch_fab_grey">#424242</color>
<color name="color_fab_grey">#646464</color>
<color name="color_fab_active">#f97910</color>
<color name="color_fab_inactive">#646464</color>
<color name="color_secondary">#BDBDBD</color>
<color name="colorSelected">#FFFFFF</color>
<color name="colorUnselected">#222222</color>
<color name="colorPrimary">#222222</color>
<color name="colorPrimaryDark">#000000</color>
<color name="colorPrimary">#212121</color>
<color name="colorAccent">#FFFFFF</color>
<color name="colorBg">#000000</color>
<color name="colorText">#FFFFFF</color>
<color name="colorMainTestBg">#222222</color>
</resources>
@@ -3,14 +3,10 @@
<style name="AppThemeDayNight" parent="Theme.AppCompat.DayNight.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorMainBg">@color/colorBg</item>
<item name="colorMainText">@color/colorText</item>
<item name="android:statusBarColor">@color/colorBg</item>
<item name="android:navigationBarColor">@color/colorBg</item>
<item name="android:statusBarColor">@color/colorPrimary</item>
<item name="android:navigationBarColor">@color/colorPrimary</item>
<item name="colorControlNormal">@color/colorAccent</item>
<item name="android:windowBackground">@color/colorBg</item>
</style>
</resources>
@@ -192,7 +192,7 @@
<string name="title_mode_help">Нажмите для получения дополнительной информации</string>
<string name="title_language">Язык</string>
<string name="title_ui_settings">Настройки интерфейса</string>
<string name="title_pref_ui_mode_night">UI mode settings</string>
<string name="title_pref_ui_mode_night">Тема интерфейса</string>
<string name="title_logcat">Журнал</string>
<string name="logcat_copy">Копировать</string>
@@ -275,9 +275,9 @@
</string-array>
<string-array name="ui_mode_night">
<item>Follow system</item>
<item>Light</item>
<item>Dark</item>
<item>Как в системе</item>
<item>Светлая</item>
<item>Тёмная</item>
</string-array>
</resources>
@@ -1,5 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="colorMainBg" format="color"/>
<attr name="colorMainText" format="color"/>
</resources>
+4 -10
View File
@@ -2,18 +2,12 @@
<resources>
<color name="colorPing">#009966</color>
<color name="colorPingRed">#FF0099</color>
<color name="color_fab_orange">#f97910</color>
<color name="colorConfigType">#f97910</color>
<color name="color_switch_fab_grey">#CDCDCD</color>
<color name="color_fab_grey">#9C9C9C</color>
<color name="color_fab_active">#f97910</color>
<color name="color_fab_inactive">#9C9C9C</color>
<color name="color_secondary">#727272</color>
<color name="colorSelected">#000000</color>
<color name="colorUnselected">#FFFFFF</color>
<color name="colorPrimary">#FFFFFF</color>
<color name="colorPrimaryDark">#000000</color>
<color name="colorPrimary">#F5F5F5</color>
<color name="colorAccent">#000000</color>
<color name="colorBg">#FFFFFF</color>
<color name="colorText">#000000</color>
<color name="colorMainTestBg">#F0F1F6</color>
</resources>
+1 -9
View File
@@ -2,10 +2,7 @@
<style name="AppThemeDayNight" parent="Theme.AppCompat.DayNight">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorMainBg">@color/colorBg</item>
<item name="colorMainText">@color/colorText</item>
<item name="android:statusBarColor">@color/colorPrimary</item>
<item name="android:navigationBarColor">@color/colorPrimary</item>
<item name="colorControlNormal">@color/colorAccent</item>
@@ -17,12 +14,7 @@
</style>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<!--<item name="colorPrimary">@color/colorPrimary</item>-->
<!--<item name="colorPrimaryDark">@color/colorPrimaryDark</item>-->
<!--<item name="colorAccent">@color/colorAccent</item>-->
</style>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"></style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
+81 -72
View File
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<CheckBoxPreference
android:defaultValue="true"
@@ -24,9 +25,9 @@
android:title="@string/title_pref_fake_dns_enabled" />
<EditTextPreference
android:inputType="number"
android:key="pref_local_dns_port"
android:summary="10853"
android:inputType="number"
android:title="@string/title_pref_local_dns_port" />
<EditTextPreference
@@ -44,11 +45,6 @@
android:summary="%s"
android:title="@string/title_pref_routing_domain_strategy" />
<Preference
android:key="pref_routing_custom"
android:summary="@string/title_pref_routing_custom"
android:title="@string/title_pref_routing_custom" />
<ListPreference
android:defaultValue="3"
android:entries="@array/routing_mode"
@@ -57,69 +53,11 @@
android:summary="%s"
android:title="@string/title_pref_routing_mode" />
</PreferenceCategory>
<Preference
android:key="pref_routing_custom"
android:summary="@string/title_pref_routing_custom"
android:title="@string/title_pref_routing_custom" />
<PreferenceCategory android:title="@string/title_mux_settings">
<CheckBoxPreference
android:key="pref_mux_enabled"
android:summary="@string/summary_pref_mux_enabled"
android:title="@string/title_pref_mux_enabled" />
<EditTextPreference
android:key="pref_mux_concurency"
android:summary="8"
android:inputType="number"
android:title="@string/title_pref_mux_concurency" />
<EditTextPreference
android:key="pref_mux_xudp_concurency"
android:summary="8"
android:inputType="number"
android:title="@string/title_pref_mux_xudp_concurency" />
<ListPreference
android:defaultValue="reject"
android:entries="@array/mux_xudp_quic_entries"
android:entryValues="@array/mux_xudp_quic_value"
android:key="pref_mux_xudp_quic"
android:summary="%s"
android:title="@string/title_pref_mux_xudp_quic" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/title_fragment_settings">
<CheckBoxPreference
android:key="pref_fragment_enabled"
android:title="@string/title_pref_fragment_enabled"/>
<ListPreference
android:key="pref_fragment_packets"
android:defaultValue="tlshello"
android:entries="@array/fragment_packets"
android:entryValues="@array/fragment_packets"
android:summary="%s"
android:title="@string/title_pref_fragment_packets" />
<EditTextPreference
android:key="pref_fragment_length"
android:summary="50-100"
android:title="@string/title_pref_fragment_length" />
<EditTextPreference
android:key="pref_fragment_interval"
android:summary="10-20"
android:title="@string/title_pref_fragment_interval" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/title_sub_setting">
<CheckBoxPreference
android:key="pref_auto_update_subscription"
android:summary="@string/summary_pref_auto_update_subscription"
android:title="@string/title_pref_auto_update_subscription" />
<EditTextPreference
android:key="pref_auto_update_interval"
android:summary="1440"
android:inputType="number"
android:title="@string/title_pref_auto_update_interval" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/title_ui_settings">
@@ -155,7 +93,78 @@
android:title="@string/title_pref_ui_mode_night" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/title_advanced">
<PreferenceCategory
android:title="@string/title_mux_settings"
app:initialExpandedChildrenCount="0">
<CheckBoxPreference
android:key="pref_mux_enabled"
android:summary="@string/summary_pref_mux_enabled"
android:title="@string/title_pref_mux_enabled" />
<EditTextPreference
android:inputType="number"
android:key="pref_mux_concurency"
android:summary="8"
android:title="@string/title_pref_mux_concurency" />
<EditTextPreference
android:inputType="number"
android:key="pref_mux_xudp_concurency"
android:summary="8"
android:title="@string/title_pref_mux_xudp_concurency" />
<ListPreference
android:defaultValue="reject"
android:entries="@array/mux_xudp_quic_entries"
android:entryValues="@array/mux_xudp_quic_value"
android:key="pref_mux_xudp_quic"
android:summary="%s"
android:title="@string/title_pref_mux_xudp_quic" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/title_fragment_settings"
app:initialExpandedChildrenCount="0">
<CheckBoxPreference
android:key="pref_fragment_enabled"
android:title="@string/title_pref_fragment_enabled" />
<EditTextPreference
android:key="pref_fragment_length"
android:summary="50-100"
android:title="@string/title_pref_fragment_length" />
<EditTextPreference
android:key="pref_fragment_interval"
android:summary="10-20"
android:title="@string/title_pref_fragment_interval" />
<ListPreference
android:defaultValue="tlshello"
android:entries="@array/fragment_packets"
android:entryValues="@array/fragment_packets"
android:key="pref_fragment_packets"
android:summary="%s"
android:title="@string/title_pref_fragment_packets" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/title_sub_setting"
app:initialExpandedChildrenCount="0">
<CheckBoxPreference
android:key="pref_auto_update_subscription"
android:summary="@string/summary_pref_auto_update_subscription"
android:title="@string/title_pref_auto_update_subscription" />
<EditTextPreference
android:inputType="number"
android:key="pref_auto_update_interval"
android:summary="1440"
android:title="@string/title_pref_auto_update_interval" />
</PreferenceCategory>
<PreferenceCategory
android:title="@string/title_advanced"
app:initialExpandedChildrenCount="0">
<CheckBoxPreference
android:key="pref_prefer_ipv6"
@@ -175,15 +184,15 @@
android:title="@string/title_pref_allow_insecure" />
<EditTextPreference
android:inputType="number"
android:key="pref_socks_port"
android:summary="10808"
android:inputType="number"
android:title="@string/title_pref_socks_port" />
<EditTextPreference
android:inputType="number"
android:key="pref_http_port"
android:summary="10809"
android:inputType="number"
android:title="@string/title_pref_http_port" />
<EditTextPreference
@@ -28,18 +28,4 @@
android:targetPackage="com.v2ray.ang" />
<categories android:name="android.shortcut.conversation" />
</shortcut>
<shortcut
android:enabled="true"
android:icon="@drawable/ic_qu_settings_24dp"
android:shortcutDisabledMessage="@string/title_settings"
android:shortcutId="shortcuts_settings"
android:shortcutLongLabel="@string/title_settings"
android:shortcutShortLabel="@string/title_settings">
<intent
android:action="android.intent.action.VIEW"
android:targetClass="com.v2ray.ang.ui.SettingsActivity"
android:targetPackage="com.v2ray.ang" />
<categories android:name="android.shortcut.conversation" />
</shortcut>
</shortcuts>