From f6ea2df5a0d84fd2ed7ca86b711d4b8f51997b87 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Tue, 21 Jul 2026 18:16:06 +0800 Subject: [PATCH] Refactor UI package structure by feature --- V2rayNG/app/src/fdroid/res/xml/shortcuts.xml | 8 ++--- V2rayNG/app/src/main/AndroidManifest.xml | 34 +++++++++---------- .../java/com/v2ray/ang/ui/AboutActivity.kt | 1 + .../java/com/v2ray/ang/ui/ScannerActivity.kt | 3 +- .../com/v2ray/ang/ui/UrlSchemeActivity.kt | 1 + .../ui/{ => apppicker}/AppPickerActivity.kt | 4 +-- .../apppicker}/AppPickerViewModel.kt | 11 +++--- .../ang/ui/{ => backup}/BackupActivity.kt | 4 +-- .../backup}/BackupViewModel.kt | 12 +++---- .../ui/{ => base}/BaseComponentActivity.kt | 4 +-- .../{viewmodel => ui/base}/BaseViewModel.kt | 6 ++-- .../{ => base}/HelperBaseComponentActivity.kt | 4 +-- .../{viewmodel => ui/base}/ViewModelEvent.kt | 6 ++-- .../{ => checkupdate}/CheckUpdateActivity.kt | 4 +-- .../checkupdate}/CheckUpdateViewModel.kt | 5 +-- .../ang/ui/{ => logcat}/LogcatActivity.kt | 6 ++-- .../logcat}/LogcatViewModel.kt | 8 ++--- .../com/v2ray/ang/ui/main/MainActivity.kt | 19 +++++------ .../com/v2ray/ang/ui/main/MainGroupTab.kt | 1 - .../java/com/v2ray/ang/ui/main/MainScreen.kt | 1 - .../com/v2ray/ang/ui/main/MainServerPager.kt | 1 - .../{viewmodel => ui/main}/MainViewModel.kt | 9 ++--- .../{ => perappproxy}/PerAppProxyActivity.kt | 4 +-- .../perappproxy}/PerAppProxyViewModel.kt | 8 ++--- .../ui/{ => routing}/RoutingEditActivity.kt | 5 +-- .../{ => routing}/RoutingSettingActivity.kt | 4 +-- .../routing}/RoutingSettingsViewModel.kt | 5 +-- .../v2ray/ang/ui/server/BaseServerActivity.kt | 2 +- .../com/v2ray/ang/ui/server/ServerActivity.kt | 2 +- .../ui/server/ServerCustomConfigActivity.kt | 2 +- .../ang/ui/server/ServerGroupActivity.kt | 2 +- .../ang/ui/server/ServerProxyChainActivity.kt | 2 +- .../ang/ui/{ => settings}/SettingsActivity.kt | 5 ++- .../settings}/SettingsViewModel.kt | 6 ++-- .../ui/{ => shortcut}/ScScannerActivity.kt | 5 +-- .../ang/ui/{ => shortcut}/ScStartActivity.kt | 3 +- .../ang/ui/{ => shortcut}/ScStopActivity.kt | 3 +- .../ang/ui/{ => shortcut}/ScSwitchActivity.kt | 3 +- .../ang/ui/{ => shortcut}/TaskerActivity.kt | 4 +-- .../ui/{ => subscription}/SubEditActivity.kt | 5 ++- .../{ => subscription}/SubSettingActivity.kt | 10 +++--- .../subscription}/SubscriptionsViewModel.kt | 5 +-- .../ui/{ => userasset}/UserAssetActivity.kt | 5 ++- .../{ => userasset}/UserAssetUrlActivity.kt | 5 ++- .../userasset}/UserAssetViewModel.kt | 5 +-- V2rayNG/app/src/main/res/xml/shortcuts.xml | 8 ++--- 46 files changed, 130 insertions(+), 130 deletions(-) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => apppicker}/AppPickerActivity.kt (98%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{viewmodel => ui/apppicker}/AppPickerViewModel.kt (94%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => backup}/BackupActivity.kt (99%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{viewmodel => ui/backup}/BackupViewModel.kt (95%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => base}/BaseComponentActivity.kt (96%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{viewmodel => ui/base}/BaseViewModel.kt (98%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => base}/HelperBaseComponentActivity.kt (99%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{viewmodel => ui/base}/ViewModelEvent.kt (55%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => checkupdate}/CheckUpdateActivity.kt (98%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{viewmodel => ui/checkupdate}/CheckUpdateViewModel.kt (96%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => logcat}/LogcatActivity.kt (98%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{viewmodel => ui/logcat}/LogcatViewModel.kt (92%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{viewmodel => ui/main}/MainViewModel.kt (99%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => perappproxy}/PerAppProxyActivity.kt (99%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{viewmodel => ui/perappproxy}/PerAppProxyViewModel.kt (98%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => routing}/RoutingEditActivity.kt (98%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => routing}/RoutingSettingActivity.kt (99%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{viewmodel => ui/routing}/RoutingSettingsViewModel.kt (96%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => settings}/SettingsActivity.kt (99%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{viewmodel => ui/settings}/SettingsViewModel.kt (95%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => shortcut}/ScScannerActivity.kt (92%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => shortcut}/ScStartActivity.kt (87%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => shortcut}/ScStopActivity.kt (87%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => shortcut}/ScSwitchActivity.kt (89%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => shortcut}/TaskerActivity.kt (98%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => subscription}/SubEditActivity.kt (98%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => subscription}/SubSettingActivity.kt (98%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{viewmodel => ui/subscription}/SubscriptionsViewModel.kt (96%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => userasset}/UserAssetActivity.kt (99%) rename V2rayNG/app/src/main/java/com/v2ray/ang/ui/{ => userasset}/UserAssetUrlActivity.kt (98%) rename V2rayNG/app/src/main/java/com/v2ray/ang/{viewmodel => ui/userasset}/UserAssetViewModel.kt (98%) diff --git a/V2rayNG/app/src/fdroid/res/xml/shortcuts.xml b/V2rayNG/app/src/fdroid/res/xml/shortcuts.xml index c8deac08..2dbf0f1d 100644 --- a/V2rayNG/app/src/fdroid/res/xml/shortcuts.xml +++ b/V2rayNG/app/src/fdroid/res/xml/shortcuts.xml @@ -11,7 +11,7 @@ @@ -26,7 +26,7 @@ @@ -41,7 +41,7 @@ @@ -56,7 +56,7 @@ diff --git a/V2rayNG/app/src/main/AndroidManifest.xml b/V2rayNG/app/src/main/AndroidManifest.xml index a6610978..75fddd43 100644 --- a/V2rayNG/app/src/main/AndroidManifest.xml +++ b/V2rayNG/app/src/main/AndroidManifest.xml @@ -115,58 +115,58 @@ android:exported="false" android:windowSoftInputMode="stateUnchanged|adjustResize" /> diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/AboutActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/AboutActivity.kt index 0efc6ba2..5049e48e 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/AboutActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/AboutActivity.kt @@ -33,6 +33,7 @@ import com.v2ray.ang.compose.AppTopBar import com.v2ray.ang.compose.SettingsMenuItem import com.v2ray.ang.compose.VersionInfoBlock import com.v2ray.ang.core.CoreNativeManager +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.util.Utils class AboutActivity : BaseComponentActivity() { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScannerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScannerActivity.kt index f50dfb34..53759d19 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScannerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScannerActivity.kt @@ -1,7 +1,6 @@ package com.v2ray.ang.ui import android.content.Intent -import android.content.pm.PackageManager import android.graphics.BitmapFactory import android.os.Bundle import android.util.Size as TargetSize @@ -68,7 +67,7 @@ import com.v2ray.ang.R import com.v2ray.ang.compose.AppTopBar import com.v2ray.ang.enums.PermissionType import com.v2ray.ang.extension.toast -import com.v2ray.ang.handler.MmkvManager +import com.v2ray.ang.ui.base.HelperBaseComponentActivity import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.QRCodeDecoder import java.util.concurrent.Executors diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UrlSchemeActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UrlSchemeActivity.kt index df0be729..eb8c9fac 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UrlSchemeActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UrlSchemeActivity.kt @@ -10,6 +10,7 @@ import com.v2ray.ang.R import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.toastError import com.v2ray.ang.handler.AngConfigManager +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.ui.main.MainActivity import com.v2ray.ang.util.LogUtil import kotlinx.coroutines.Dispatchers diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/AppPickerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt similarity index 98% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/AppPickerActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt index c44f20e6..1d423eb4 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/AppPickerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.apppicker import android.content.Context import android.content.Intent @@ -36,7 +36,7 @@ import com.v2ray.ang.compose.AppListItem import com.v2ray.ang.compose.AppTopBar import com.v2ray.ang.compose.verticalScrollbar import com.v2ray.ang.dto.AppInfo -import com.v2ray.ang.viewmodel.AppPickerViewModel +import com.v2ray.ang.ui.base.BaseComponentActivity class AppPickerActivity : BaseComponentActivity() { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/AppPickerViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerViewModel.kt similarity index 94% rename from V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/AppPickerViewModel.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerViewModel.kt index b1d82ae8..3adc52d5 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/AppPickerViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/apppicker/AppPickerViewModel.kt @@ -1,9 +1,11 @@ -package com.v2ray.ang.viewmodel +package com.v2ray.ang.ui.apppicker import android.app.Application import android.content.Context import com.v2ray.ang.AppConfig +import com.v2ray.ang.R import com.v2ray.ang.dto.AppInfo +import com.v2ray.ang.ui.base.BaseViewModel import com.v2ray.ang.util.AppManagerUtil import com.v2ray.ang.util.LogUtil import kotlinx.coroutines.Dispatchers @@ -12,6 +14,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.withContext import java.text.Collator +import kotlin.collections.plus /** * ViewModel for AppPicker screen. @@ -45,7 +48,7 @@ class AppPickerViewModel(application: Application) : BaseViewModel(application) _displayedApps.value = applyFilter(currentQuery) } catch (e: Exception) { LogUtil.e("AppPickerViewModel", "Failed to load app list", e) - toastError(com.v2ray.ang.R.string.toast_failure) + toastError(R.string.toast_failure) } } } @@ -107,11 +110,11 @@ class AppPickerViewModel(application: Application) : BaseViewModel(application) ?: context.getDrawable(android.R.drawable.sym_def_app_icon) ?: error("No fallback drawable available") return AppInfo( - appName = context.getString(com.v2ray.ang.R.string.app_picker_unknown_app), + appName = context.getString(R.string.app_picker_unknown_app), packageName = AppConfig.UNIDENTIFIED_PACKAGE, appIcon = icon, isSystemApp = false, isSelected = 0 ) } -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BackupActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/backup/BackupActivity.kt similarity index 99% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/BackupActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/backup/BackupActivity.kt index b23aee07..deee006c 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BackupActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/backup/BackupActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.backup import android.content.Intent import android.net.Uri @@ -40,8 +40,8 @@ import com.v2ray.ang.dto.entities.WebDavConfig import com.v2ray.ang.extension.toastError import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.SettingsManager +import com.v2ray.ang.ui.base.HelperBaseComponentActivity import com.v2ray.ang.util.LogUtil -import com.v2ray.ang.viewmodel.BackupViewModel import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.launch import java.io.File diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/BackupViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/backup/BackupViewModel.kt similarity index 95% rename from V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/BackupViewModel.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/backup/BackupViewModel.kt index 7d61d779..ef2f869c 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/BackupViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/backup/BackupViewModel.kt @@ -1,18 +1,18 @@ -package com.v2ray.ang.viewmodel +package com.v2ray.ang.ui.backup import android.app.Application import android.net.Uri import com.tencent.mmkv.MMKV import com.v2ray.ang.AppConfig -import com.v2ray.ang.AppConfig.WEBDAV_BACKUP_FILE_NAME import com.v2ray.ang.R import com.v2ray.ang.dto.entities.WebDavConfig import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsChangeManager import com.v2ray.ang.handler.WebDavManager +import com.v2ray.ang.ui.base.BaseViewModel +import com.v2ray.ang.ui.base.ViewModelEvent import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.ZipUtil -import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow @@ -91,7 +91,7 @@ class BackupViewModel(application: Application) : BaseViewModel(application) { WebDavManager.init(config) val ok = try { - WebDavManager.uploadFile(tempFile, WEBDAV_BACKUP_FILE_NAME) + WebDavManager.uploadFile(tempFile, AppConfig.WEBDAV_BACKUP_FILE_NAME) } catch (e: Exception) { LogUtil.e(AppConfig.TAG, "WebDAV upload error", e) false @@ -123,7 +123,7 @@ class BackupViewModel(application: Application) : BaseViewModel(application) { try { target = File(cacheDir, "download_${System.currentTimeMillis()}.zip") WebDavManager.init(config) - val ok = WebDavManager.downloadFile(WEBDAV_BACKUP_FILE_NAME, target) + val ok = WebDavManager.downloadFile(AppConfig.WEBDAV_BACKUP_FILE_NAME, target) if (!ok) { toastError(R.string.toast_failure) return@launchLoading @@ -178,4 +178,4 @@ class BackupViewModel(application: Application) : BaseViewModel(application) { return count > 0 } -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseComponentActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseComponentActivity.kt similarity index 96% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseComponentActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseComponentActivity.kt index dba8fe20..d836553a 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/BaseComponentActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseComponentActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.base import android.content.Context import android.os.Bundle @@ -28,4 +28,4 @@ abstract class BaseComponentActivity : ComponentActivity() { @Composable protected abstract fun ScreenContent() -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/BaseViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseViewModel.kt similarity index 98% rename from V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/BaseViewModel.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseViewModel.kt index 71c7cedf..d4c9952a 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/BaseViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/BaseViewModel.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.viewmodel +package com.v2ray.ang.ui.base import android.app.Application import androidx.lifecycle.AndroidViewModel @@ -7,8 +7,8 @@ import com.v2ray.ang.AngApplication import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.toastError import com.v2ray.ang.extension.toastSuccess -import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow @@ -113,4 +113,4 @@ abstract class BaseViewModel(application: Application) : AndroidViewModel(applic } } } -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/HelperBaseComponentActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/HelperBaseComponentActivity.kt similarity index 99% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/HelperBaseComponentActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/HelperBaseComponentActivity.kt index 885eadc5..19a30894 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/HelperBaseComponentActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/HelperBaseComponentActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.base import android.net.Uri import android.os.Bundle @@ -86,4 +86,4 @@ abstract class HelperBaseComponentActivity : BaseComponentActivity() { ) { qrCodeScanner.launch(onResult) } -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/ViewModelEvent.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/ViewModelEvent.kt similarity index 55% rename from V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/ViewModelEvent.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/ViewModelEvent.kt index bbfb2ff9..c00a4c10 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/ViewModelEvent.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/base/ViewModelEvent.kt @@ -1,13 +1,13 @@ -package com.v2ray.ang.viewmodel +package com.v2ray.ang.ui.base /** * Base interface for ViewModel UI events. */ -sealed interface ViewModelEvent +interface ViewModelEvent /** * Common UI events for all ViewModels. */ -sealed interface BaseViewModelEvent : ViewModelEvent { +interface BaseViewModelEvent : ViewModelEvent { object FinishActivity : BaseViewModelEvent } diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/CheckUpdateActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/checkupdate/CheckUpdateActivity.kt similarity index 98% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/CheckUpdateActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/checkupdate/CheckUpdateActivity.kt index a97becba..e663a98f 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/CheckUpdateActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/checkupdate/CheckUpdateActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.checkupdate import android.os.Bundle import androidx.activity.viewModels @@ -28,8 +28,8 @@ import com.v2ray.ang.compose.SettingsMenuItem import com.v2ray.ang.compose.SettingsSwitchItem import com.v2ray.ang.compose.VersionInfoBlock import com.v2ray.ang.core.CoreNativeManager +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.util.Utils -import com.v2ray.ang.viewmodel.CheckUpdateViewModel class CheckUpdateActivity : BaseComponentActivity() { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/CheckUpdateViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/checkupdate/CheckUpdateViewModel.kt similarity index 96% rename from V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/CheckUpdateViewModel.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/checkupdate/CheckUpdateViewModel.kt index 6b3339d3..8d598ed4 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/CheckUpdateViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/checkupdate/CheckUpdateViewModel.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.viewmodel +package com.v2ray.ang.ui.checkupdate import android.app.Application import com.v2ray.ang.AppConfig @@ -6,6 +6,7 @@ import com.v2ray.ang.R import com.v2ray.ang.dto.CheckUpdateResult import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.UpdateCheckerManager +import com.v2ray.ang.ui.base.BaseViewModel import com.v2ray.ang.util.LogUtil import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -54,4 +55,4 @@ class CheckUpdateViewModel(application: Application) : BaseViewModel(application fun dismissUpdateDialog() { _showUpdateDialog.value = false } -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/LogcatActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/logcat/LogcatActivity.kt similarity index 98% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/LogcatActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/logcat/LogcatActivity.kt index bdd3cd40..8c525fe4 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/LogcatActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/logcat/LogcatActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.logcat import android.content.ClipData import android.content.Intent @@ -43,11 +43,9 @@ import com.v2ray.ang.compose.AppTopBar import com.v2ray.ang.compose.LocalAppSnackbar import com.v2ray.ang.compose.verticalScrollbar import com.v2ray.ang.extension.toast +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.util.Utils -import com.v2ray.ang.viewmodel.LogcatViewModel -import kotlinx.coroutines.Delay import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import java.io.File diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/LogcatViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/logcat/LogcatViewModel.kt similarity index 92% rename from V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/LogcatViewModel.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/logcat/LogcatViewModel.kt index e6797f5d..9c90c951 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/LogcatViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/logcat/LogcatViewModel.kt @@ -1,8 +1,8 @@ -package com.v2ray.ang.viewmodel +package com.v2ray.ang.ui.logcat import android.app.Application import com.v2ray.ang.AppConfig -import com.v2ray.ang.AppConfig.ANG_PACKAGE +import com.v2ray.ang.ui.base.BaseViewModel import com.v2ray.ang.util.LogUtil import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -25,7 +25,7 @@ class LogcatViewModel(application: Application) : BaseViewModel(application) { lst.add("-v") lst.add("time") lst.add("-s") - lst.add("GoLog,${ANG_PACKAGE},AndroidRuntime,System.err") + lst.add("GoLog,${AppConfig.ANG_PACKAGE},AndroidRuntime,System.err") val process = Runtime.getRuntime().exec(lst.toTypedArray()) val allText = process.inputStream.bufferedReader().use { it.readLines() }.reversed() @@ -65,4 +65,4 @@ class LogcatViewModel(application: Application) : BaseViewModel(application) { logsetsAll.filter { it.contains(currentFilter) } } } -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainActivity.kt index 056a396f..72131f9a 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainActivity.kt @@ -25,15 +25,15 @@ import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsChangeManager import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.ui.AboutActivity -import com.v2ray.ang.ui.BackupActivity -import com.v2ray.ang.ui.CheckUpdateActivity -import com.v2ray.ang.ui.HelperBaseComponentActivity -import com.v2ray.ang.ui.LogcatActivity -import com.v2ray.ang.ui.PerAppProxyActivity -import com.v2ray.ang.ui.RoutingSettingActivity -import com.v2ray.ang.ui.SettingsActivity -import com.v2ray.ang.ui.SubSettingActivity -import com.v2ray.ang.ui.UserAssetActivity +import com.v2ray.ang.ui.backup.BackupActivity +import com.v2ray.ang.ui.checkupdate.CheckUpdateActivity +import com.v2ray.ang.ui.base.HelperBaseComponentActivity +import com.v2ray.ang.ui.logcat.LogcatActivity +import com.v2ray.ang.ui.perappproxy.PerAppProxyActivity +import com.v2ray.ang.ui.routing.RoutingSettingActivity +import com.v2ray.ang.ui.settings.SettingsActivity +import com.v2ray.ang.ui.subscription.SubSettingActivity +import com.v2ray.ang.ui.userasset.UserAssetActivity import com.v2ray.ang.ui.server.ProfileEditorResult import com.v2ray.ang.ui.server.ServerCustomConfigActivity import com.v2ray.ang.ui.server.ServerGroupActivity @@ -48,7 +48,6 @@ import com.v2ray.ang.ui.server.ServerVmessActivity import com.v2ray.ang.ui.server.ServerWireguardActivity import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils -import com.v2ray.ang.viewmodel.MainViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainGroupTab.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainGroupTab.kt index 0d686176..e85dd4a9 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainGroupTab.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainGroupTab.kt @@ -19,7 +19,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.v2ray.ang.compose.colorFabActive import com.v2ray.ang.dto.GroupMapItem import com.v2ray.ang.dto.entities.ServersCache -import com.v2ray.ang.viewmodel.MainViewModel import kotlinx.coroutines.flow.StateFlow @Composable diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainScreen.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainScreen.kt index 1f6d2228..f7ad15c0 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainScreen.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainScreen.kt @@ -31,7 +31,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.v2ray.ang.compose.LocalDarkTheme import com.v2ray.ang.compose.QRCodeDialog import com.v2ray.ang.dto.entities.ProfileItem -import com.v2ray.ang.viewmodel.MainViewModel import kotlinx.coroutines.delay import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.launch diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainServerPager.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainServerPager.kt index ff211a34..4b8e7378 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainServerPager.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainServerPager.kt @@ -56,7 +56,6 @@ import com.v2ray.ang.extension.isComplexType import com.v2ray.ang.extension.nullIfBlank import com.v2ray.ang.handler.AngConfigManager import com.v2ray.ang.handler.MmkvManager -import com.v2ray.ang.viewmodel.MainViewModel import sh.calvin.reorderable.ReorderableItem import sh.calvin.reorderable.rememberReorderableLazyGridState import sh.calvin.reorderable.rememberReorderableLazyListState diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/MainViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt similarity index 99% rename from V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/MainViewModel.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt index f9baa2b8..1331afed 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/MainViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/main/MainViewModel.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.viewmodel +package com.v2ray.ang.ui.main import android.app.Application import androidx.lifecycle.ViewModel @@ -14,10 +14,7 @@ import com.v2ray.ang.dto.entities.ServersCache import com.v2ray.ang.dto.entities.SubscriptionCache import com.v2ray.ang.extension.isComplexType import com.v2ray.ang.extension.matchesPattern -import com.v2ray.ang.ui.main.MainAction -import com.v2ray.ang.ui.main.MainDataSource -import com.v2ray.ang.ui.main.MainUiState -import com.v2ray.ang.ui.main.MainServiceEvent +import com.v2ray.ang.ui.base.BaseViewModel import com.v2ray.ang.util.LogUtil import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CompletableDeferred @@ -785,4 +782,4 @@ class MainViewModel( throw IllegalArgumentException("Unknown ViewModel class") } } -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/PerAppProxyActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyActivity.kt similarity index 99% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/PerAppProxyActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyActivity.kt index e8beec92..43e7de21 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/PerAppProxyActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.perappproxy import android.os.Bundle import androidx.activity.viewModels @@ -49,8 +49,8 @@ import com.v2ray.ang.compose.verticalScrollbar import com.v2ray.ang.dto.AppInfo import com.v2ray.ang.extension.toastInfo import com.v2ray.ang.extension.toastSuccess +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.util.Utils -import com.v2ray.ang.viewmodel.PerAppProxyViewModel class PerAppProxyActivity : BaseComponentActivity() { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/PerAppProxyViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyViewModel.kt similarity index 98% rename from V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/PerAppProxyViewModel.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyViewModel.kt index da2faf75..7c0f37ef 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/PerAppProxyViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyViewModel.kt @@ -1,14 +1,14 @@ -package com.v2ray.ang.viewmodel +package com.v2ray.ang.ui.perappproxy import android.app.Application import android.content.Context import com.v2ray.ang.AppConfig -import com.v2ray.ang.AppConfig.ANG_PACKAGE import com.v2ray.ang.dto.AppInfo import com.v2ray.ang.dto.UrlContentRequest import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsChangeManager import com.v2ray.ang.handler.SettingsManager +import com.v2ray.ang.ui.base.BaseViewModel import com.v2ray.ang.util.AppManagerUtil import com.v2ray.ang.util.HttpUtil import com.v2ray.ang.util.LogUtil @@ -132,7 +132,7 @@ class PerAppProxyViewModel(application: Application) : BaseViewModel(application appsAll = apps _displayedApps.value = apps } catch (e: Exception) { - LogUtil.e(ANG_PACKAGE, "Error loading apps", e) + LogUtil.e(AppConfig.ANG_PACKAGE, "Error loading apps", e) } } } @@ -268,4 +268,4 @@ class PerAppProxyViewModel(application: Application) : BaseViewModel(application setPerAppProxyEnabled(true) SettingsChangeManager.makeRestartService() } -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingEditActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingEditActivity.kt similarity index 98% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingEditActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingEditActivity.kt index 43d07c44..e467ff34 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingEditActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingEditActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.routing import android.app.Activity import android.os.Bundle @@ -16,7 +16,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.ScaffoldDefaults import androidx.compose.material3.Text @@ -46,6 +45,8 @@ import com.v2ray.ang.extension.nullIfBlank import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.SettingsManager +import com.v2ray.ang.ui.apppicker.AppPickerActivity +import com.v2ray.ang.ui.base.BaseComponentActivity import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingSettingActivity.kt similarity index 99% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingSettingActivity.kt index 75abb600..6d19ec86 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/RoutingSettingActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingSettingActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.routing import android.content.Intent import android.os.Bundle @@ -58,10 +58,10 @@ import com.v2ray.ang.extension.toastError import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsManager +import com.v2ray.ang.ui.base.HelperBaseComponentActivity import com.v2ray.ang.util.JsonUtil import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils -import com.v2ray.ang.viewmodel.RoutingSettingsViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/RoutingSettingsViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingSettingsViewModel.kt similarity index 96% rename from V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/RoutingSettingsViewModel.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingSettingsViewModel.kt index b35b77aa..0e79f6c9 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/RoutingSettingsViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/routing/RoutingSettingsViewModel.kt @@ -1,9 +1,10 @@ -package com.v2ray.ang.viewmodel +package com.v2ray.ang.ui.routing import android.app.Application import com.v2ray.ang.dto.entities.RulesetItem import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsManager +import com.v2ray.ang.ui.base.BaseViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow @@ -48,4 +49,4 @@ class RoutingSettingsViewModel(application: Application) : BaseViewModel(applica _rulesetsFlow.value = rulesets.toList() } } -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/BaseServerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/BaseServerActivity.kt index c6fe9205..bf1104aa 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/BaseServerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/BaseServerActivity.kt @@ -46,7 +46,7 @@ import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.AngConfigManager import com.v2ray.ang.handler.CertificateFingerprintManager import com.v2ray.ang.handler.MmkvManager -import com.v2ray.ang.ui.BaseComponentActivity +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.util.JsonUtil import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerActivity.kt index 7f258bec..03a60e7f 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerActivity.kt @@ -49,7 +49,7 @@ import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.AngConfigManager import com.v2ray.ang.handler.CertificateFingerprintManager import com.v2ray.ang.handler.MmkvManager -import com.v2ray.ang.ui.BaseComponentActivity +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.util.JsonUtil import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerCustomConfigActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerCustomConfigActivity.kt index c655b234..f00a40f7 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerCustomConfigActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerCustomConfigActivity.kt @@ -67,7 +67,7 @@ import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.fmt.CustomFmt import com.v2ray.ang.handler.AngConfigManager import com.v2ray.ang.handler.MmkvManager -import com.v2ray.ang.ui.BaseComponentActivity +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.util.LogUtil import kotlinx.coroutines.flow.collectLatest diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerGroupActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerGroupActivity.kt index fb863b32..d79a8a32 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerGroupActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerGroupActivity.kt @@ -32,7 +32,7 @@ import com.v2ray.ang.extension.isNotNullEmpty import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.MmkvManager -import com.v2ray.ang.ui.BaseComponentActivity +import com.v2ray.ang.ui.base.BaseComponentActivity class ServerGroupActivity : BaseComponentActivity() { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerProxyChainActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerProxyChainActivity.kt index eab57482..eb5880b0 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerProxyChainActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/server/ServerProxyChainActivity.kt @@ -47,7 +47,7 @@ import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsManager -import com.v2ray.ang.ui.BaseComponentActivity +import com.v2ray.ang.ui.base.BaseComponentActivity import sh.calvin.reorderable.ReorderableItem import sh.calvin.reorderable.rememberReorderableLazyListState diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/settings/SettingsActivity.kt similarity index 99% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/settings/SettingsActivity.kt index d818935a..584bdb02 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SettingsActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/settings/SettingsActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.settings import android.os.Bundle import androidx.activity.viewModels @@ -16,7 +16,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringArrayResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp @@ -36,8 +35,8 @@ import com.v2ray.ang.handler.MmkvManager.rememberMmkvBool import com.v2ray.ang.handler.MmkvManager.rememberMmkvString import com.v2ray.ang.handler.SettingsChangeManager import com.v2ray.ang.root.RootManager +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.util.Utils -import com.v2ray.ang.viewmodel.SettingsViewModel class SettingsActivity : BaseComponentActivity() { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SettingsViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/settings/SettingsViewModel.kt similarity index 95% rename from V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SettingsViewModel.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/settings/SettingsViewModel.kt index c98101b7..83d44309 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SettingsViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/settings/SettingsViewModel.kt @@ -1,11 +1,11 @@ -package com.v2ray.ang.viewmodel +package com.v2ray.ang.ui.settings import android.app.Application import com.v2ray.ang.AppConfig import com.v2ray.ang.R import com.v2ray.ang.root.RootManager +import com.v2ray.ang.ui.base.BaseViewModel import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay import kotlinx.coroutines.withContext class SettingsViewModel(application: Application) : BaseViewModel(application) { @@ -56,4 +56,4 @@ class SettingsViewModel(application: Application) : BaseViewModel(application) { null } } -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScScannerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/ScScannerActivity.kt similarity index 92% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScScannerActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/ScScannerActivity.kt index bbb04842..6f3f378b 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScScannerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/ScScannerActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.shortcut import android.content.Intent import android.os.Bundle @@ -8,6 +8,7 @@ import com.v2ray.ang.R import com.v2ray.ang.extension.toastError import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.AngConfigManager +import com.v2ray.ang.ui.base.HelperBaseComponentActivity import com.v2ray.ang.ui.main.MainActivity class ScScannerActivity : HelperBaseComponentActivity() { @@ -39,4 +40,4 @@ class ScScannerActivity : HelperBaseComponentActivity() { finish() } } -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScStartActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/ScStartActivity.kt similarity index 87% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScStartActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/ScStartActivity.kt index 106e010d..4597d442 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScStartActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/ScStartActivity.kt @@ -1,9 +1,10 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.shortcut import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import com.v2ray.ang.core.CoreServiceManager +import com.v2ray.ang.ui.base.BaseComponentActivity class ScStartActivity : BaseComponentActivity() { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScStopActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/ScStopActivity.kt similarity index 87% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScStopActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/ScStopActivity.kt index eade1d42..996e7cf0 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScStopActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/ScStopActivity.kt @@ -1,9 +1,10 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.shortcut import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import com.v2ray.ang.core.CoreServiceManager +import com.v2ray.ang.ui.base.BaseComponentActivity class ScStopActivity : BaseComponentActivity() { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScSwitchActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/ScSwitchActivity.kt similarity index 89% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScSwitchActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/ScSwitchActivity.kt index fca1d6ee..2eeea69d 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/ScSwitchActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/ScSwitchActivity.kt @@ -1,9 +1,10 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.shortcut import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import com.v2ray.ang.core.CoreServiceManager +import com.v2ray.ang.ui.base.BaseComponentActivity class ScSwitchActivity : BaseComponentActivity() { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/TaskerActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/TaskerActivity.kt similarity index 98% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/TaskerActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/TaskerActivity.kt index 33a68b68..1aa66e58 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/TaskerActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/shortcut/TaskerActivity.kt @@ -1,9 +1,8 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.shortcut import android.content.Intent import android.os.Bundle import android.text.TextUtils -import androidx.activity.compose.setContent import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -36,6 +35,7 @@ import com.v2ray.ang.compose.AppTopBar import com.v2ray.ang.compose.SettingsSwitchItem import com.v2ray.ang.compose.verticalScrollbar import com.v2ray.ang.handler.MmkvManager +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.util.LogUtil class TaskerActivity : BaseComponentActivity() { diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubEditActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubEditActivity.kt similarity index 98% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubEditActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubEditActivity.kt index 9a20753c..c23de832 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubEditActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubEditActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.subscription import android.os.Bundle import android.text.TextUtils @@ -11,7 +11,6 @@ import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.ScaffoldDefaults import androidx.compose.runtime.Composable @@ -20,7 +19,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardType @@ -42,6 +40,7 @@ import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsChangeManager import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.handler.SubscriptionUpdater +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.util.Utils import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubSettingActivity.kt similarity index 98% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubSettingActivity.kt index d99ec386..209308cf 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/SubSettingActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubSettingActivity.kt @@ -1,6 +1,7 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.subscription import android.content.Intent +import android.graphics.Bitmap import android.os.Bundle import androidx.activity.viewModels import androidx.compose.foundation.layout.Column @@ -10,7 +11,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.rememberLazyListState @@ -52,9 +52,9 @@ import com.v2ray.ang.compose.verticalScrollbar import com.v2ray.ang.extension.toast import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.MmkvManager.rememberMmkvBool +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.util.QRCodeDecoder import com.v2ray.ang.util.Utils -import com.v2ray.ang.viewmodel.SubscriptionsViewModel import sh.calvin.reorderable.ReorderableItem import sh.calvin.reorderable.rememberReorderableLazyListState @@ -107,7 +107,7 @@ fun SubSettingScreen( onSubUpdate: () -> Unit, onEditSub: (String) -> Unit, onRemoveSub: (String) -> Unit, - onShareQRCode: (String) -> android.graphics.Bitmap?, + onShareQRCode: (String) -> Bitmap?, onShareClipboard: (String) -> Unit, shareSubMethodEntries: List ) { @@ -117,7 +117,7 @@ fun SubSettingScreen( val confirmRemove = MmkvManager.decodeSettingsBool(AppConfig.PREF_CONFIRM_REMOVE, false) var shareTarget by remember { mutableStateOf?>(null) } - var showQRCodeBitmap by remember { mutableStateOf(null) } + var showQRCodeBitmap by remember { mutableStateOf(null) } val lazyListState = rememberLazyListState() val reorderableState = rememberReorderableLazyListState(lazyListState) { from, to -> diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SubscriptionsViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubscriptionsViewModel.kt similarity index 96% rename from V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SubscriptionsViewModel.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubscriptionsViewModel.kt index a08d52ec..12ac949a 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/SubscriptionsViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/subscription/SubscriptionsViewModel.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.viewmodel +package com.v2ray.ang.ui.subscription import android.app.Application import com.v2ray.ang.R @@ -8,6 +8,7 @@ import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsChangeManager import com.v2ray.ang.handler.SettingsManager import com.v2ray.ang.handler.SubscriptionUpdater +import com.v2ray.ang.ui.base.BaseViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow @@ -62,4 +63,4 @@ class SubscriptionsViewModel(application: Application) : BaseViewModel(applicati toast(R.string.subscription_updater_job_tips) } -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt similarity index 99% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt index 493aa4bc..34c9749a 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.userasset import android.content.Intent import android.net.Uri @@ -48,7 +48,6 @@ import com.v2ray.ang.R import com.v2ray.ang.compose.AppDivider import com.v2ray.ang.compose.AppTopBar import com.v2ray.ang.compose.ConfirmDialog -import com.v2ray.ang.compose.SelectListDialog import com.v2ray.ang.compose.SettingsListItem import com.v2ray.ang.compose.verticalScrollbar import com.v2ray.ang.dto.entities.AssetUrlCache @@ -59,9 +58,9 @@ import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.extension.toTrafficString import com.v2ray.ang.handler.MmkvManager import com.v2ray.ang.handler.SettingsManager +import com.v2ray.ang.ui.base.HelperBaseComponentActivity import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils -import com.v2ray.ang.viewmodel.UserAssetViewModel import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.launch diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetUrlActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetUrlActivity.kt similarity index 98% rename from V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetUrlActivity.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetUrlActivity.kt index 78366c91..b81b0bc4 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/UserAssetUrlActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetUrlActivity.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.ui +package com.v2ray.ang.ui.userasset import android.os.Bundle import android.text.TextUtils @@ -7,10 +7,8 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding import androidx.compose.material3.Icon import androidx.compose.material3.IconButton -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.ScaffoldDefaults -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -29,6 +27,7 @@ import com.v2ray.ang.dto.entities.AssetUrlItem import com.v2ray.ang.extension.toast import com.v2ray.ang.extension.toastSuccess import com.v2ray.ang.handler.MmkvManager +import com.v2ray.ang.ui.base.BaseComponentActivity import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils import java.io.File diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/UserAssetViewModel.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetViewModel.kt similarity index 98% rename from V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/UserAssetViewModel.kt rename to V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetViewModel.kt index 0ab926fa..cf258a6b 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/viewmodel/UserAssetViewModel.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/userasset/UserAssetViewModel.kt @@ -1,4 +1,4 @@ -package com.v2ray.ang.viewmodel +package com.v2ray.ang.ui.userasset import android.app.Application import com.v2ray.ang.AppConfig @@ -7,6 +7,7 @@ import com.v2ray.ang.dto.entities.AssetUrlCache import com.v2ray.ang.dto.entities.AssetUrlItem import com.v2ray.ang.extension.concatUrl import com.v2ray.ang.handler.MmkvManager +import com.v2ray.ang.ui.base.BaseViewModel import com.v2ray.ang.util.HttpUtil import com.v2ray.ang.util.LogUtil import com.v2ray.ang.util.Utils @@ -126,4 +127,4 @@ class UserAssetViewModel(application: Application) : BaseViewModel(application) val failureCount: Int, val failedAssets: List ) -} +} \ No newline at end of file diff --git a/V2rayNG/app/src/main/res/xml/shortcuts.xml b/V2rayNG/app/src/main/res/xml/shortcuts.xml index 8d18a74c..4388c23d 100644 --- a/V2rayNG/app/src/main/res/xml/shortcuts.xml +++ b/V2rayNG/app/src/main/res/xml/shortcuts.xml @@ -10,7 +10,7 @@ @@ -24,7 +24,7 @@ @@ -38,7 +38,7 @@ @@ -52,7 +52,7 @@