Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 17af24d179 | |||
| c260e447ea | |||
| 0eb40ae993 | |||
| 18f3e39346 | |||
| 311af02726 | |||
| b799969de8 | |||
| 93541883bb | |||
| 33430bff8d | |||
| 3bc2081540 | |||
| a3b1feabff | |||
| 7af8d3843e | |||
| 2235805800 |
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user