mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Added a few visual fixes to extended data output feature
This commit is contained in:
1 parent
a545863473
commit
e717d75324
4 files changed
+25
-57
No files matched your search
@@ -34,10 +34,8 @@ import androidx.compose.foundation.layout.fillMaxSize
|
|||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.size
|
import androidx.compose.foundation.layout.size
|
||||||
import androidx.compose.foundation.layout.width
|
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
|
||||||
import androidx.compose.material3.ElevatedCard
|
import androidx.compose.material3.ElevatedCard
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
@@ -58,7 +56,6 @@ import androidx.compose.ui.text.style.TextAlign
|
|||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import androidx.compose.ui.graphics.Brush
|
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import androidx.navigation.NavGraphBuilder
|
import androidx.navigation.NavGraphBuilder
|
||||||
@@ -345,9 +342,8 @@ private fun TransmittersList(
|
|||||||
TransmitterItem(
|
TransmitterItem(
|
||||||
radio,
|
radio,
|
||||||
(selectedUuid != null),
|
(selectedUuid != null),
|
||||||
(radio.uuid == selectedUuid),
|
(radio.uuid == selectedUuid)
|
||||||
{ onSelect(radio.uuid) }
|
) { onSelect(radio.uuid) }
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -359,7 +355,7 @@ private fun TransmitterItemPreview() {
|
|||||||
"", "Extremely powerful transmitter", true, 10000000000L, 10000000000L,
|
"", "Extremely powerful transmitter", true, 10000000000L, 10000000000L,
|
||||||
null, 10000000000L, 10000000000L, "FSK AX.100 Mode 5", true, 0
|
null, 10000000000L, 10000000000L, "FSK AX.100 Mode 5", true, 0
|
||||||
)
|
)
|
||||||
MainTheme { TransmitterItem(transmitter, true, true,{}) }
|
MainTheme { TransmitterItem(transmitter, isClickable = true, isSelected = true, onClick = {}) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
@@ -405,73 +401,42 @@ private fun TransmitterItem(
|
|||||||
isSelected: Boolean,
|
isSelected: Boolean,
|
||||||
onClick: () -> Unit
|
onClick: () -> Unit
|
||||||
) {
|
) {
|
||||||
// LaunchedEffect(radio) {
|
|
||||||
// BluetoothCIV.updateOnce(radio)
|
|
||||||
// }
|
|
||||||
val title = if (radio.isInverted) "INVERTED: ${radio.info}" else radio.info
|
val title = if (radio.isInverted) "INVERTED: ${radio.info}" else radio.info
|
||||||
val fullTitle = "$title - (${radio.downlinkMode ?: "--"}/${radio.uplinkMode ?: "--"})"
|
val fullTitle = "$title - (${radio.downlinkMode ?: "--"}/${radio.uplinkMode ?: "--"})"
|
||||||
Surface(
|
Surface(
|
||||||
color = MaterialTheme.colorScheme.background,
|
color = MaterialTheme.colorScheme.background,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.then(
|
.then(if (isClickable) Modifier.clickable { onClick() } else Modifier)
|
||||||
if (isClickable) Modifier.clickable { onClick() } else Modifier
|
|
||||||
)
|
|
||||||
// modifier = Modifier.clickable(onClick = {
|
|
||||||
// Log.d("BluetoothCivManager", radio.toString())
|
|
||||||
// if(radio.uuid == BluetoothCIV.selected) BluetoothCIV.selected = "NONE" else
|
|
||||||
// {
|
|
||||||
// BluetoothCIV.connect(radio)
|
|
||||||
// BluetoothCIV.updateOnce(radio)
|
|
||||||
// }
|
|
||||||
// })
|
|
||||||
) {
|
) {
|
||||||
Surface(modifier = Modifier.padding(bottom = 2.dp)) {
|
Surface(modifier = Modifier.padding(bottom = 2.dp)) {
|
||||||
Box {
|
|
||||||
Column(
|
Column(
|
||||||
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
verticalArrangement = Arrangement.spacedBy(6.dp),
|
verticalArrangement = Arrangement.spacedBy(6.dp),
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.background(MaterialTheme.colorScheme.surface)
|
.background(MaterialTheme.colorScheme.surface)
|
||||||
.padding(horizontal = 8.dp, vertical = 6.dp)
|
.padding(horizontal = 8.dp, vertical = 6.dp)
|
||||||
) {
|
) {
|
||||||
|
Box {
|
||||||
Text(
|
Text(
|
||||||
text = fullTitle,
|
text = fullTitle,
|
||||||
textAlign = TextAlign.Center,
|
textAlign = TextAlign.Center,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
|
.padding(horizontal = 6.dp)
|
||||||
.infiniteMarquee()
|
.infiniteMarquee()
|
||||||
)
|
)
|
||||||
FrequencyRow(radio = radio, isDownlink = true)
|
|
||||||
FrequencyRow(radio = radio, isDownlink = false)
|
|
||||||
}
|
|
||||||
if (isSelected) {
|
if (isSelected) {
|
||||||
Box(
|
|
||||||
modifier = Modifier
|
|
||||||
.align(Alignment.TopStart)
|
|
||||||
.padding(start = 4.dp, top = 5.dp)
|
|
||||||
.background(
|
|
||||||
brush = Brush.radialGradient(
|
|
||||||
colors = listOf(
|
|
||||||
MaterialTheme.colorScheme.surface,
|
|
||||||
MaterialTheme.colorScheme.surface.copy(alpha = 0f)
|
|
||||||
),
|
|
||||||
radius = 80f
|
|
||||||
),
|
|
||||||
shape = CircleShape
|
|
||||||
)
|
|
||||||
.width(30.dp)
|
|
||||||
) {
|
|
||||||
Icon(
|
Icon(
|
||||||
painter = painterResource(id = R.drawable.ic_radios),
|
painter = painterResource(id = R.drawable.ic_radios),
|
||||||
contentDescription = null,
|
contentDescription = null,
|
||||||
tint = MaterialTheme.colorScheme.primary,
|
tint = MaterialTheme.colorScheme.primary,
|
||||||
modifier = Modifier
|
modifier = Modifier.background(color = MaterialTheme.colorScheme.surface)
|
||||||
.align(Alignment.TopStart)
|
|
||||||
.padding(start = 4.dp)
|
|
||||||
.size(24.dp)
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
FrequencyRow(radio = radio, isDownlink = true)
|
||||||
|
FrequencyRow(radio = radio, isDownlink = false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -238,6 +238,7 @@ fun NetworkOutputDialog(
|
|||||||
Boolean, String, String, String
|
Boolean, String, String, String
|
||||||
) -> Unit
|
) -> Unit
|
||||||
) {
|
) {
|
||||||
|
val padding = LocalSpacing.current.large
|
||||||
val rotatorState = rememberSaveable { mutableStateOf(initialSettings.rotatorState) }
|
val rotatorState = rememberSaveable { mutableStateOf(initialSettings.rotatorState) }
|
||||||
val rotatorAddress = rememberSaveable { mutableStateOf(initialSettings.rotatorAddress) }
|
val rotatorAddress = rememberSaveable { mutableStateOf(initialSettings.rotatorAddress) }
|
||||||
val rotatorPort = rememberSaveable { mutableStateOf(initialSettings.rotatorPort) }
|
val rotatorPort = rememberSaveable { mutableStateOf(initialSettings.rotatorPort) }
|
||||||
@@ -264,7 +265,7 @@ fun NetworkOutputDialog(
|
|||||||
onCancel = onDismiss,
|
onCancel = onDismiss,
|
||||||
onAccept = onAccept
|
onAccept = onAccept
|
||||||
) {
|
) {
|
||||||
Column(modifier = Modifier.padding(8.dp)) {
|
Column(modifier = Modifier.padding(horizontal = padding)) {
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
horizontalArrangement = Arrangement.SpaceBetween,
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
@@ -277,7 +278,7 @@ fun NetworkOutputDialog(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
horizontalArrangement = Arrangement.spacedBy(6.dp),
|
||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
) {
|
) {
|
||||||
OutlinedTextField(
|
OutlinedTextField(
|
||||||
@@ -297,7 +298,7 @@ fun NetworkOutputDialog(
|
|||||||
enabled = rotatorState.value
|
enabled = rotatorState.value
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
Spacer(modifier = Modifier.height(6.dp))
|
||||||
OutlinedTextField(
|
OutlinedTextField(
|
||||||
value = rotatorFormat.value,
|
value = rotatorFormat.value,
|
||||||
onValueChange = { rotatorFormat.value = it },
|
onValueChange = { rotatorFormat.value = it },
|
||||||
@@ -306,7 +307,7 @@ fun NetworkOutputDialog(
|
|||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
enabled = rotatorState.value
|
enabled = rotatorState.value
|
||||||
)
|
)
|
||||||
Spacer(modifier = Modifier.height(12.dp))
|
Spacer(modifier = Modifier.height(6.dp))
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
horizontalArrangement = Arrangement.SpaceBetween,
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
@@ -319,7 +320,7 @@ fun NetworkOutputDialog(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
horizontalArrangement = Arrangement.spacedBy(6.dp),
|
||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
) {
|
) {
|
||||||
OutlinedTextField(
|
OutlinedTextField(
|
||||||
@@ -339,7 +340,7 @@ fun NetworkOutputDialog(
|
|||||||
enabled = frequencyState.value
|
enabled = frequencyState.value
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Spacer(modifier = Modifier.height(8.dp))
|
Spacer(modifier = Modifier.height(6.dp))
|
||||||
OutlinedTextField(
|
OutlinedTextField(
|
||||||
value = frequencyFormat.value,
|
value = frequencyFormat.value,
|
||||||
onValueChange = { frequencyFormat.value = it },
|
onValueChange = { frequencyFormat.value = it },
|
||||||
@@ -389,6 +390,7 @@ fun BluetoothOutputDialog(
|
|||||||
Boolean, String, String
|
Boolean, String, String
|
||||||
) -> Unit
|
) -> Unit
|
||||||
) {
|
) {
|
||||||
|
val padding = LocalSpacing.current.large
|
||||||
val rotatorState = rememberSaveable { mutableStateOf(initialSettings.bluetoothRotatorState) }
|
val rotatorState = rememberSaveable { mutableStateOf(initialSettings.bluetoothRotatorState) }
|
||||||
val rotatorAddress = rememberSaveable { mutableStateOf(initialSettings.bluetoothRotatorAddress) }
|
val rotatorAddress = rememberSaveable { mutableStateOf(initialSettings.bluetoothRotatorAddress) }
|
||||||
val rotatorFormat = rememberSaveable { mutableStateOf(initialSettings.bluetoothRotatorFormat) }
|
val rotatorFormat = rememberSaveable { mutableStateOf(initialSettings.bluetoothRotatorFormat) }
|
||||||
@@ -411,7 +413,7 @@ fun BluetoothOutputDialog(
|
|||||||
onCancel = onDismiss,
|
onCancel = onDismiss,
|
||||||
onAccept = onAccept
|
onAccept = onAccept
|
||||||
) {
|
) {
|
||||||
Column(modifier = Modifier.padding(8.dp)) {
|
Column(modifier = Modifier.padding(horizontal = padding)) {
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
horizontalArrangement = Arrangement.SpaceBetween,
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
@@ -424,7 +426,7 @@ fun BluetoothOutputDialog(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
horizontalArrangement = Arrangement.spacedBy(6.dp),
|
||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
) {
|
) {
|
||||||
OutlinedTextField(
|
OutlinedTextField(
|
||||||
@@ -444,7 +446,7 @@ fun BluetoothOutputDialog(
|
|||||||
enabled = rotatorState.value
|
enabled = rotatorState.value
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
Spacer(modifier = Modifier.height(12.dp))
|
Spacer(modifier = Modifier.height(6.dp))
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
horizontalArrangement = Arrangement.SpaceBetween,
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
@@ -457,7 +459,7 @@ fun BluetoothOutputDialog(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
Row(
|
Row(
|
||||||
horizontalArrangement = Arrangement.spacedBy(8.dp),
|
horizontalArrangement = Arrangement.spacedBy(6.dp),
|
||||||
modifier = Modifier.fillMaxWidth()
|
modifier = Modifier.fillMaxWidth()
|
||||||
) {
|
) {
|
||||||
OutlinedTextField(
|
OutlinedTextField(
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ import androidx.compose.foundation.layout.height
|
|||||||
import androidx.compose.foundation.layout.padding
|
import androidx.compose.foundation.layout.padding
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.lazy.grid.GridCells
|
import androidx.compose.foundation.lazy.grid.GridCells
|
||||||
|
import androidx.compose.foundation.lazy.grid.GridItemSpan
|
||||||
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||||
import androidx.compose.material3.ElevatedCard
|
import androidx.compose.material3.ElevatedCard
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
@@ -299,7 +300,7 @@ private fun SettingsScreen(uiState: SettingsState) {
|
|||||||
LocationCard(posSettings, setGpsPos, showPosDialog, showLocDialog, dismissPos, uiState.sendSystemAction)
|
LocationCard(posSettings, setGpsPos, showPosDialog, showLocDialog, dismissPos, uiState.sendSystemAction)
|
||||||
}
|
}
|
||||||
item { DataCard(dataSettings, updateFromWeb, clearAllData, showDataSourcesDialog) }
|
item { DataCard(dataSettings, updateFromWeb, clearAllData, showDataSourcesDialog) }
|
||||||
item { OutputCard({ showNetworkDialog() }, { showBluetoothDialog() }) }
|
item(span = { GridItemSpan(maxLineSpan) }) { OutputCard({ showNetworkDialog() }, { showBluetoothDialog() }) }
|
||||||
item { OtherCard(otherSettings, toggleUtc, toggleUpdate, toggleSweep, toggleSensor) }
|
item { OtherCard(otherSettings, toggleUtc, toggleUpdate, toggleSweep, toggleSensor) }
|
||||||
item { CardCredits() }
|
item { CardCredits() }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[versions]
|
[versions]
|
||||||
android-gradle-plugin = "9.0.1"
|
android-gradle-plugin = "9.0.1"
|
||||||
google-ksp = "2.3.2"
|
google-ksp = "2.3.5"
|
||||||
kotlin = "2.3.10"
|
kotlin = "2.3.10"
|
||||||
|
|
||||||
androidx-core-ktx = "1.17.0"
|
androidx-core-ktx = "1.17.0"
|
||||||
|
|||||||
Reference in new issue
Block a user