diff --git a/.github/ISSUE_TEMPLATE/bug_vi.md b/.github/ISSUE_TEMPLATE/bug_vi.md new file mode 100644 index 0000000..619a833 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_vi.md @@ -0,0 +1,33 @@ +--- +name: Sự cố trên v2rayNG +about: Tạo báo cáo để giúp chúng tôi cải thiện. +--- + +Vui lòng tự khắc phục sự cố phía máy chủ trước khi đặt câu hỏi và cũng thực hiện tìm kiếm để xem có ai khác đã đặt câu hỏi tương tự hay không. + + + ### Hành vi mong đợi + mô tả những gì bạn nghĩ sẽ xảy ra + + ### Hành vi thực tế + mô tả những gì thực sự đã xảy ra + + ### Phương pháp sao chép + 1. + 2. + 3. + + ### Thông tin nhật ký + + + Nhận nhật ký qua `adb logcat -s com.v2ray.ang GoLog V2rayConfigUtilGoLog Main`. Vui lòng xóa thông tin nhạy cảm có thể xuất hiện trong nhật ký của chính bạn. + + Nếu sự cố có thể được tái tạo, bạn nên thực thi `adb logcat -c` để xóa nhật ký hệ thống trước khi thực hiện lệnh trên, sau đó thao tác để tái tạo sự cố. + `` ' + dán nhật ký vào đây + `` ' + + + ### Thông tin Môi trường + + ### Thông tin bổ sung (tùy chọn) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..8ca20ac --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: Sự cố trên V2Ray + url: https://github.com/v2fly/v2ray-core/ + about: Nếu bạn gặp vấn đề với V2Ray thay vì v2rayNG, vui lòng truy cập liên kết này để thảo luận. diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0963c50 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.dat +*.jks +V2rayNG/app/release/output.json +.idea/ +.gradle/ diff --git a/CR.md b/CR.md new file mode 100644 index 0000000..764086b --- /dev/null +++ b/CR.md @@ -0,0 +1,27 @@ +Chính sách quyền riêng tư của v2rayNG + + Cập nhật lần cuối 2017-11-22 + +v2rayNG tôn trọng và bảo vệ quyền riêng tư cá nhân của tất cả người dùng, vì vậy chúng tôi công khai chính sách bảo mật này với mọi người. **Việc bạn sử dụng v2rayNG có nghĩa là bạn đã đọc và đồng ý với các điều khoản, nếu không đồng ý với các điều khoản, vui lòng ngừng sử dụng và gỡ cài đặt v2rayNG ngay lập tức.** + +1. Thu thập thông tin + +Bản thân phần mềm v2rayNG không gửi bất kỳ thông tin nào cho nhà phát triển, nhưng thị trường ứng dụng nơi bạn tải xuống phần mềm (chẳng hạn như Google Play) có thể thu thập thông tin liên quan về trạng thái đang chạy của ứng dụng và cung cấp cho nhà phát triển v2rayNG. Để biết thông tin này, vui lòng đọc chính sách bảo mật được cung cấp bởi thị trường bạn sử dụng. + + +2. Chia sẻ thông tin + +Chúng tôi không bán dữ liệu người dùng đã thu thập cho bất kỳ bên thứ ba nào. Chúng tôi có thể cung cấp thông tin cho các nhà phát triển bên ngoài để hỗ trợ phát triển phần mềm, nhưng chúng tôi sẽ thông báo các nghĩa vụ bảo mật liên quan và xác định rằng chúng có thể được tuân thủ trước khi cung cấp thông tin. + +3. Lưu trữ thông tin + +Trừ khi luật pháp yêu cầu, chúng tôi sẽ xóa dữ liệu người dùng không còn cần thiết trong vòng 30 ngày hoặc tổng hợp số liệu thống kê thành các báo cáo tổng hợp không xác định người dùng cá nhân. + + +4. Lộ thông tin + + Chúng tôi sẽ cố gắng hết sức để bảo vệ dữ liệu của người dùng bằng các phương tiện kỹ thuật và bảo mật hợp lý, nhưng chúng tôi không thể đảm bảo tính bảo mật tuyệt đối của dữ liệu. Nếu chúng tôi xác nhận rằng dữ liệu đã bị xâm phạm, chúng tôi sẽ thông báo cho người dùng thông qua các kênh khả dụng trong vòng 7 ngày. **Bạn đồng ý không chịu trách nhiệm cho chúng tôi về bất kỳ tổn thất nào do nguyên nhân bất khả kháng.** + +5. Sửa đổi điều khoản + +Chúng tôi có quyền sửa đổi Chính sách Bảo mật này, nhưng sẽ đảm bảo rằng người dùng được thông báo qua các kênh có sẵn và cảnh báo trong ứng dụng của chúng tôi ít nhất 30 ngày trước khi cập nhật các điều khoản. **Bằng cách tiếp tục sử dụng phần mềm sau khi các điều khoản mới có hiệu lực, bạn đồng ý với các điều khoản bảo mật đã sửa đổi.** diff --git a/README.md b/README.md index 8e49a29..a7c0508 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,40 @@ -# [Switch to English](https://github.com/cuynu/v2rayvn/wiki/English) +## [Switch to English](https://github.com/cuynu/v2rayvn/wiki/English) # v2rayNG Tiếng Việt / Vietnamese Language v2rayNG với ngôn ngữ Tiếng Việt! ,hỗ trợ [Xray core](https://github.com/XTLS/Xray-core) và [v2fly core](https://github.com/v2fly/v2ray-core) -Tính năng bổ sung so với phiên bản gốc : Mux (Tăng tốc kết nối, giảm ping nhưng gây áp lực lên máy chủ) và tự động cập nhật gói đăng ký (subscription) +Chất lượng mã nguồn (Source Code) -Phiên bản mới nhất : 1.8.25-cuynu +[![CodeFactor](https://www.codefactor.io/repository/github/cuynu/v2rayvn/badge)](https://www.codefactor.io/repository/github/cuynu/v2rayvn) -Ngày dựng/cập nhật : (10/03/2024) +Tính năng bổ sung so với phiên bản gốc : Mux (Tăng tốc kết nối, giảm ping nhưng gây áp lực lên máy chủ) + +Thống kê số lần v2rayNG/v2flyNG Tiếng Việt được tải xuống + + +

+ +Phiên bản APK đóng gói mới nhất : 1.8.5-cuynu + +Phiên bản thử nghiệm : 1.8.12-cuynu + +Ngày cập nhật : (00:48 27/03/2023) Dịch Tiếng Việt bởi : Cuynu, [user09283](https://github.com/user09283) + +Bạn đang muốn tìm v2flyNG Tiếng Việt? [Tải xuống v2flyNG Tiếng Việt](https://github.com/cuynu/v2rayvn#v2flyng-ti%E1%BA%BFng-vi%E1%BB%87t) ____________________________________________________ ## Tải xuống v2rayNG Tiếng Việt phiên bản mới nhất tại: - -Tải xuống v2rayNG + +Tải xuống v2rayNG +### Phiên bản thử nghiệm có thể có lỗi ! +[Tải xuống phiên bản thử nghiệm](https://github.com/cuynu/v2rayvn/releases/download/1.8.12-cuynu/v2rayNG_1.8.12-cuynu.apk) + **Từ phiên bản 1.7.4, Bản dịch Tiếng Việt của v2rayNG bởi Cuynu và [user09283](https://github.com/user09283) đã có sẵn trên [Google Play](https://play.app.goo.gl/?link=https://play.google.com/store/apps/details?id=com.v2ray.ang&ddl=1&pcampaignid=web_ddl_1) dưới dạng phiên bản chính thức, tuy nhiên bạn vẫn có thể tải xuống APK bên trên nếu bạn không muốn tải xuống từ Google Play.** @@ -30,8 +46,19 @@ v2rayNG hiện chỉ có sẵn cho Android và là ứng dụng mã nguồn mở ____________________________________________________ +## v2flyNG Tiếng Việt + +v2flyNG là v2rayNG được đổi tên nhằm mục đích mua để ủng hộ nhà phát triển trên Google Play. + +Phiên bản hiện tại của v2flyNG : v1.7.17 + +### Tải xuống v2flyNG tại đây : + +[Tải xuống v2flyNG Tiếng Việt v1.7.17](https://github.com/cuynu/v2rayvn/releases/download/1.7.17/v2flyNG_1.7.17_sign.apk) + +____________________________________________________ + ## Mã nguồn / Source code v2rayNG là ứng dụng "mã nguồn mở", bạn có thể tự tải xuống mã nguồn trên repository và chỉnh sửa bằng Gradle hay Android Studio theo ý của bạn theo giấy phép GPL-3.0. - diff --git a/V2rayNG/.gitignore b/V2rayNG/.gitignore new file mode 100644 index 0000000..16eb6ec --- /dev/null +++ b/V2rayNG/.gitignore @@ -0,0 +1,10 @@ +*.iml +.gradle +/local.properties +/.idea +.DS_Store +/build +/captures +*.apk +signing.properties +*.aar diff --git a/app/.gitignore b/V2rayNG/app/.gitignore similarity index 100% rename from app/.gitignore rename to V2rayNG/app/.gitignore diff --git a/app/build.gradle b/V2rayNG/app/build.gradle similarity index 80% rename from app/build.gradle rename to V2rayNG/app/build.gradle index 22acda7..b5b6a83 100644 --- a/app/build.gradle +++ b/V2rayNG/app/build.gradle @@ -9,8 +9,8 @@ android { buildToolsVersion "$buildToolsVer" compileOptions { - sourceCompatibility = "8" targetCompatibility = "8" + sourceCompatibility = "8" } defaultConfig { @@ -18,8 +18,8 @@ android { minSdkVersion 21 targetSdk 33 multiDexEnabled true - versionCode 590 - versionName "1.8.25-cuynu" + versionCode 524 + versionName "1.8.13-cuynu" } buildTypes { @@ -86,19 +86,19 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'com.google.android.material:material:1.11.0' + implementation 'com.google.android.material:material:1.8.0' implementation 'androidx.cardview:cardview:1.0.0' - implementation 'androidx.preference:preference-ktx:1.2.1' - implementation 'androidx.recyclerview:recyclerview:1.3.2' - implementation 'androidx.fragment:fragment-ktx:1.6.2' + implementation 'androidx.preference:preference-ktx:1.2.0' + implementation 'androidx.recyclerview:recyclerview:1.3.0' + implementation 'androidx.fragment:fragment-ktx:1.5.6' implementation 'androidx.multidex:multidex:2.0.1' - implementation 'androidx.viewpager2:viewpager2:1.1.0-beta02' + implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01' // Androidx ktx - implementation 'androidx.activity:activity-ktx:1.8.2' - 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' + implementation 'androidx.activity:activity-ktx:1.7.0' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1' + implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1' + implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.6.1' //kotlin implementation "org.jetbrains.kotlin:kotlin-reflect:1.8.0" @@ -112,15 +112,10 @@ dependencies { 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.8.0' - implementation 'com.blacksquircle.ui:language-base:2.8.0' - implementation 'com.blacksquircle.ui:language-json:2.8.0' + implementation 'com.blacksquircle.ui:editorkit:2.1.1' + implementation 'com.blacksquircle.ui:language-base:2.1.1' + implementation 'com.blacksquircle.ui:language-json:2.1.1' implementation 'io.github.g00fy2.quickie:quickie-bundled:1.6.0' implementation 'com.google.zxing:core:3.5.1' - - def work_version = "2.8.1" - - implementation "androidx.work:work-runtime-ktx:$work_version" - implementation "androidx.work:work-multiprocess:$work_version" } diff --git a/app/libs/arm64-v8a/libtun2socks.so b/V2rayNG/app/libs/arm64-v8a/libtun2socks.so similarity index 100% rename from app/libs/arm64-v8a/libtun2socks.so rename to V2rayNG/app/libs/arm64-v8a/libtun2socks.so diff --git a/app/libs/armeabi-v7a/libtun2socks.so b/V2rayNG/app/libs/armeabi-v7a/libtun2socks.so similarity index 100% rename from app/libs/armeabi-v7a/libtun2socks.so rename to V2rayNG/app/libs/armeabi-v7a/libtun2socks.so diff --git a/app/libs/libv2ray.aar b/V2rayNG/app/libs/libv2ray.aar similarity index 100% rename from app/libs/libv2ray.aar rename to V2rayNG/app/libs/libv2ray.aar diff --git a/app/libs/x86/libtun2socks.so b/V2rayNG/app/libs/x86/libtun2socks.so similarity index 100% rename from app/libs/x86/libtun2socks.so rename to V2rayNG/app/libs/x86/libtun2socks.so diff --git a/app/libs/x86_64/libtun2socks.so b/V2rayNG/app/libs/x86_64/libtun2socks.so similarity index 100% rename from app/libs/x86_64/libtun2socks.so rename to V2rayNG/app/libs/x86_64/libtun2socks.so diff --git a/app/proguard-rules.pro b/V2rayNG/app/proguard-rules.pro similarity index 100% rename from app/proguard-rules.pro rename to V2rayNG/app/proguard-rules.pro diff --git a/app/src/androidTest/java/com/v2ray/ang/ApplicationTest.java b/V2rayNG/app/src/androidTest/java/com/v2ray/ang/ApplicationTest.java similarity index 100% rename from app/src/androidTest/java/com/v2ray/ang/ApplicationTest.java rename to V2rayNG/app/src/androidTest/java/com/v2ray/ang/ApplicationTest.java diff --git a/app/src/main/AndroidManifest.xml b/V2rayNG/app/src/main/AndroidManifest.xml similarity index 91% rename from app/src/main/AndroidManifest.xml rename to V2rayNG/app/src/main/AndroidManifest.xml index 747fcc4..fc5bd7c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/V2rayNG/app/src/main/AndroidManifest.xml @@ -9,8 +9,6 @@ android:largeScreens="true" android:xlargeScreens="true"/> - - @@ -63,26 +61,26 @@ android:name=".ui.ServerCustomConfigActivity" android:windowSoftInputMode="stateUnchanged" /> - - - - - - diff --git a/app/src/main/assets/custom_routing_block b/V2rayNG/app/src/main/assets/custom_routing_block similarity index 100% rename from app/src/main/assets/custom_routing_block rename to V2rayNG/app/src/main/assets/custom_routing_block diff --git a/app/src/main/assets/custom_routing_direct b/V2rayNG/app/src/main/assets/custom_routing_direct similarity index 100% rename from app/src/main/assets/custom_routing_direct rename to V2rayNG/app/src/main/assets/custom_routing_direct diff --git a/app/src/main/assets/custom_routing_proxy b/V2rayNG/app/src/main/assets/custom_routing_proxy similarity index 100% rename from app/src/main/assets/custom_routing_proxy rename to V2rayNG/app/src/main/assets/custom_routing_proxy diff --git a/app/src/main/assets/proxy_packagename.txt b/V2rayNG/app/src/main/assets/proxy_packagename.txt similarity index 100% rename from app/src/main/assets/proxy_packagename.txt rename to V2rayNG/app/src/main/assets/proxy_packagename.txt diff --git a/app/src/main/assets/v2ray_config.json b/V2rayNG/app/src/main/assets/v2ray_config.json similarity index 100% rename from app/src/main/assets/v2ray_config.json rename to V2rayNG/app/src/main/assets/v2ray_config.json diff --git a/app/src/main/ic_launcher-web.png b/V2rayNG/app/src/main/ic_launcher-web.png similarity index 100% rename from app/src/main/ic_launcher-web.png rename to V2rayNG/app/src/main/ic_launcher-web.png diff --git a/app/src/main/java/com/v2ray/ang/helper/ItemTouchHelperAdapter.java b/V2rayNG/app/src/main/java/com/v2ray/ang/helper/ItemTouchHelperAdapter.java similarity index 100% rename from app/src/main/java/com/v2ray/ang/helper/ItemTouchHelperAdapter.java rename to V2rayNG/app/src/main/java/com/v2ray/ang/helper/ItemTouchHelperAdapter.java diff --git a/app/src/main/java/com/v2ray/ang/helper/ItemTouchHelperViewHolder.java b/V2rayNG/app/src/main/java/com/v2ray/ang/helper/ItemTouchHelperViewHolder.java similarity index 100% rename from app/src/main/java/com/v2ray/ang/helper/ItemTouchHelperViewHolder.java rename to V2rayNG/app/src/main/java/com/v2ray/ang/helper/ItemTouchHelperViewHolder.java diff --git a/app/src/main/java/com/v2ray/ang/helper/OnStartDragListener.java b/V2rayNG/app/src/main/java/com/v2ray/ang/helper/OnStartDragListener.java similarity index 100% rename from app/src/main/java/com/v2ray/ang/helper/OnStartDragListener.java rename to V2rayNG/app/src/main/java/com/v2ray/ang/helper/OnStartDragListener.java diff --git a/app/src/main/java/com/v2ray/ang/helper/SimpleItemTouchHelperCallback.java b/V2rayNG/app/src/main/java/com/v2ray/ang/helper/SimpleItemTouchHelperCallback.java similarity index 100% rename from app/src/main/java/com/v2ray/ang/helper/SimpleItemTouchHelperCallback.java rename to V2rayNG/app/src/main/java/com/v2ray/ang/helper/SimpleItemTouchHelperCallback.java diff --git a/app/src/main/kotlin/com/v2ray/ang/AngApplication.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AngApplication.kt similarity index 61% rename from app/src/main/kotlin/com/v2ray/ang/AngApplication.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/AngApplication.kt index ed6bbae..aa1ef7d 100644 --- a/app/src/main/kotlin/com/v2ray/ang/AngApplication.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AngApplication.kt @@ -1,20 +1,12 @@ package com.v2ray.ang -import android.content.Context import androidx.multidex.MultiDexApplication import androidx.preference.PreferenceManager import com.tencent.mmkv.MMKV -import androidx.work.Configuration -class AngApplication : MultiDexApplication(), Configuration.Provider { +class AngApplication : MultiDexApplication() { companion object { const val PREF_LAST_VERSION = "pref_last_version" - lateinit var application: AngApplication - } - - override fun attachBaseContext(base: Context?) { - super.attachBaseContext(base) - application = this } var firstRun = false @@ -33,10 +25,4 @@ class AngApplication : MultiDexApplication(), Configuration.Provider { //Logger.init().logLevel(if (BuildConfig.DEBUG) LogLevel.FULL else LogLevel.NONE) MMKV.initialize(this) } - - override fun getWorkManagerConfiguration(): Configuration { - return Configuration.Builder() - .setDefaultProcessName("${BuildConfig.APPLICATION_ID}:bg") - .build() - } } diff --git a/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt similarity index 89% rename from app/src/main/kotlin/com/v2ray/ang/AppConfig.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt index 36106ec..0e3ffb0 100644 --- a/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/AppConfig.kt @@ -10,6 +10,7 @@ object AppConfig { // legacy const val ANG_CONFIG = "ang_config" + const val PREF_INAPP_BUY_IS_PREMIUM = "pref_inapp_buy_is_premium" const val PREF_ROUTING_CUSTOM = "pref_routing_custom" // Preferences mapped to MMKV @@ -61,7 +62,8 @@ object AppConfig { const val androidpackagenamelistUrl = "https://raw.githubusercontent.com/2dust/androidpackagenamelist/master/proxy.txt" const val v2rayCustomRoutingListUrl = "https://raw.githubusercontent.com/2dust/v2rayCustomRoutingList/master/" - const val v2rayNGIssues = "https://gitlab.com/cuynu/v2rayvn/issues" + const val v2rayNGIssues = "https://github.com/cuynu/v2rayvn/issues" + const val v2rayNGWikiMode = "https://github.com/cuynu/v2rayvn/wiki/V%E1%BA%A5n-%C4%91%E1%BB%81-th%C6%B0%E1%BB%9Dng-g%E1%BA%B7p-tr%C3%AAn-v2rayNG" const val geoUrl = "https://github.com/Loyalsoldier/v2ray-rules-dat/releases/latest/download/"; const val DNS_AGENT = "8.8.8.8" @@ -87,10 +89,4 @@ object AppConfig { const val MSG_MEASURE_CONFIG = 7 const val MSG_MEASURE_CONFIG_SUCCESS = 71 const val MSG_MEASURE_CONFIG_CANCEL = 72 - - // subscription settings (https://github.com/2dust/v2rayNG/pull/2471/commits/062c0d8ddbe56da3ca1db9a7969a487706bb441f) - const val SUBSCRIPTION_AUTO_UPDATE = "pref_auto_update_subscription" - const val SUBSCRIPTION_AUTO_UPDATE_INTERVAL = "pref_auto_update_interval" - const val DEFAULT_UPDATE_INTERVAL = "1440" // 24 hours - const val UPDATE_TASK_NAME = "subscription-updater" } diff --git a/app/src/main/kotlin/com/v2ray/ang/dto/AngConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/AngConfig.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/dto/AngConfig.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/AngConfig.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/dto/AppInfo.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/AppInfo.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/dto/AppInfo.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/AppInfo.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/EConfigType.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/dto/ERoutingMode.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ERoutingMode.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/dto/ERoutingMode.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ERoutingMode.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/dto/ServerAffiliationInfo.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerAffiliationInfo.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/dto/ServerAffiliationInfo.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerAffiliationInfo.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServerConfig.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/dto/ServersCache.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServersCache.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/dto/ServersCache.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/ServersCache.kt diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/SubscriptionItem.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/SubscriptionItem.kt new file mode 100644 index 0000000..0fe950f --- /dev/null +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/SubscriptionItem.kt @@ -0,0 +1,8 @@ +package com.v2ray.ang.dto + +data class SubscriptionItem( + var remarks: String = "C", + var url: String = "", + var enabled: Boolean = true, + val addedTime: Long = System.currentTimeMillis()) { +} diff --git a/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/V2rayConfig.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/dto/VmessQRCode.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/VmessQRCode.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/dto/VmessQRCode.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/dto/VmessQRCode.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/extension/_Ext.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/extension/_Ext.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/extension/_Ext.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/extension/_Ext.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/receiver/TaskerReceiver.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/receiver/TaskerReceiver.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/receiver/TaskerReceiver.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/receiver/TaskerReceiver.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/receiver/WidgetProvider.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/receiver/WidgetProvider.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/receiver/WidgetProvider.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/receiver/WidgetProvider.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/service/QSTileService.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/QSTileService.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/service/QSTileService.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/QSTileService.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/service/ServiceControl.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/ServiceControl.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/service/ServiceControl.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/ServiceControl.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/service/V2RayProxyOnlyService.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayProxyOnlyService.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/service/V2RayProxyOnlyService.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayProxyOnlyService.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt similarity index 99% rename from app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt index 333fe83..09c7ba0 100644 --- a/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayServiceManager.kt @@ -61,7 +61,9 @@ object V2RayServiceManager { fun startV2Ray(context: Context) { if (settingsStorage?.decodeBool(AppConfig.PREF_PROXY_SHARING) == true) { + context.toast(R.string.toast_warning_pref_proxysharing_short) } else { + context.toast(R.string.toast_services_start) } val intent = if (settingsStorage?.decodeString(AppConfig.PREF_MODE) ?: "VPN" == "VPN") { Intent(context.applicationContext, V2RayVpnService::class.java) diff --git a/app/src/main/kotlin/com/v2ray/ang/service/V2RayTestService.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayTestService.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/service/V2RayTestService.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayTestService.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/service/V2RayVpnService.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/BaseActivity.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/ui/FragmentAdapter.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/FragmentAdapter.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/ui/FragmentAdapter.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/FragmentAdapter.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/LogcatActivity.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt similarity index 97% rename from app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt index 13859d3..aefe575 100644 --- a/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainActivity.kt @@ -113,6 +113,8 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList RxPermissions(this) .request(Manifest.permission.POST_NOTIFICATIONS) .subscribe { + if (!it) + toast(R.string.toast_permission_denied) } } } @@ -408,8 +410,10 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList count = AngConfigManager.importBatchConfig(Utils.decode(server!!), subid2, append) } if (count > 0) { + toast(R.string.toast_success) mainViewModel.reloadServerList() } else { + toast(R.string.toast_failure) } } @@ -635,7 +639,6 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList @Deprecated("Deprecated in Java") override fun onBackPressed() { - super.onBackPressed() if (binding.drawerLayout.isDrawerOpen(GravityCompat.START)) { binding.drawerLayout.closeDrawer(GravityCompat.START) } else { @@ -649,7 +652,6 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList when (item.itemId) { //R.id.server_profile -> activityClass = MainActivity::class.java R.id.sub_setting -> { - toast(getString(R.string.subscription_warning)) startActivity(Intent(this, SubSettingActivity::class.java)) } R.id.settings -> { @@ -661,18 +663,10 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedList } R.id.feedback -> { Utils.openUri(this, AppConfig.v2rayNGIssues) - toast(getString(R.string.opening_browser)) } R.id.logcat -> { - toast(getString(R.string.logcat_warning)) startActivity(Intent(this, LogcatActivity::class.java)) } - R.id.vpnhotspot -> { - toast(getString(R.string.vpnhotspot_need_installed)) - Intent(); - intent.setComponent( ComponentName("be.mygod.vpnhotspot","be.mygod.vpnhotspot.MainActivity")); - startActivity(intent) - } } binding.drawerLayout.closeDrawer(GravityCompat.START) return true diff --git a/app/src/main/kotlin/com/v2ray/ang/ui/MainRecyclerAdapter.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainRecyclerAdapter.kt similarity index 98% rename from app/src/main/kotlin/com/v2ray/ang/ui/MainRecyclerAdapter.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainRecyclerAdapter.kt index 25a90db..d33e54a 100644 --- a/app/src/main/kotlin/com/v2ray/ang/ui/MainRecyclerAdapter.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/MainRecyclerAdapter.kt @@ -113,6 +113,7 @@ class MainRecyclerAdapter(val activity: MainActivity) : RecyclerView.Adapter { if (AngConfigManager.share2Clipboard(mActivity, guid) == 0) { + mActivity.toast(R.string.toast_success) } else { mActivity.toast(R.string.toast_failure) } @@ -141,7 +142,6 @@ class MainRecyclerAdapter(val activity: MainActivity) : RecyclerView.Adapter removeServer(guid, position) - mActivity.toast(R.string.toast_success) } .show() } else { @@ -159,7 +159,7 @@ class MainRecyclerAdapter(val activity: MainActivity) : RecyclerView.Adapter(AppConfig.PREF_PER_APP_PROXY) } - private val localDns by lazy { findPreference(AppConfig.PREF_LOCAL_DNS_ENABLED) } - private val fakeDns by lazy { findPreference(AppConfig.PREF_FAKE_DNS_ENABLED) } + private val perAppProxy by lazy { findPreference(AppConfig.PREF_PER_APP_PROXY) } + private val localDns by lazy { findPreference(AppConfig.PREF_LOCAL_DNS_ENABLED) } + private val fakeDns by lazy { findPreference(AppConfig.PREF_FAKE_DNS_ENABLED) } private val localDnsPort by lazy { findPreference(AppConfig.PREF_LOCAL_DNS_PORT) } private val vpnDns by lazy { findPreference(AppConfig.PREF_VPN_DNS) } + // val autoRestart by lazy { findPreference(PREF_AUTO_RESTART) as CheckBoxPreference } private val remoteDns by lazy { findPreference(AppConfig.PREF_REMOTE_DNS) } private val domesticDns by lazy { findPreference(AppConfig.PREF_DOMESTIC_DNS) } private val socksPort by lazy { findPreference(AppConfig.PREF_SOCKS_PORT) } private val httpPort by lazy { findPreference(AppConfig.PREF_HTTP_PORT) } private val routingCustom by lazy { findPreference(AppConfig.PREF_ROUTING_CUSTOM) } - private val autoUpdateCheck by lazy { findPreference(AppConfig.SUBSCRIPTION_AUTO_UPDATE) } - private val autoUpdateInterval by lazy { findPreference(AppConfig.SUBSCRIPTION_AUTO_UPDATE_INTERVAL) } - private val languageswitch by lazy { findPreference(AppConfig.PREF_LANGUAGE) } + // val licenses: Preference by lazy { findPreference(PREF_LICENSES) } +// val feedback: Preference by lazy { findPreference(PREF_FEEDBACK) } +// val tgGroup: Preference by lazy { findPreference(PREF_TG_GROUP) } + private val mode by lazy { findPreference(AppConfig.PREF_MODE) } private val muxConcurrency by lazy { findPreference(AppConfig.PREF_MUX_CONCURRENCY) } @@ -61,23 +52,27 @@ class SettingsActivity : BaseActivity() { false } - autoUpdateCheck?.setOnPreferenceChangeListener { _, newValue -> - val value = newValue as Boolean - autoUpdateCheck?.isChecked = value - autoUpdateInterval?.isEnabled = value - autoUpdateInterval?.text?.toLong()?.let { - if (newValue) configureUpdateTask(it) else cancelUpdateTask() - } - true - } - - autoUpdateInterval?.setOnPreferenceChangeListener { _, any -> - val nval = any as String - autoUpdateInterval?.summary = - if (TextUtils.isEmpty(nval) or (nval.toLong() < 15)) AppConfig.DEFAULT_UPDATE_INTERVAL else nval - configureUpdateTask(nval.toLong()) - false - } +// licenses.onClick { +// val fragment = LicensesDialogFragment.Builder(act) +// .setNotices(R.raw.licenses) +// .setIncludeOwnLicense(false) +// .build() +// fragment.show((act as AppCompatActivity).supportFragmentManager, null) +// } +// +// feedback.onClick { +// Utils.openUri(activity, "https://github.com/2dust/v2rayNG/issues") +// } +// tgGroup.onClick { +// // Utils.openUri(activity, "https://t.me/v2rayN") +// val intent = Intent(Intent.ACTION_VIEW, Uri.parse("tg:resolve?domain=v2rayN")) +// try { +// startActivity(intent) +// } catch (e: Exception) { +// e.printStackTrace() +// toast(R.string.toast_tg_app_not_found) +// } +// } perAppProxy?.setOnPreferenceClickListener { startActivity(Intent(activity, PerAppProxyActivity::class.java)) @@ -100,18 +95,16 @@ class SettingsActivity : BaseActivity() { muxConcurrency?.setOnPreferenceChangeListener { _, any -> val nval = any as String - muxConcurrency?.summary = - if (TextUtils.isEmpty(nval)) AppConfig.MUX_CONCURRENCY else nval + muxConcurrency?.summary = if (TextUtils.isEmpty(nval)) AppConfig.MUX_CONCURRENCY else nval true } - localDns?.setOnPreferenceChangeListener { _, any -> + localDns?.setOnPreferenceChangeListener{ _, any -> updateLocalDns(any as Boolean) true } localDnsPort?.setOnPreferenceChangeListener { _, any -> val nval = any as String - localDnsPort?.summary = - if (TextUtils.isEmpty(nval)) AppConfig.PORT_LOCAL_DNS else nval + localDnsPort?.summary = if (TextUtils.isEmpty(nval)) AppConfig.PORT_LOCAL_DNS else nval true } vpnDns?.setOnPreferenceChangeListener { _, any -> @@ -135,39 +128,20 @@ class SettingsActivity : BaseActivity() { updateMode(newValue.toString()) true } + mode?.dialogLayoutResource = R.layout.preference_with_help_link //loglevel.summary = "LogLevel" } override fun onStart() { super.onStart() - val defaultSharedPreferences = - PreferenceManager.getDefaultSharedPreferences(requireActivity()) + val defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity()) updateMode(defaultSharedPreferences.getString(AppConfig.PREF_MODE, "VPN")) var remoteDnsString = defaultSharedPreferences.getString(AppConfig.PREF_REMOTE_DNS, "") - domesticDns?.summary = - defaultSharedPreferences.getString(AppConfig.PREF_DOMESTIC_DNS, "") - - localDnsPort?.summary = defaultSharedPreferences.getString( - AppConfig.PREF_LOCAL_DNS_PORT, - AppConfig.PORT_LOCAL_DNS - ) - socksPort?.summary = - defaultSharedPreferences.getString(AppConfig.PREF_SOCKS_PORT, AppConfig.PORT_SOCKS) - httpPort?.summary = - defaultSharedPreferences.getString(AppConfig.PREF_HTTP_PORT, AppConfig.PORT_HTTP) - localDnsPort?.summary = defaultSharedPreferences.getString( - AppConfig.PREF_LOCAL_DNS_PORT, - AppConfig.PORT_LOCAL_DNS - ) - socksPort?.summary = - defaultSharedPreferences.getString(AppConfig.PREF_SOCKS_PORT, AppConfig.PORT_SOCKS) - httpPort?.summary = - defaultSharedPreferences.getString(AppConfig.PREF_HTTP_PORT, AppConfig.PORT_HTTP) - autoUpdateInterval?.summary = defaultSharedPreferences.getString( - AppConfig.SUBSCRIPTION_AUTO_UPDATE_INTERVAL, - AppConfig.DEFAULT_UPDATE_INTERVAL - ) + domesticDns?.summary = defaultSharedPreferences.getString(AppConfig.PREF_DOMESTIC_DNS, "") + localDnsPort?.summary = defaultSharedPreferences.getString(AppConfig.PREF_LOCAL_DNS_PORT, AppConfig.PORT_LOCAL_DNS) + socksPort?.summary = defaultSharedPreferences.getString(AppConfig.PREF_SOCKS_PORT, AppConfig.PORT_SOCKS) + httpPort?.summary = defaultSharedPreferences.getString(AppConfig.PREF_HTTP_PORT, AppConfig.PORT_HTTP) if (TextUtils.isEmpty(remoteDnsString)) { remoteDnsString = AppConfig.DNS_AGENT @@ -176,8 +150,7 @@ class SettingsActivity : BaseActivity() { domesticDns?.summary = AppConfig.DNS_DIRECT } remoteDns?.summary = remoteDnsString - vpnDns?.summary = - defaultSharedPreferences.getString(AppConfig.PREF_VPN_DNS, remoteDnsString) + vpnDns?.summary = defaultSharedPreferences.getString(AppConfig.PREF_VPN_DNS, remoteDnsString) if (TextUtils.isEmpty(localDnsPort?.summary)) { localDnsPort?.summary = AppConfig.PORT_LOCAL_DNS @@ -191,24 +164,17 @@ class SettingsActivity : BaseActivity() { } private fun updateMode(mode: String?) { - val defaultSharedPreferences = - PreferenceManager.getDefaultSharedPreferences(requireActivity()) + val defaultSharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireActivity()) val vpn = mode == "VPN" perAppProxy?.isEnabled = vpn - perAppProxy?.isChecked = - PreferenceManager.getDefaultSharedPreferences(requireActivity()) + perAppProxy?.isChecked = PreferenceManager.getDefaultSharedPreferences(requireActivity()) .getBoolean(AppConfig.PREF_PER_APP_PROXY, false) localDns?.isEnabled = vpn fakeDns?.isEnabled = vpn localDnsPort?.isEnabled = vpn vpnDns?.isEnabled = vpn if (vpn) { - updateLocalDns( - defaultSharedPreferences.getBoolean( - AppConfig.PREF_LOCAL_DNS_ENABLED, - false - ) - ) + updateLocalDns(defaultSharedPreferences.getBoolean(AppConfig.PREF_LOCAL_DNS_ENABLED, false)) } } @@ -217,34 +183,9 @@ class SettingsActivity : BaseActivity() { localDnsPort?.isEnabled = enabled vpnDns?.isEnabled = !enabled } + } - private fun configureUpdateTask(interval: Long) { - val rw = RemoteWorkManager.getInstance(AngApplication.application) - rw.cancelUniqueWork(AppConfig.UPDATE_TASK_NAME) - rw.enqueueUniquePeriodicWork( - AppConfig.UPDATE_TASK_NAME, - ExistingPeriodicWorkPolicy.UPDATE, - PeriodicWorkRequest.Builder( - SubscriptionUpdater.UpdateTask::class.java, - interval, - TimeUnit.MINUTES - ) - .apply { - setInitialDelay(interval, TimeUnit.MINUTES) - } - .setConstraints( - Constraints( - NetworkType.CONNECTED, - ) - ).build() - ) - } - - private fun cancelUpdateTask() { - val rw = RemoteWorkManager.getInstance(AngApplication.application) - rw.cancelUniqueWork(AppConfig.UPDATE_TASK_NAME) - } + fun onModeHelpClicked(view: View) { + Utils.openUri(this, AppConfig.v2rayNGWikiMode) } } - private fun languageswitch() { - } \ No newline at end of file diff --git a/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt similarity index 89% rename from app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt index f5a3eda..5a5a8d4 100644 --- a/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubEditActivity.kt @@ -5,22 +5,14 @@ import android.text.TextUtils import android.view.Menu import android.view.MenuItem import androidx.appcompat.app.AlertDialog -import androidx.work.Constraints -import androidx.work.ExistingPeriodicWorkPolicy -import androidx.work.NetworkType -import androidx.work.PeriodicWorkRequest -import androidx.work.multiprocess.RemoteWorkManager import com.google.gson.Gson import com.tencent.mmkv.MMKV -import com.v2ray.ang.AngApplication import com.v2ray.ang.R import com.v2ray.ang.databinding.ActivitySubEditBinding import com.v2ray.ang.dto.SubscriptionItem import com.v2ray.ang.extension.toast -import com.v2ray.ang.service.SubscriptionUpdater import com.v2ray.ang.util.MmkvManager import com.v2ray.ang.util.Utils -import java.util.concurrent.TimeUnit class SubEditActivity : BaseActivity() { private lateinit var binding: ActivitySubEditBinding @@ -54,7 +46,6 @@ class SubEditActivity : BaseActivity() { binding.etRemarks.text = Utils.getEditable(subItem.remarks) binding.etUrl.text = Utils.getEditable(subItem.url) binding.chkEnable.isChecked = subItem.enabled - binding.autoUpdateCheck.isChecked = subItem.autoUpdate return true } @@ -85,7 +76,6 @@ class SubEditActivity : BaseActivity() { subItem.remarks = binding.etRemarks.text.toString() subItem.url = binding.etUrl.text.toString() subItem.enabled = binding.chkEnable.isChecked - subItem.autoUpdate = binding.autoUpdateCheck.isChecked if (TextUtils.isEmpty(subItem.remarks)) { toast(R.string.sub_setting_remarks) @@ -139,6 +129,5 @@ class SubEditActivity : BaseActivity() { true } else -> super.onOptionsItemSelected(item) - } } diff --git a/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingActivity.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/ui/SubSettingActivity.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingActivity.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/ui/TaskerActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/TaskerActivity.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/ui/TaskerActivity.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/TaskerActivity.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UrlSchemeActivity.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/UserAssetActivity.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AngConfigManager.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/util/AppManagerUtil.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AppManagerUtil.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/util/AppManagerUtil.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/AppManagerUtil.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/util/MessageUtil.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/MessageUtil.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/util/MessageUtil.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/MessageUtil.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/util/MmkvManager.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/MmkvManager.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/util/MmkvManager.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/MmkvManager.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/util/MyContextWrapper.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/MyContextWrapper.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/util/MyContextWrapper.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/MyContextWrapper.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/util/QRCodeDecoder.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/QRCodeDecoder.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/util/QRCodeDecoder.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/QRCodeDecoder.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt similarity index 98% rename from app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt index 1999ddf..5a0e598 100644 --- a/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/SpeedtestUtil.kt @@ -49,7 +49,7 @@ object SpeedtestUtil { if (!TextUtils.isEmpty(allText)) { val tempInfo = allText.substring(allText.indexOf("min/avg/max/mdev") + 19) val temps = tempInfo.split("/".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() - if (temps.count() > 0 && temps[0].length < 9999) { + if (temps.count() > 0 && temps[0].length < 10) { return temps[0].toFloat().toInt().toString() + "ms" } } diff --git a/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/util/Utils.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/Utils.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt similarity index 100% rename from app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/util/V2rayConfigUtil.kt diff --git a/app/src/main/kotlin/com/v2ray/ang/viewmodel/MainViewModel.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/MainViewModel.kt similarity index 99% rename from app/src/main/kotlin/com/v2ray/ang/viewmodel/MainViewModel.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/MainViewModel.kt index abf8a1c..0776895 100644 --- a/app/src/main/kotlin/com/v2ray/ang/viewmodel/MainViewModel.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/MainViewModel.kt @@ -232,6 +232,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { isRunning.value = false } AppConfig.MSG_STATE_START_SUCCESS -> { + getApplication().toast(R.string.toast_services_success) isRunning.value = true } AppConfig.MSG_STATE_START_FAILURE -> { diff --git a/app/src/main/kotlin/com/v2ray/ang/viewmodel/SettingsViewModel.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/SettingsViewModel.kt similarity index 82% rename from app/src/main/kotlin/com/v2ray/ang/viewmodel/SettingsViewModel.kt rename to V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/SettingsViewModel.kt index f163b01..d8ab1b2 100644 --- a/app/src/main/kotlin/com/v2ray/ang/viewmodel/SettingsViewModel.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/viewmodel/SettingsViewModel.kt @@ -6,13 +6,9 @@ import android.util.Log import androidx.lifecycle.AndroidViewModel import androidx.preference.PreferenceManager import com.tencent.mmkv.MMKV -import com.v2ray.ang.AngApplication import com.v2ray.ang.AppConfig -import com.v2ray.ang.R -import com.v2ray.ang.extension.toast import com.v2ray.ang.util.MmkvManager -@Suppress("DUPLICATE_LABEL_IN_WHEN") class SettingsViewModel(application: Application) : AndroidViewModel(application), SharedPreferences.OnSharedPreferenceChangeListener { private val settingsStorage by lazy { MMKV.mmkvWithID(MmkvManager.ID_SETTING, MMKV.MULTI_PROCESS_MODE) } @@ -45,8 +41,7 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application AppConfig.PREF_V2RAY_ROUTING_BLOCKED, AppConfig.PREF_V2RAY_ROUTING_DIRECT, AppConfig.PREF_MUX_CONCURRENCY, -> { - settingsStorage?.encode(key, sharedPreferences.getString(key, "8")) - getApplication().toast(R.string.restart_service_required) + settingsStorage?.encode(key, sharedPreferences.getString(key, "")) } AppConfig.PREF_SPEED_ENABLED, AppConfig.PREF_PROXY_SHARING, @@ -60,13 +55,8 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application AppConfig.PREF_START_SCAN_IMMEDIATE, AppConfig.PREF_MUX_ENABLED, -> { settingsStorage?.encode(key, sharedPreferences.getBoolean(key, false)) - getApplication().toast(R.string.restart_service_required) } AppConfig.PREF_SNIFFING_ENABLED -> { - settingsStorage?.encode(key, sharedPreferences.getBoolean(key, false)) - getApplication().toast(R.string.restart_service_required) - } - AppConfig.PREF_CONFIRM_REMOVE -> { settingsStorage?.encode(key, sharedPreferences.getBoolean(key, true)) } AppConfig.PREF_PER_APP_PROXY_SET -> { diff --git a/app/src/main/res/anim/fade_in.xml b/V2rayNG/app/src/main/res/anim/fade_in.xml similarity index 100% rename from app/src/main/res/anim/fade_in.xml rename to V2rayNG/app/src/main/res/anim/fade_in.xml diff --git a/app/src/main/res/anim/fade_out.xml b/V2rayNG/app/src/main/res/anim/fade_out.xml similarity index 100% rename from app/src/main/res/anim/fade_out.xml rename to V2rayNG/app/src/main/res/anim/fade_out.xml diff --git a/app/src/main/res/color/color_highlight_material.xml b/V2rayNG/app/src/main/res/color/color_highlight_material.xml similarity index 100% rename from app/src/main/res/color/color_highlight_material.xml rename to V2rayNG/app/src/main/res/color/color_highlight_material.xml diff --git a/app/src/main/res/drawable-hdpi/ic_stat_direct.png b/V2rayNG/app/src/main/res/drawable-hdpi/ic_stat_direct.png similarity index 100% rename from app/src/main/res/drawable-hdpi/ic_stat_direct.png rename to V2rayNG/app/src/main/res/drawable-hdpi/ic_stat_direct.png diff --git a/app/src/main/res/drawable-hdpi/ic_stat_name.png b/V2rayNG/app/src/main/res/drawable-hdpi/ic_stat_name.png similarity index 100% rename from app/src/main/res/drawable-hdpi/ic_stat_name.png rename to V2rayNG/app/src/main/res/drawable-hdpi/ic_stat_name.png diff --git a/app/src/main/res/drawable-hdpi/ic_stat_proxy.png b/V2rayNG/app/src/main/res/drawable-hdpi/ic_stat_proxy.png similarity index 100% rename from app/src/main/res/drawable-hdpi/ic_stat_proxy.png rename to V2rayNG/app/src/main/res/drawable-hdpi/ic_stat_proxy.png diff --git a/app/src/main/res/drawable-mdpi/ic_stat_direct.png b/V2rayNG/app/src/main/res/drawable-mdpi/ic_stat_direct.png similarity index 100% rename from app/src/main/res/drawable-mdpi/ic_stat_direct.png rename to V2rayNG/app/src/main/res/drawable-mdpi/ic_stat_direct.png diff --git a/app/src/main/res/drawable-mdpi/ic_stat_name.png b/V2rayNG/app/src/main/res/drawable-mdpi/ic_stat_name.png similarity index 100% rename from app/src/main/res/drawable-mdpi/ic_stat_name.png rename to V2rayNG/app/src/main/res/drawable-mdpi/ic_stat_name.png diff --git a/app/src/main/res/drawable-mdpi/ic_stat_proxy.png b/V2rayNG/app/src/main/res/drawable-mdpi/ic_stat_proxy.png similarity index 100% rename from app/src/main/res/drawable-mdpi/ic_stat_proxy.png rename to V2rayNG/app/src/main/res/drawable-mdpi/ic_stat_proxy.png diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_direct.png b/V2rayNG/app/src/main/res/drawable-xhdpi/ic_stat_direct.png similarity index 100% rename from app/src/main/res/drawable-xhdpi/ic_stat_direct.png rename to V2rayNG/app/src/main/res/drawable-xhdpi/ic_stat_direct.png diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_name.png b/V2rayNG/app/src/main/res/drawable-xhdpi/ic_stat_name.png similarity index 100% rename from app/src/main/res/drawable-xhdpi/ic_stat_name.png rename to V2rayNG/app/src/main/res/drawable-xhdpi/ic_stat_name.png diff --git a/app/src/main/res/drawable-xhdpi/ic_stat_proxy.png b/V2rayNG/app/src/main/res/drawable-xhdpi/ic_stat_proxy.png similarity index 100% rename from app/src/main/res/drawable-xhdpi/ic_stat_proxy.png rename to V2rayNG/app/src/main/res/drawable-xhdpi/ic_stat_proxy.png diff --git a/app/src/main/res/drawable-xxhdpi/donate.png b/V2rayNG/app/src/main/res/drawable-xxhdpi/donate.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/donate.png rename to V2rayNG/app/src/main/res/drawable-xxhdpi/donate.png diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_direct.png b/V2rayNG/app/src/main/res/drawable-xxhdpi/ic_stat_direct.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/ic_stat_direct.png rename to V2rayNG/app/src/main/res/drawable-xxhdpi/ic_stat_direct.png diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_name.png b/V2rayNG/app/src/main/res/drawable-xxhdpi/ic_stat_name.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/ic_stat_name.png rename to V2rayNG/app/src/main/res/drawable-xxhdpi/ic_stat_name.png diff --git a/app/src/main/res/drawable-xxhdpi/ic_stat_proxy.png b/V2rayNG/app/src/main/res/drawable-xxhdpi/ic_stat_proxy.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/ic_stat_proxy.png rename to V2rayNG/app/src/main/res/drawable-xxhdpi/ic_stat_proxy.png diff --git a/app/src/main/res/drawable-xxhdpi/side_nav_bar.xml b/V2rayNG/app/src/main/res/drawable-xxhdpi/side_nav_bar.xml similarity index 100% rename from app/src/main/res/drawable-xxhdpi/side_nav_bar.xml rename to V2rayNG/app/src/main/res/drawable-xxhdpi/side_nav_bar.xml diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_direct.png b/V2rayNG/app/src/main/res/drawable-xxxhdpi/ic_stat_direct.png similarity index 100% rename from app/src/main/res/drawable-xxxhdpi/ic_stat_direct.png rename to V2rayNG/app/src/main/res/drawable-xxxhdpi/ic_stat_direct.png diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_name.png b/V2rayNG/app/src/main/res/drawable-xxxhdpi/ic_stat_name.png similarity index 100% rename from app/src/main/res/drawable-xxxhdpi/ic_stat_name.png rename to V2rayNG/app/src/main/res/drawable-xxxhdpi/ic_stat_name.png diff --git a/app/src/main/res/drawable-xxxhdpi/ic_stat_proxy.png b/V2rayNG/app/src/main/res/drawable-xxxhdpi/ic_stat_proxy.png similarity index 100% rename from app/src/main/res/drawable-xxxhdpi/ic_stat_proxy.png rename to V2rayNG/app/src/main/res/drawable-xxxhdpi/ic_stat_proxy.png diff --git a/app/src/main/res/drawable/ic_action_done.xml b/V2rayNG/app/src/main/res/drawable/ic_action_done.xml similarity index 100% rename from app/src/main/res/drawable/ic_action_done.xml rename to V2rayNG/app/src/main/res/drawable/ic_action_done.xml diff --git a/app/src/main/res/drawable/ic_add_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_add_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_add_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_add_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_attach_money_black_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_attach_money_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_attach_money_black_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_attach_money_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_attach_money_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_attach_money_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_attach_money_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_attach_money_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_close_grey_800_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_close_grey_800_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_close_grey_800_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_close_grey_800_24dp.xml diff --git a/app/src/main/res/drawable/ic_cloud_download_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_cloud_download_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_cloud_download_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_cloud_download_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_copy_white.xml b/V2rayNG/app/src/main/res/drawable/ic_copy_white.xml similarity index 100% rename from app/src/main/res/drawable/ic_copy_white.xml rename to V2rayNG/app/src/main/res/drawable/ic_copy_white.xml diff --git a/app/src/main/res/drawable/ic_delete_black_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_delete_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_delete_black_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_delete_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_delete_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_delete_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_delete_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_delete_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_description_black_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_description_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_description_black_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_description_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_description_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_description_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_description_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_description_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_edit_black_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_edit_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_edit_black_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_edit_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_fab_check.xml b/V2rayNG/app/src/main/res/drawable/ic_fab_check.xml similarity index 100% rename from app/src/main/res/drawable/ic_fab_check.xml rename to V2rayNG/app/src/main/res/drawable/ic_fab_check.xml diff --git a/app/src/main/res/drawable/ic_feedback_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_feedback_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_feedback_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_feedback_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_file_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_file_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_file_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_file_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_image_photo.xml b/V2rayNG/app/src/main/res/drawable/ic_image_photo.xml similarity index 100% rename from app/src/main/res/drawable/ic_image_photo.xml rename to V2rayNG/app/src/main/res/drawable/ic_image_photo.xml diff --git a/app/src/main/res/drawable/ic_info_black_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_info_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_info_black_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_info_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_logcat_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_logcat_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_logcat_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_logcat_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_outline_filter_alt_white_24.xml b/V2rayNG/app/src/main/res/drawable/ic_outline_filter_alt_white_24.xml similarity index 100% rename from app/src/main/res/drawable/ic_outline_filter_alt_white_24.xml rename to V2rayNG/app/src/main/res/drawable/ic_outline_filter_alt_white_24.xml diff --git a/app/src/main/res/drawable/ic_qu_scan_black_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_qu_scan_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_qu_scan_black_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_qu_scan_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_qu_settings_black_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_qu_settings_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_qu_settings_black_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_qu_settings_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_qu_switch_black_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_qu_switch_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_qu_switch_black_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_qu_switch_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_rounded_corner_grey.xml b/V2rayNG/app/src/main/res/drawable/ic_rounded_corner_grey.xml similarity index 100% rename from app/src/main/res/drawable/ic_rounded_corner_grey.xml rename to V2rayNG/app/src/main/res/drawable/ic_rounded_corner_grey.xml diff --git a/app/src/main/res/drawable/ic_rounded_corner_theme.xml b/V2rayNG/app/src/main/res/drawable/ic_rounded_corner_theme.xml similarity index 83% rename from app/src/main/res/drawable/ic_rounded_corner_theme.xml rename to V2rayNG/app/src/main/res/drawable/ic_rounded_corner_theme.xml index afc2118..0463d8b 100644 --- a/app/src/main/res/drawable/ic_rounded_corner_theme.xml +++ b/V2rayNG/app/src/main/res/drawable/ic_rounded_corner_theme.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_save_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_save_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_save_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_save_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_scan_black_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_scan_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_scan_black_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_scan_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_select_all_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_select_all_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_select_all_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_select_all_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_settings_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_settings_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_settings_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_settings_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_share_black_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_share_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_share_black_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_share_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_share_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_share_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_share_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_share_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_shortcut_background.xml b/V2rayNG/app/src/main/res/drawable/ic_shortcut_background.xml similarity index 100% rename from app/src/main/res/drawable/ic_shortcut_background.xml rename to V2rayNG/app/src/main/res/drawable/ic_shortcut_background.xml diff --git a/app/src/main/res/drawable/ic_subscriptions_black_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_subscriptions_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_subscriptions_black_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_subscriptions_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_subscriptions_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_subscriptions_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_subscriptions_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_subscriptions_white_24dp.xml diff --git a/app/src/main/res/drawable/ic_whatshot_black_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_whatshot_black_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_whatshot_black_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_whatshot_black_24dp.xml diff --git a/app/src/main/res/drawable/ic_whatshot_white_24dp.xml b/V2rayNG/app/src/main/res/drawable/ic_whatshot_white_24dp.xml similarity index 100% rename from app/src/main/res/drawable/ic_whatshot_white_24dp.xml rename to V2rayNG/app/src/main/res/drawable/ic_whatshot_white_24dp.xml diff --git a/V2rayNG/app/src/main/res/drawable/nav_header_bg.png b/V2rayNG/app/src/main/res/drawable/nav_header_bg.png new file mode 100644 index 0000000..82cb00a Binary files /dev/null and b/V2rayNG/app/src/main/res/drawable/nav_header_bg.png differ diff --git a/app/src/main/res/layout/activity_bypass_list.xml b/V2rayNG/app/src/main/res/layout/activity_bypass_list.xml similarity index 100% rename from app/src/main/res/layout/activity_bypass_list.xml rename to V2rayNG/app/src/main/res/layout/activity_bypass_list.xml diff --git a/app/src/main/res/layout/activity_logcat.xml b/V2rayNG/app/src/main/res/layout/activity_logcat.xml similarity index 100% rename from app/src/main/res/layout/activity_logcat.xml rename to V2rayNG/app/src/main/res/layout/activity_logcat.xml diff --git a/app/src/main/res/layout/activity_main.xml b/V2rayNG/app/src/main/res/layout/activity_main.xml similarity index 93% rename from app/src/main/res/layout/activity_main.xml rename to V2rayNG/app/src/main/res/layout/activity_main.xml index f2db381..5f3c9e9 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/V2rayNG/app/src/main/res/layout/activity_main.xml @@ -13,12 +13,13 @@ + android:layout_height="wrap_content" + android:theme="@style/AppTheme.AppBarOverlay"> + android:layout_height="?attr/actionBarSize" /> @@ -64,7 +65,7 @@ android:paddingStart="16dp" android:text="@string/connection_test_pending" android:textAppearance="@style/TextAppearance.AppCompat.Small" - android:textColor="@color/colorText" /> + android:textColor="@color/colorWhite" /> @@ -91,7 +92,7 @@ android:clickable="true" android:focusable="true" android:nextFocusLeft="@+id/layout_test" - android:src="@drawable/ic_stat_name_grey" + android:src="@drawable/ic_stat_name" app:layout_anchorGravity="bottom|right|end" /> @@ -104,6 +105,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" + app:headerLayout="@layout/nav_header" app:menu="@menu/menu_drawer" > + android:textColor="@color/fab_orange_dark" /> diff --git a/app/src/main/res/layout/activity_server_shadowsocks.xml b/V2rayNG/app/src/main/res/layout/activity_server_shadowsocks.xml similarity index 97% rename from app/src/main/res/layout/activity_server_shadowsocks.xml rename to V2rayNG/app/src/main/res/layout/activity_server_shadowsocks.xml index aba1b74..dba1c14 100644 --- a/app/src/main/res/layout/activity_server_shadowsocks.xml +++ b/V2rayNG/app/src/main/res/layout/activity_server_shadowsocks.xml @@ -19,8 +19,7 @@ diff --git a/app/src/main/res/layout/activity_server_socks.xml b/V2rayNG/app/src/main/res/layout/activity_server_socks.xml similarity index 97% rename from app/src/main/res/layout/activity_server_socks.xml rename to V2rayNG/app/src/main/res/layout/activity_server_socks.xml index 0cac6ea..5f34c37 100644 --- a/app/src/main/res/layout/activity_server_socks.xml +++ b/V2rayNG/app/src/main/res/layout/activity_server_socks.xml @@ -19,8 +19,7 @@ diff --git a/app/src/main/res/layout/activity_server_trojan.xml b/V2rayNG/app/src/main/res/layout/activity_server_trojan.xml similarity index 98% rename from app/src/main/res/layout/activity_server_trojan.xml rename to V2rayNG/app/src/main/res/layout/activity_server_trojan.xml index 7781ed4..88eb70f 100644 --- a/app/src/main/res/layout/activity_server_trojan.xml +++ b/V2rayNG/app/src/main/res/layout/activity_server_trojan.xml @@ -19,8 +19,7 @@ diff --git a/app/src/main/res/layout/activity_server_vless.xml b/V2rayNG/app/src/main/res/layout/activity_server_vless.xml similarity index 98% rename from app/src/main/res/layout/activity_server_vless.xml rename to V2rayNG/app/src/main/res/layout/activity_server_vless.xml index 4132237..8e70bd0 100644 --- a/app/src/main/res/layout/activity_server_vless.xml +++ b/V2rayNG/app/src/main/res/layout/activity_server_vless.xml @@ -19,8 +19,7 @@ diff --git a/app/src/main/res/layout/activity_server_vmess.xml b/V2rayNG/app/src/main/res/layout/activity_server_vmess.xml similarity index 98% rename from app/src/main/res/layout/activity_server_vmess.xml rename to V2rayNG/app/src/main/res/layout/activity_server_vmess.xml index 8c1c89b..ebfeb7e 100644 --- a/app/src/main/res/layout/activity_server_vmess.xml +++ b/V2rayNG/app/src/main/res/layout/activity_server_vmess.xml @@ -19,8 +19,7 @@ diff --git a/app/src/main/res/layout/activity_settings.xml b/V2rayNG/app/src/main/res/layout/activity_settings.xml similarity index 100% rename from app/src/main/res/layout/activity_settings.xml rename to V2rayNG/app/src/main/res/layout/activity_settings.xml diff --git a/app/src/main/res/layout/activity_sub_edit.xml b/V2rayNG/app/src/main/res/layout/activity_sub_edit.xml similarity index 81% rename from app/src/main/res/layout/activity_sub_edit.xml rename to V2rayNG/app/src/main/res/layout/activity_sub_edit.xml index 1c84dd5..770f93e 100644 --- a/app/src/main/res/layout/activity_sub_edit.xml +++ b/V2rayNG/app/src/main/res/layout/activity_sub_edit.xml @@ -60,7 +60,7 @@ android:text="@string/sub_setting_enable" /> - - - - - - - - - - + android:textColor="@color/fab_orange_dark" /> + + android:textColor="@color/fab_orange_dark" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_recycler_main.xml b/V2rayNG/app/src/main/res/layout/item_recycler_main.xml similarity index 97% rename from app/src/main/res/layout/item_recycler_main.xml rename to V2rayNG/app/src/main/res/layout/item_recycler_main.xml index 7a42c50..acae822 100644 --- a/app/src/main/res/layout/item_recycler_main.xml +++ b/V2rayNG/app/src/main/res/layout/item_recycler_main.xml @@ -84,7 +84,7 @@ android:layout_weight="1" android:lines="1" android:textAppearance="@style/TextAppearance.AppCompat.Small" - android:textColor="@color/color_secondary" + android:textColor="@color/colorSubscription" android:textSize="10sp" tools:text="Sub" /> @@ -122,7 +122,7 @@ android:layout_width="wrap_content" android:layout_height="@dimen/png_height" android:src="@drawable/ic_share_black_24dp" - app:tint="?colorMainText" /> + app:tint="?attr/colorMainText" /> @@ -178,7 +178,7 @@ android:layout_height="wrap_content" android:lines="1" android:textAppearance="@style/TextAppearance.AppCompat.Small" - android:textColor="@color/color_secondary" + android:textColor="@color/fab_orange_dark" android:textSize="10sp" /> diff --git a/app/src/main/res/layout/item_recycler_sub_setting.xml b/V2rayNG/app/src/main/res/layout/item_recycler_sub_setting.xml similarity index 100% rename from app/src/main/res/layout/item_recycler_sub_setting.xml rename to V2rayNG/app/src/main/res/layout/item_recycler_sub_setting.xml diff --git a/app/src/main/res/layout/item_recycler_user_asset.xml b/V2rayNG/app/src/main/res/layout/item_recycler_user_asset.xml similarity index 100% rename from app/src/main/res/layout/item_recycler_user_asset.xml rename to V2rayNG/app/src/main/res/layout/item_recycler_user_asset.xml diff --git a/V2rayNG/app/src/main/res/layout/nav_header.xml b/V2rayNG/app/src/main/res/layout/nav_header.xml new file mode 100644 index 0000000..2f5d3ed --- /dev/null +++ b/V2rayNG/app/src/main/res/layout/nav_header.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/V2rayNG/app/src/main/res/layout/nav_toolbar.xml b/V2rayNG/app/src/main/res/layout/nav_toolbar.xml new file mode 100644 index 0000000..262787d --- /dev/null +++ b/V2rayNG/app/src/main/res/layout/nav_toolbar.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/nav_view.xml b/V2rayNG/app/src/main/res/layout/nav_view.xml similarity index 90% rename from app/src/main/res/layout/nav_view.xml rename to V2rayNG/app/src/main/res/layout/nav_view.xml index 9223c8d..34fd03a 100644 --- a/app/src/main/res/layout/nav_view.xml +++ b/V2rayNG/app/src/main/res/layout/nav_view.xml @@ -5,4 +5,5 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" + app:headerLayout="@layout/nav_header" app:menu="@menu/menu_drawer" /> \ No newline at end of file diff --git a/V2rayNG/app/src/main/res/layout/preference_with_help_link.xml b/V2rayNG/app/src/main/res/layout/preference_with_help_link.xml new file mode 100644 index 0000000..ec6e642 --- /dev/null +++ b/V2rayNG/app/src/main/res/layout/preference_with_help_link.xml @@ -0,0 +1,11 @@ + +