Skip to content

File tree

14 files changed

+93
-1
lines changed

14 files changed

+93
-1
lines changed

app/src/main/kotlin/com/neko/v2ray/ui/RoutingSettingActivity.kt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import androidx.recyclerview.widget.ItemTouchHelper
1212
import androidx.recyclerview.widget.LinearLayoutManager
1313
import com.google.android.material.appbar.MaterialToolbar
1414
import com.google.android.material.appbar.CollapsingToolbarLayout
15+
import com.google.gson.Gson
1516
import com.neko.v2ray.AppConfig
1617
import com.neko.v2ray.R
1718
import com.neko.v2ray.databinding.ActivityRoutingSettingBinding
@@ -112,6 +113,44 @@ class RoutingSettingActivity : BaseActivity() {
112113
true
113114
}
114115

116+
R.id.import_rulesets_from_clipboard -> {
117+
AlertDialog.Builder(this).setMessage(R.string.routing_settings_import_rulesets_tip)
118+
.setPositiveButton(android.R.string.ok) { _, _ ->
119+
try {
120+
val clipboard = Utils.getClipboard(this)
121+
lifecycleScope.launch(Dispatchers.IO) {
122+
val ret = SettingsManager.resetRoutingRulesetsFromClipboard(clipboard)
123+
launch(Dispatchers.Main) {
124+
if (ret) {
125+
refreshData()
126+
toast(R.string.toast_success)
127+
} else {
128+
toast(R.string.toast_failure)
129+
}
130+
}
131+
}
132+
} catch (e: Exception) {
133+
e.printStackTrace()
134+
}
135+
}
136+
.setNegativeButton(android.R.string.no) { _, _ ->
137+
//do noting
138+
}
139+
.show()
140+
true
141+
}
142+
143+
R.id.export_rulesets_to_clipboard -> {
144+
val rulesetList = MmkvManager.decodeRoutingRulesets()
145+
if (rulesetList.isNullOrEmpty()) {
146+
toast(R.string.toast_failure)
147+
} else {
148+
Utils.setClipboard(this, Gson().toJson(rulesetList))
149+
toast(R.string.toast_success)
150+
}
151+
true
152+
}
153+
115154
else -> super.onOptionsItemSelected(item)
116155
}
117156

app/src/main/kotlin/com/neko/v2ray/util/SettingsManager.kt

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,37 @@ object SettingsManager {
3636
}
3737

3838
fun resetRoutingRulesets(context: Context, index: Int) {
39+
val rulesetList = getPresetRoutingRulesets(context, index) ?: return
40+
resetRoutingRulesetsCommon(rulesetList)
41+
}
42+
43+
fun resetRoutingRulesetsFromClipboard(content: String?): Boolean {
44+
if (content.isNullOrEmpty()) {
45+
return false
46+
}
47+
48+
try {
49+
val rulesetList = Gson().fromJson(content, Array<RulesetItem>::class.java).toMutableList()
50+
if (rulesetList.isNullOrEmpty()) {
51+
return false
52+
}
53+
54+
resetRoutingRulesetsCommon(rulesetList)
55+
return true
56+
} catch (e: Exception) {
57+
e.printStackTrace()
58+
return false
59+
}
60+
}
61+
62+
private fun resetRoutingRulesetsCommon(rulesetList: MutableList<RulesetItem>) {
3963
val rulesetNew: MutableList<RulesetItem> = mutableListOf()
4064
MmkvManager.decodeRoutingRulesets()?.forEach { key ->
4165
if (key.looked == true) {
4266
rulesetNew.add(key)
4367
}
4468
}
4569

46-
val rulesetList = getPresetRoutingRulesets(context, index) ?: return
4770
rulesetNew.addAll(rulesetList)
4871
MmkvManager.encodeRoutingRulesets(rulesetNew)
4972
}

app/src/main/res/menu/menu_routing_setting.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,13 @@
1414
android:id="@+id/import_rulesets"
1515
android:title="@string/routing_settings_import_rulesets"
1616
app:showAsAction="never" />
17+
<item
18+
android:id="@+id/import_rulesets_from_clipboard"
19+
android:title="@string/routing_settings_import_rulesets_from_clipboard"
20+
app:showAsAction="never" />
21+
<item
22+
android:id="@+id/export_rulesets_to_clipboard"
23+
android:title="@string/routing_settings_export_rulesets_to_clipboard"
24+
app:showAsAction="never" />
1725

1826
</menu>

app/src/main/res/values-ar/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@
246246
<string name="routing_settings_add_rule">إضافة القاعدة</string>
247247
<string name="routing_settings_import_rulesets">استيراد مجموعة القواعد</string>
248248
<string name="routing_settings_import_rulesets_tip">سيتم حذف مجموعات القواعد الحالية، هل أنت متأكد من الاستمرار؟</string>
249+
<string name="routing_settings_import_rulesets_from_clipboard">استيراد مجموعة القواعد من الحافظة</string>
250+
<string name="routing_settings_export_rulesets_to_clipboard">تصدير مجموعة القواعد إلى الحافظة</string>
249251
<string name="routing_settings_locked">مقفل، حافظ على هذه القاعدة عند استيراد الإعدادات المسبقة</string>
250252

251253
<string name="connection_test_pending">تحقق من الاتصال</string>

app/src/main/res/values-fa/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,8 @@
248248
<string name="routing_settings_add_rule">افزودن قانون</string>
249249
<string name="routing_settings_import_rulesets">وارد کردن مجموعه قوانین</string>
250250
<string name="routing_settings_import_rulesets_tip">مجموعه قوانین موجود حذف خواهند شد، آیا مطمئن هستید که ادامه می دهید؟</string>
251+
<string name="routing_settings_import_rulesets_from_clipboard">وارد کردن مجموعه قوانین از کلیپ بورد</string>
252+
<string name="routing_settings_export_rulesets_to_clipboard">صادر کردن مجموعه قوانین به کلیپ بورد</string>
251253
<string name="routing_settings_locked">قفل است، این قانون را هنگام وارد کردن از پیش تنظیمات حفظ کنید</string>
252254

253255
<string name="connection_test_pending">اتصال را بررسی کنید</string>

app/src/main/res/values-in/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@
246246
<string name="routing_settings_add_rule">Tambah aturan</string>
247247
<string name="routing_settings_import_rulesets">Impor rangkaian aturan</string>
248248
<string name="routing_settings_import_rulesets_tip">Rangkaian aturan yang ada akan dihapus, apakah Anda yakin untuk melanjutkan?</string>
249+
<string name="routing_settings_import_rulesets_from_clipboard">Impor set aturan dari papan klip</string>
250+
<string name="routing_settings_export_rulesets_to_clipboard">Ekspor set aturan ke papan klip</string>
249251
<string name="routing_settings_locked">Terkunci, pertahankan aturan ini saat mengimpor preset</string>
250252

251253
<string name="connection_test_pending">Periksa Konektivitas</string>

app/src/main/res/values-ja/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@
246246
<string name="routing_settings_add_rule">ルールを追加する</string>
247247
<string name="routing_settings_import_rulesets">ルールセットをインポートする</string>
248248
<string name="routing_settings_import_rulesets_tip">既存のルールセットは削除されます。続行しますか?</string>
249+
<string name="routing_settings_import_rulesets_from_clipboard">クリップボードからルールセットをインポート</string>
250+
<string name="routing_settings_export_rulesets_to_clipboard">ルールセットをクリップボードにエクスポート</string>
249251
<string name="routing_settings_locked">ロックされています。プリセットをインポートするときにこのルールを維持します</string>
250252

251253
<string name="connection_test_pending">接続をチェックする</string>

app/src/main/res/values-jw/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@
246246
<string name="routing_settings_add_rule">Tambah aturan</string>
247247
<string name="routing_settings_import_rulesets">Set aturan impor</string>
248248
<string name="routing_settings_import_rulesets_tip">Setel aturan sing ana bakal dibusak, sampeyan yakin bakal terus?</string>
249+
<string name="routing_settings_import_rulesets_from_clipboard">Impor aturan saka clipboard</string>
250+
<string name="routing_settings_export_rulesets_to_clipboard">Ekspor set aturan menyang clipboard</string>
249251
<string name="routing_settings_locked">Dikunci, tetep aturan iki nalika ngimpor preset</string>
250252

251253
<string name="connection_test_pending">Priksa Konektivitas</string>

app/src/main/res/values-ru/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@
246246
<string name="routing_settings_add_rule">Добавление правила</string>
247247
<string name="routing_settings_import_rulesets">Импорт набора правил</string>
248248
<string name="routing_settings_import_rulesets_tip">Существующие наборы правил будут удалены. Вы уверены, что хотите продолжить?</string>
249+
<string name="routing_settings_import_rulesets_from_clipboard">Импортировать набор правил из буфера обмена</string>
250+
<string name="routing_settings_export_rulesets_to_clipboard">Экспорт набора правил в буфер обмена</string>
249251
<string name="routing_settings_locked">Заблокировано, сохранить это правило при импорте предустановок</string>
250252

251253
<string name="connection_test_pending">Проверьте подключение</string>

app/src/main/res/values-su/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,8 @@
246246
<string name="routing_settings_add_rule">Tambahkeun aturan</string>
247247
<string name="routing_settings_import_rulesets">Impor set aturan</string>
248248
<string name="routing_settings_import_rulesets_tip">Setélan aturan anu aya bakal dipupus, naha anjeun yakin bakal neruskeun?</string>
249+
<string name="routing_settings_import_rulesets_from_clipboard">Impor set aturan tina clipboard</string>
250+
<string name="routing_settings_export_rulesets_to_clipboard">Ékspor aturan ka clipboard</string>
249251
<string name="routing_settings_locked">Dikonci, jaga aturan ieu nalika impor preset</string>
250252

251253
<string name="connection_test_pending">Pariksa Konéktipitas</string>

0 commit comments

Comments
 (0)