Skip to content

Commit 3991fd9

Browse files
Add Anland toggle in installation flow (#246)
Introduce `enableAnland` support across the install flow. Adds state and default in ContainerInstallationViewModel, threads the flag through DroidspacesNavigation, exposes a toggle in ContainerConfigScreen (with icon/strings), and shows the selection in InstallationSummaryScreen (and in the 'no options' emptiness check).
1 parent 3f8c7f7 commit 3991fd9

4 files changed

Lines changed: 25 additions & 4 deletions

File tree

Android/app/src/main/java/com/droidspaces/app/ui/navigation/DroidspacesNavigation.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,7 @@ fun DroidspacesNavigation(
346346
initialEnableGpuMode = viewModel.enableGpuMode,
347347
initialEnableTermuxX11 = viewModel.enableTermuxX11,
348348
initialTx11ExtraFlags = viewModel.tx11ExtraFlags,
349+
initialEnableAnland = viewModel.enableAnland,
349350
initialEnableVirgl = viewModel.enableVirgl,
350351
initialVirglExtraFlags = viewModel.virglExtraFlags,
351352
initialEnablePulseaudio = viewModel.enablePulseaudio,
@@ -369,8 +370,8 @@ fun DroidspacesNavigation(
369370
initialGatewayBridge = viewModel.gatewayBridge,
370371
containerName = viewModel.containerName,
371372
installedContainers = sharedContainerViewModel.containerList,
372-
onNext = { netMode, disableIPv6, enableAndroidStorage, enableHwAccess, enableGpuMode, enableTermuxX11, tx11ExtraFlags, enableVirgl, virglExtraFlags, enablePulseaudio, selinuxPermissive, allowUserns, volatileMode, bindMounts, dnsServers, runAtBoot, customInit, staticNatIp, forceCgroupv1, blockNestedNs, privileged, envFileContent, upstreamInterfaces, portForwards, gatewayContainer, gatewayNet, gatewayIface, gatewayBridge ->
373-
viewModel.setConfig(netMode, disableIPv6, enableAndroidStorage, enableHwAccess, enableGpuMode, enableTermuxX11, tx11ExtraFlags, enableVirgl, virglExtraFlags, enablePulseaudio, selinuxPermissive, allowUserns, volatileMode, bindMounts, dnsServers, runAtBoot, customInit, staticNatIp, envFileContent, upstreamInterfaces, portForwards, forceCgroupv1, blockNestedNs, privileged, gatewayContainer, gatewayNet, gatewayIface, gatewayBridge)
373+
onNext = { netMode, disableIPv6, enableAndroidStorage, enableHwAccess, enableGpuMode, enableTermuxX11, tx11ExtraFlags, enableAnland, enableVirgl, virglExtraFlags, enablePulseaudio, selinuxPermissive, allowUserns, volatileMode, bindMounts, dnsServers, runAtBoot, customInit, staticNatIp, forceCgroupv1, blockNestedNs, privileged, envFileContent, upstreamInterfaces, portForwards, gatewayContainer, gatewayNet, gatewayIface, gatewayBridge ->
374+
viewModel.setConfig(netMode, disableIPv6, enableAndroidStorage, enableHwAccess, enableGpuMode, enableTermuxX11, tx11ExtraFlags, enableAnland, enableVirgl, virglExtraFlags, enablePulseaudio, selinuxPermissive, allowUserns, volatileMode, bindMounts, dnsServers, runAtBoot, customInit, staticNatIp, envFileContent, upstreamInterfaces, portForwards, forceCgroupv1, blockNestedNs, privileged, gatewayContainer, gatewayNet, gatewayIface, gatewayBridge)
374375
navController.navigate(Screen.SparseImageConfig.route)
375376
},
376377
onBack = {

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ fun ContainerConfigScreen(
6262
initialEnableGpuMode: Boolean = false,
6363
initialEnableTermuxX11: Boolean = false,
6464
initialTx11ExtraFlags: String = "",
65+
initialEnableAnland: Boolean = false,
6566
initialEnableVirgl: Boolean = false,
6667
initialVirglExtraFlags: String = "",
6768
initialEnablePulseaudio: Boolean = false,
@@ -93,6 +94,7 @@ fun ContainerConfigScreen(
9394
enableGpuMode: Boolean,
9495
enableTermuxX11: Boolean,
9596
tx11ExtraFlags: String,
97+
enableAnland: Boolean,
9698
enableVirgl: Boolean,
9799
virglExtraFlags: String,
98100
enablePulseaudio: Boolean,
@@ -124,6 +126,7 @@ fun ContainerConfigScreen(
124126
var enableGpuMode by remember { mutableStateOf(initialEnableGpuMode) }
125127
var enableTermuxX11 by remember { mutableStateOf(initialEnableTermuxX11) }
126128
var tx11ExtraFlags by remember { mutableStateOf(initialTx11ExtraFlags) }
129+
var enableAnland by remember { mutableStateOf(initialEnableAnland) }
127130
var enableVirgl by remember { mutableStateOf(initialEnableVirgl) }
128131
var virglExtraFlags by remember { mutableStateOf(initialVirglExtraFlags) }
129132
var enablePulseaudio by remember { mutableStateOf(initialEnablePulseaudio) }
@@ -332,7 +335,7 @@ fun ContainerConfigScreen(
332335
.clickable(
333336
enabled = canProceed,
334337
onClick = {
335-
onNext(netMode, disableIPv6, enableAndroidStorage, enableHwAccess, enableGpuMode, enableTermuxX11, tx11ExtraFlags, enableVirgl, virglExtraFlags, enablePulseaudio, selinuxPermissive, allowUserns, volatileMode, bindMounts, dnsServers, runAtBoot, customInit, staticNatIp, forceCgroupv1, blockNestedNs, privileged, if (envFileContent.isBlank()) null else envFileContent, upstreamInterfaces, portForwards, gatewayContainer, gatewayNet, gatewayIface, gatewayBridge)
338+
onNext(netMode, disableIPv6, enableAndroidStorage, enableHwAccess, enableGpuMode, enableTermuxX11, tx11ExtraFlags, enableAnland, enableVirgl, virglExtraFlags, enablePulseaudio, selinuxPermissive, allowUserns, volatileMode, bindMounts, dnsServers, runAtBoot, customInit, staticNatIp, forceCgroupv1, blockNestedNs, privileged, if (envFileContent.isBlank()) null else envFileContent, upstreamInterfaces, portForwards, gatewayContainer, gatewayNet, gatewayIface, gatewayBridge)
336339
},
337340
indication = androidx.compose.material.ripple.rememberRipple(bounded = true),
338341
interactionSource = remember { androidx.compose.foundation.interaction.MutableInteractionSource() }
@@ -673,6 +676,15 @@ fun ContainerConfigScreen(
673676
enabled = true
674677
)
675678

679+
ToggleCard(
680+
icon = Icons.Default.DesktopWindows,
681+
title = context.getString(R.string.enable_anland),
682+
description = context.getString(R.string.enable_anland_description),
683+
checked = enableAnland,
684+
onCheckedChange = { enableAnland = it },
685+
enabled = true
686+
)
687+
676688
ToggleCard(
677689
icon = Icons.Default.Layers,
678690
title = context.getString(R.string.enable_virgl),

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ fun InstallationSummaryScreen(
168168
if (config.enableHwAccess) SummaryItem(stringResource(R.string.hardware_access), stringResource(R.string.enabled_legend), Icons.Default.Devices)
169169
if (!config.enableHwAccess && config.enableGpuMode) SummaryItem(stringResource(R.string.gpu_access), stringResource(R.string.enabled_legend), Icons.Default.Memory)
170170
if (config.enableTermuxX11) SummaryItem(stringResource(R.string.termux_x11), stringResource(R.string.enabled_legend), painterResource(id = R.drawable.ic_x11))
171+
if (config.enableAnland) SummaryItem(stringResource(R.string.enable_anland), stringResource(R.string.enabled_legend), Icons.Default.DesktopWindows)
171172
if (config.enableVirgl) SummaryItem(stringResource(R.string.enable_virgl), stringResource(R.string.enabled_legend), Icons.Default.Layers)
172173
if (config.enablePulseaudio) SummaryItem(stringResource(R.string.enable_pulseaudio), stringResource(R.string.enabled_legend), Icons.AutoMirrored.Filled.VolumeUp)
173174
if (config.selinuxPermissive) SummaryItem(stringResource(R.string.selinux_permissive), stringResource(R.string.enabled_legend), Icons.Default.Security)
@@ -210,7 +211,7 @@ fun InstallationSummaryScreen(
210211
!config.enableHwAccess && !config.enableGpuMode && !config.selinuxPermissive &&
211212
!config.allowUserns && !config.volatileMode && config.bindMounts.isEmpty() &&
212213
!config.runAtBoot && !config.disableIPv6 &&
213-
!config.enableTermuxX11 && !config.enableVirgl && !config.enablePulseaudio &&
214+
!config.enableTermuxX11 && !config.enableAnland && !config.enableVirgl && !config.enablePulseaudio &&
214215
!config.forceCgroupv1 && !config.blockNestedNs &&
215216
config.upstreamInterfaces.isEmpty() && config.portForwards.isEmpty() &&
216217
config.envFileContent.isNullOrBlank()) {

Android/app/src/main/java/com/droidspaces/app/ui/viewmodel/ContainerInstallationViewModel.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ class ContainerInstallationViewModel : ViewModel() {
4545
var tx11ExtraFlags: String by mutableStateOf("")
4646
private set
4747

48+
var enableAnland: Boolean by mutableStateOf(false)
49+
private set
50+
4851
var enableVirgl: Boolean by mutableStateOf(false)
4952
private set
5053

@@ -136,6 +139,7 @@ class ContainerInstallationViewModel : ViewModel() {
136139
enableGpuMode: Boolean,
137140
enableTermuxX11: Boolean,
138141
tx11ExtraFlags: String,
142+
enableAnland: Boolean,
139143
enableVirgl: Boolean,
140144
virglExtraFlags: String,
141145
enablePulseaudio: Boolean,
@@ -165,6 +169,7 @@ class ContainerInstallationViewModel : ViewModel() {
165169
this.enableGpuMode = enableGpuMode
166170
this.enableTermuxX11 = enableTermuxX11
167171
this.tx11ExtraFlags = tx11ExtraFlags
172+
this.enableAnland = enableAnland
168173
this.enableVirgl = enableVirgl
169174
this.virglExtraFlags = virglExtraFlags
170175
this.enablePulseaudio = enablePulseaudio
@@ -207,6 +212,7 @@ class ContainerInstallationViewModel : ViewModel() {
207212
enableGpuMode = enableGpuMode,
208213
enableTermuxX11 = enableTermuxX11,
209214
tx11ExtraFlags = tx11ExtraFlags,
215+
enableAnland = enableAnland,
210216
enableVirgl = enableVirgl,
211217
virglExtraFlags = virglExtraFlags,
212218
enablePulseaudio = enablePulseaudio,
@@ -245,6 +251,7 @@ class ContainerInstallationViewModel : ViewModel() {
245251
enableGpuMode = false
246252
enableTermuxX11 = false
247253
tx11ExtraFlags = ""
254+
enableAnland = false
248255
enableVirgl = false
249256
virglExtraFlags = ""
250257
enablePulseaudio = false

0 commit comments

Comments
 (0)