Skip to content

Commit fd8b8fd

Browse files
committed
app(ui): refine installation summary and allow_user_ns visibility
- Refactor InstallationSummaryScreen to use string resources and show all enabled toggles. - Update allow_user_ns icon to Person and ensure visibility in ContainerCard. - Add missing string resources for installation summary and options. - Clean up unused string resources and hardcoded text. Signed-off-by: ravindu644 <droidcasts@protonmail.com>
1 parent 1a55925 commit fd8b8fd

5 files changed

Lines changed: 39 additions & 24 deletions

File tree

Android/app/src/main/java/com/droidspaces/app/ui/component/ContainerCard.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@ fun ContainerCard(
222222
if (container.volatileMode) options.add(context.getString(R.string.volatile_option))
223223
if (container.forceCgroupv1) options.add(context.getString(R.string.cgroupv1_option))
224224
if (container.blockNestedNs) options.add(context.getString(R.string.deadlock_shield_option))
225+
if (container.allowUserNs) options.add(context.getString(R.string.user_ns_option))
225226

226227
if (options.isNotEmpty()) {
227228
Text(

Android/app/src/main/java/com/droidspaces/app/ui/screen/ContainerConfigScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ fun ContainerConfigScreen(
753753
)
754754

755755
ToggleCard(
756-
icon = Icons.Default.VerifiedUser,
756+
icon = Icons.Default.Person,
757757
title = context.getString(R.string.allow_user_ns),
758758
description = context.getString(R.string.allow_user_ns_description),
759759
checked = allowUserNs,

Android/app/src/main/java/com/droidspaces/app/ui/screen/EditContainerScreen.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1155,7 +1155,7 @@ fun EditContainerScreen(
11551155
)
11561156

11571157
ToggleCard(
1158-
icon = Icons.Default.VerifiedUser,
1158+
icon = Icons.Default.Person,
11591159
title = context.getString(R.string.allow_user_ns),
11601160
description = context.getString(R.string.allow_user_ns_description),
11611161
checked = allowUserNs,

Android/app/src/main/java/com/droidspaces/app/ui/screen/InstallationSummaryScreen.kt

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ import com.droidspaces.app.R
1717
import com.droidspaces.app.util.ContainerInfo
1818
import com.droidspaces.app.util.Constants
1919

20+
import androidx.compose.ui.res.stringResource
21+
2022
@OptIn(ExperimentalMaterial3Api::class)
2123
@Composable
2224
fun InstallationSummaryScreen(
@@ -28,10 +30,10 @@ fun InstallationSummaryScreen(
2830
Scaffold(
2931
topBar = {
3032
TopAppBar(
31-
title = { Text("Installation Summary") },
33+
title = { Text(stringResource(R.string.installation_setup_summary)) },
3234
navigationIcon = {
3335
IconButton(onClick = onBack) {
34-
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Back")
36+
Icon(Icons.AutoMirrored.Filled.ArrowBack, contentDescription = stringResource(R.string.back))
3537
}
3638
}
3739
)
@@ -54,7 +56,7 @@ fun InstallationSummaryScreen(
5456
) {
5557
Icon(Icons.Default.InstallMobile, contentDescription = null)
5658
Spacer(modifier = Modifier.width(8.dp))
57-
Text("Install Container", style = MaterialTheme.typography.labelLarge)
59+
Text(stringResource(R.string.install_container), style = MaterialTheme.typography.labelLarge)
5860
}
5961
}
6062
}
@@ -68,7 +70,7 @@ fun InstallationSummaryScreen(
6870
verticalArrangement = Arrangement.spacedBy(16.dp)
6971
) {
7072
Text(
71-
text = "Review Configuration",
73+
text = stringResource(R.string.review_configuration),
7274
style = MaterialTheme.typography.headlineSmall,
7375
fontWeight = FontWeight.Bold
7476
)
@@ -85,31 +87,34 @@ fun InstallationSummaryScreen(
8587
.padding(20.dp),
8688
verticalArrangement = Arrangement.spacedBy(8.dp)
8789
) {
88-
SummaryItem("Tarball", tarballName, Icons.Default.Archive)
89-
SummaryItem("Container Name", config.name, Icons.Default.Storage)
90-
SummaryItem("Hostname", config.hostname, Icons.Default.Computer)
90+
SummaryItem(stringResource(R.string.tarball_label), tarballName, Icons.Default.Archive)
91+
SummaryItem(stringResource(R.string.container_singular), config.name, Icons.Default.Storage)
92+
SummaryItem(stringResource(R.string.hostname), config.hostname, Icons.Default.Computer)
9193
if (config.useSparseImage && config.sparseImageSizeGB != null) {
92-
SummaryItem("Storage Type", "Sparse Image (${config.sparseImageSizeGB}GB)", Icons.Default.Storage)
94+
SummaryItem(stringResource(R.string.storage_configuration), "${stringResource(R.string.sparse_image_configuration)} (${config.sparseImageSizeGB}GB)", Icons.Default.Storage)
9395
} else {
94-
SummaryItem("Storage Type", "Directory", Icons.Default.Folder)
96+
SummaryItem(stringResource(R.string.storage_configuration), stringResource(R.string.directory_label), Icons.Default.Folder)
9597
}
96-
SummaryItem("Installation Path", "${Constants.CONTAINERS_BASE_PATH}/${com.droidspaces.app.util.ContainerManager.sanitizeContainerName(config.name)}", Icons.Default.Folder)
98+
SummaryItem(stringResource(R.string.installation_path_label), "${Constants.CONTAINERS_BASE_PATH}/${com.droidspaces.app.util.ContainerManager.sanitizeContainerName(config.name)}", Icons.Default.Folder)
9799

98100
HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp))
99101

100102
Text(
101-
text = "Options",
103+
text = stringResource(R.string.container_options),
102104
style = MaterialTheme.typography.titleMedium,
103105
fontWeight = FontWeight.SemiBold
104106
)
105107

106-
if (config.disableIPv6) SummaryItem("IPv6", "Disabled", Icons.Default.NetworkCheck)
107-
if (config.enableAndroidStorage) SummaryItem("Android Storage", "Enabled", Icons.Default.Storage)
108-
if (config.enableHwAccess) SummaryItem("Hardware Access", "Enabled", Icons.Default.Devices)
109-
if (config.enableTermuxX11) SummaryItem("Termux X11", "Enabled", painterResource(id = R.drawable.ic_x11))
110-
if (config.selinuxPermissive) SummaryItem("SELinux", "Permissive", Icons.Default.Security)
111-
if (config.volatileMode) SummaryItem("Volatile Mode", "Enabled", Icons.Default.AutoDelete)
112-
if (config.runAtBoot) SummaryItem("Run at Boot", "Enabled", Icons.Default.PowerSettingsNew)
108+
if (config.disableIPv6) SummaryItem(stringResource(R.string.disable_ipv6), stringResource(R.string.enabled_legend), Icons.Default.NetworkCheck)
109+
if (config.enableAndroidStorage) SummaryItem(stringResource(R.string.storage_option), stringResource(R.string.enabled_legend), Icons.Default.Storage)
110+
if (config.enableHwAccess) SummaryItem(stringResource(R.string.hardware_access), stringResource(R.string.enabled_legend), Icons.Default.Devices)
111+
if (config.enableTermuxX11) SummaryItem(stringResource(R.string.x11_option), stringResource(R.string.enabled_legend), painterResource(id = R.drawable.ic_x11))
112+
if (config.selinuxPermissive) SummaryItem(stringResource(R.string.selinux_option), stringResource(R.string.enabled_legend), Icons.Default.Security)
113+
if (config.volatileMode) SummaryItem(stringResource(R.string.volatile_mode), stringResource(R.string.enabled_legend), Icons.Default.AutoDelete)
114+
if (config.runAtBoot) SummaryItem(stringResource(R.string.run_at_boot), stringResource(R.string.enabled_legend), Icons.Default.PowerSettingsNew)
115+
if (config.allowUserNs) SummaryItem(stringResource(R.string.allow_user_ns), stringResource(R.string.enabled_legend), Icons.Default.Person)
116+
if (config.forceCgroupv1) SummaryItem(stringResource(R.string.force_cgroupv1), stringResource(R.string.enabled_legend), Icons.Default.Layers)
117+
if (config.blockNestedNs) SummaryItem(stringResource(R.string.manual_deadlock_shield), stringResource(R.string.enabled_legend), Icons.Default.GppBad)
113118

114119
fun countEnvVars(content: String?): Int {
115120
if (content.isNullOrBlank()) return 0
@@ -120,21 +125,23 @@ fun InstallationSummaryScreen(
120125

121126
val envCount = countEnvVars(config.envFileContent)
122127
if (envCount > 0) {
123-
SummaryItem("Environment Variables", "$envCount configured", Icons.Default.Code)
128+
SummaryItem(stringResource(R.string.environment_variables), stringResource(R.string.environment_variables_configured, envCount), Icons.Default.Code)
124129
}
125130

126131
if (config.bindMounts.isNotEmpty()) {
127132
config.bindMounts.forEach { mount ->
128-
SummaryItem("Bind Mount", "${mount.src}${mount.dest}", Icons.Default.Link)
133+
SummaryItem(stringResource(R.string.bind_mounts), "${mount.src}${mount.dest}", Icons.Default.Link)
129134
}
130135
}
131136

132137
if (!config.enableAndroidStorage &&
133138
!config.enableHwAccess && !config.selinuxPermissive &&
134139
!config.volatileMode && config.bindMounts.isEmpty() &&
135-
!config.runAtBoot && config.envFileContent.isNullOrBlank()) {
140+
!config.runAtBoot && !config.disableIPv6 &&
141+
!config.allowUserNs && !config.forceCgroupv1 &&
142+
!config.blockNestedNs && config.envFileContent.isNullOrBlank()) {
136143
Text(
137-
text = "No additional options enabled",
144+
text = stringResource(R.string.no_options_enabled),
138145
style = MaterialTheme.typography.bodySmall,
139146
color = MaterialTheme.colorScheme.onSurfaceVariant.copy(alpha = 0.7f)
140147
)

Android/app/src/main/res/values/strings.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,13 @@
137137
<string name="volatile_option">Volatile</string>
138138
<string name="cgroupv1_option">Cgroup V1</string>
139139
<string name="deadlock_shield_option">Deadlock Shield</string>
140+
<string name="user_ns_option">User NS</string>
141+
<string name="installation_setup_summary">Installation Summary</string>
142+
<string name="review_configuration">Review Configuration</string>
143+
<string name="tarball_label">Tarball</string>
144+
<string name="directory_label">Directory</string>
145+
<string name="installation_path_label">Installation Path</string>
146+
<string name="no_options_enabled">No additional options enabled</string>
140147

141148
<!-- Container Details Screen -->
142149
<string name="container_info">Container Info</string>

0 commit comments

Comments
 (0)