From b7c69486bffe90011c9294580dda189eec3eb112 Mon Sep 17 00:00:00 2001 From: eliotcougar Date: Thu, 10 Sep 2026 06:33:58 +0300 Subject: [PATCH] Show per-app proxy help in a dialog (#6192) Replace the short-lived info toast with the existing titleless confirmation dialog and a single OK button so users can read the routing explanation at their own pace. Keep dialog visibility in saveable screen state and reuse the existing localized help and action strings. Extract only the help-dialog presentation from local/talkback-all-10; leave app-row semantics, switches, routing descriptions, and notification infrastructure in the accessibility branches. --- .../ang/ui/perappproxy/PerAppProxyActivity.kt | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyActivity.kt b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyActivity.kt index 46a734d1..77bcd409 100644 --- a/V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyActivity.kt +++ b/V2rayNG/app/src/main/java/com/v2ray/ang/ui/perappproxy/PerAppProxyActivity.kt @@ -41,13 +41,13 @@ import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.v2ray.ang.R 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.ui.compose.AppDivider import com.v2ray.ang.ui.compose.AppDropdownMenuItems import com.v2ray.ang.ui.compose.AppListItem import com.v2ray.ang.ui.compose.AppTopBar +import com.v2ray.ang.ui.compose.ConfirmDialog import com.v2ray.ang.ui.compose.ItemDivider import com.v2ray.ang.ui.compose.NavigationBarsBottomPadding import com.v2ray.ang.ui.compose.verticalScrollbar @@ -87,9 +87,6 @@ class PerAppProxyActivity : BaseComponentActivity() { onBackClick = { finish() }, onPerAppProxyChanged = { viewModel.setPerAppProxyEnabled(it) }, onBypassAppsChanged = { viewModel.setBypassAppsEnabled(it) }, - onInfoClick = { - toastInfo(R.string.summary_pref_per_app_proxy) - }, onToggleApp = { viewModel.toggle(it) }, onSearch = { viewModel.filterApps(it) }, onSelectAll = { viewModel.selectAll() }, @@ -118,7 +115,6 @@ fun PerAppProxyScreen( onBackClick: () -> Unit, onPerAppProxyChanged: (Boolean) -> Unit, onBypassAppsChanged: (Boolean) -> Unit, - onInfoClick: () -> Unit, onToggleApp: (String) -> Unit, onSearch: (String) -> Unit, onSelectAll: () -> Unit, @@ -130,6 +126,8 @@ fun PerAppProxyScreen( var showSearch by rememberSaveable { mutableStateOf(false) } var searchQuery by rememberSaveable { mutableStateOf("") } var showMenu by remember { mutableStateOf(false) } + var showInfoDialog by rememberSaveable { mutableStateOf(false) } + val onInfoClick = { showInfoDialog = true } val listState = rememberLazyListState() LaunchedEffect(Unit) { @@ -281,4 +279,13 @@ fun PerAppProxyScreen( } } } + + if (showInfoDialog) { + ConfirmDialog( + message = stringResource(R.string.summary_pref_per_app_proxy), + dismissText = null, + onConfirm = {}, + onDismiss = { showInfoDialog = false }, + ) + } }