|
|
|
@ -3,14 +3,10 @@
|
|
|
|
|
|
|
|
|
|
package com.tailscale.ipn.ui.view
|
|
|
|
|
|
|
|
|
|
import androidx.compose.foundation.layout.Arrangement
|
|
|
|
|
import androidx.compose.foundation.layout.Column
|
|
|
|
|
import androidx.compose.foundation.layout.Row
|
|
|
|
|
import androidx.compose.foundation.layout.fillMaxWidth
|
|
|
|
|
import androidx.compose.foundation.layout.padding
|
|
|
|
|
import androidx.compose.foundation.lazy.LazyColumn
|
|
|
|
|
import androidx.compose.foundation.lazy.items
|
|
|
|
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
|
|
|
|
import androidx.compose.material3.ListItem
|
|
|
|
|
import androidx.compose.material3.MaterialTheme
|
|
|
|
|
import androidx.compose.material3.Scaffold
|
|
|
|
|
import androidx.compose.material3.Text
|
|
|
|
@ -26,7 +22,7 @@ import com.tailscale.ipn.mdm.BooleanSetting
|
|
|
|
|
import com.tailscale.ipn.mdm.ShowHideSetting
|
|
|
|
|
import com.tailscale.ipn.mdm.StringArraySetting
|
|
|
|
|
import com.tailscale.ipn.mdm.StringSetting
|
|
|
|
|
import com.tailscale.ipn.ui.util.defaultPaddingModifier
|
|
|
|
|
import com.tailscale.ipn.ui.util.itemsWithDividers
|
|
|
|
|
import com.tailscale.ipn.ui.viewModel.IpnViewModel
|
|
|
|
|
|
|
|
|
|
@OptIn(ExperimentalMaterial3Api::class)
|
|
|
|
@ -36,35 +32,37 @@ fun MDMSettingsDebugView(nav: BackNavigation, model: IpnViewModel = viewModel())
|
|
|
|
|
->
|
|
|
|
|
val mdmSettings = IpnViewModel.mdmSettings.collectAsState().value
|
|
|
|
|
LazyColumn(modifier = Modifier.padding(innerPadding)) {
|
|
|
|
|
items(enumValues<BooleanSetting>()) { booleanSetting ->
|
|
|
|
|
itemsWithDividers(enumValues<BooleanSetting>()) { booleanSetting ->
|
|
|
|
|
MDMSettingView(
|
|
|
|
|
title = booleanSetting.localizedTitle,
|
|
|
|
|
caption = booleanSetting.key,
|
|
|
|
|
valueDescription = mdmSettings.get(booleanSetting).toString())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
items(enumValues<StringSetting>()) { stringSetting ->
|
|
|
|
|
itemsWithDividers(enumValues<StringSetting>(), forceLeading = true) { stringSetting ->
|
|
|
|
|
MDMSettingView(
|
|
|
|
|
title = stringSetting.localizedTitle,
|
|
|
|
|
caption = stringSetting.key,
|
|
|
|
|
valueDescription = mdmSettings.get(stringSetting).toString())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
items(enumValues<ShowHideSetting>()) { showHideSetting ->
|
|
|
|
|
itemsWithDividers(enumValues<ShowHideSetting>(), forceLeading = true) { showHideSetting ->
|
|
|
|
|
MDMSettingView(
|
|
|
|
|
title = showHideSetting.localizedTitle,
|
|
|
|
|
caption = showHideSetting.key,
|
|
|
|
|
valueDescription = mdmSettings.get(showHideSetting).toString())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
items(enumValues<AlwaysNeverUserDecidesSetting>()) { anuSetting ->
|
|
|
|
|
itemsWithDividers(enumValues<AlwaysNeverUserDecidesSetting>(), forceLeading = true) {
|
|
|
|
|
anuSetting ->
|
|
|
|
|
MDMSettingView(
|
|
|
|
|
title = anuSetting.localizedTitle,
|
|
|
|
|
caption = anuSetting.key,
|
|
|
|
|
valueDescription = mdmSettings.get(anuSetting).toString())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
items(enumValues<StringArraySetting>()) { stringArraySetting ->
|
|
|
|
|
itemsWithDividers(enumValues<StringArraySetting>(), forceLeading = true) { stringArraySetting
|
|
|
|
|
->
|
|
|
|
|
MDMSettingView(
|
|
|
|
|
title = stringArraySetting.localizedTitle,
|
|
|
|
|
caption = stringArraySetting.key,
|
|
|
|
@ -76,23 +74,21 @@ fun MDMSettingsDebugView(nav: BackNavigation, model: IpnViewModel = viewModel())
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
|
|
|
fun MDMSettingView(title: String, caption: String, valueDescription: String) {
|
|
|
|
|
Row(
|
|
|
|
|
horizontalArrangement = Arrangement.SpaceBetween,
|
|
|
|
|
modifier = defaultPaddingModifier().fillMaxWidth()) {
|
|
|
|
|
Column {
|
|
|
|
|
Text(title, maxLines = 3)
|
|
|
|
|
Text(
|
|
|
|
|
caption,
|
|
|
|
|
fontSize = MaterialTheme.typography.labelSmall.fontSize,
|
|
|
|
|
color = MaterialTheme.colorScheme.tertiary,
|
|
|
|
|
fontFamily = FontFamily.Monospace)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ListItem(
|
|
|
|
|
headlineContent = { Text(title, maxLines = 3) },
|
|
|
|
|
supportingContent = {
|
|
|
|
|
Text(
|
|
|
|
|
caption,
|
|
|
|
|
fontSize = MaterialTheme.typography.labelSmall.fontSize,
|
|
|
|
|
color = MaterialTheme.colorScheme.tertiary,
|
|
|
|
|
fontFamily = FontFamily.Monospace)
|
|
|
|
|
},
|
|
|
|
|
trailingContent = {
|
|
|
|
|
Text(
|
|
|
|
|
valueDescription,
|
|
|
|
|
color = MaterialTheme.colorScheme.secondary,
|
|
|
|
|
fontFamily = FontFamily.Monospace,
|
|
|
|
|
maxLines = 1,
|
|
|
|
|
fontWeight = FontWeight.SemiBold)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|