diff --git a/app/src/main/java/chat/vojo/proxy/ui/ConnectionScreen.kt b/app/src/main/java/chat/vojo/proxy/ui/ConnectionScreen.kt index 32dc334..642806a 100644 --- a/app/src/main/java/chat/vojo/proxy/ui/ConnectionScreen.kt +++ b/app/src/main/java/chat/vojo/proxy/ui/ConnectionScreen.kt @@ -310,24 +310,36 @@ private fun ConnToggle( } /** - * Subtle line under the server card stating what the proxy actually carries — so the - * "Сайты" split is never invisible (an empty list is now a full tunnel; a non-empty list - * shows how much is proxied vs direct). + * Subtle line under the server card stating what the tunnel actually carries — across BOTH + * filters, so neither is invisible: the per-app scope ("N приложений", only when the Apps + * whitelist is active — otherwise it's all apps) and the destination split from "Сайты" + * (empty list = full tunnel; a non-empty list shows how much is proxied vs direct). */ @Composable private fun RoutingScopeLine(settings: AppSettings, modifier: Modifier = Modifier) { - val n = settings.routedSites.size - val text = when { - n == 0 -> stringResource(R.string.route_scope_all) + val sites = settings.routedSites.size + val dest = when { + sites == 0 -> stringResource(R.string.route_scope_all) settings.routingMode == RoutingMode.DIRECT_ALL -> - stringResource(R.string.route_scope_only, pluralStringResource(R.plurals.route_rules, n, n)) + stringResource(R.string.route_scope_only, pluralStringResource(R.plurals.route_rules, sites, sites)) else -> - stringResource(R.string.route_scope_except, pluralStringResource(R.plurals.route_rules, n, n)) + stringResource(R.string.route_scope_except, pluralStringResource(R.plurals.route_rules, sites, sites)) + } + // A non-empty per-app whitelist confines the whole tunnel to those apps, so "всё" is only + // ever device-wide when the list is empty — qualify it with the app count when it isn't. + val apps = settings.allowedApps.size + val text = if (apps > 0) { + pluralStringResource(R.plurals.route_apps, apps, apps) + " · " + dest + } else { + dest } Row(modifier, verticalAlignment = Alignment.CenterVertically) { Box(Modifier.size(5.dp).clip(CircleShape).background(Vojo.fleetSoft.copy(alpha = 0.55f))) Spacer(Modifier.width(8.dp)) - Text(text, color = Vojo.muted, fontSize = 12.5.sp, maxLines = 1, overflow = TextOverflow.Ellipsis) + Text( + text.replaceFirstChar { it.uppercase() }, + color = Vojo.muted, fontSize = 12.5.sp, maxLines = 1, overflow = TextOverflow.Ellipsis, + ) } } diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index b3859a1..979168a 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -47,10 +47,11 @@ Пик - - Весь трафик через прокси - Через прокси: %1$s - Через прокси, кроме %1$s + + всё через прокси + через прокси: %1$s + через прокси, кроме %1$s Добавить сервер @@ -193,6 +194,12 @@ %d правил %d правила + + %d приложение + %d приложения + %d приложений + %d приложения + %d домен %d домена diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 91f7166..7d5f849 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -54,10 +54,11 @@ Peak /s - - All traffic through the proxy - Through the proxy: %1$s - Through the proxy, except %1$s + + all through the proxy + through the proxy: %1$s + through the proxy, except %1$s Add server @@ -200,6 +201,11 @@ %d rule %d rules + + + %d app + %d apps + %d domain %d domains