diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarScreen.kt index 76bf55a1..c8009a24 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarScreen.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/radar/RadarScreen.kt @@ -34,10 +34,8 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.ElevatedCard import androidx.compose.material3.Icon 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.unit.dp import androidx.compose.ui.unit.sp -import androidx.compose.ui.graphics.Brush import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.viewmodel.compose.viewModel import androidx.navigation.NavGraphBuilder @@ -345,9 +342,8 @@ private fun TransmittersList( TransmitterItem( radio, (selectedUuid != null), - (radio.uuid == selectedUuid), - { onSelect(radio.uuid) } - ) + (radio.uuid == selectedUuid) + ) { onSelect(radio.uuid) } } } } @@ -359,7 +355,7 @@ private fun TransmitterItemPreview() { "", "Extremely powerful transmitter", true, 10000000000L, 10000000000L, null, 10000000000L, 10000000000L, "FSK AX.100 Mode 5", true, 0 ) - MainTheme { TransmitterItem(transmitter, true, true,{}) } + MainTheme { TransmitterItem(transmitter, isClickable = true, isSelected = true, onClick = {}) } } @Composable @@ -405,73 +401,42 @@ private fun TransmitterItem( isSelected: Boolean, onClick: () -> Unit ) { -// LaunchedEffect(radio) { -// BluetoothCIV.updateOnce(radio) -// } val title = if (radio.isInverted) "INVERTED: ${radio.info}" else radio.info val fullTitle = "$title - (${radio.downlinkMode ?: "--"}/${radio.uplinkMode ?: "--"})" Surface( color = MaterialTheme.colorScheme.background, modifier = Modifier .fillMaxWidth() - .then( - 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) -// } -// }) + .then(if (isClickable) Modifier.clickable { onClick() } else Modifier) ) { Surface(modifier = Modifier.padding(bottom = 2.dp)) { - Box { - Column( - verticalArrangement = Arrangement.spacedBy(6.dp), - modifier = Modifier - .background(MaterialTheme.colorScheme.surface) - .padding(horizontal = 8.dp, vertical = 6.dp) - ) { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(6.dp), + modifier = Modifier + .background(MaterialTheme.colorScheme.surface) + .padding(horizontal = 8.dp, vertical = 6.dp) + ) { + Box { Text( text = fullTitle, textAlign = TextAlign.Center, modifier = Modifier .fillMaxWidth() + .padding(horizontal = 6.dp) .infiniteMarquee() ) - FrequencyRow(radio = radio, isDownlink = true) - FrequencyRow(radio = radio, isDownlink = false) - } - 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) - ) { + if (isSelected) { Icon( painter = painterResource(id = R.drawable.ic_radios), contentDescription = null, tint = MaterialTheme.colorScheme.primary, - modifier = Modifier - .align(Alignment.TopStart) - .padding(start = 4.dp) - .size(24.dp) + modifier = Modifier.background(color = MaterialTheme.colorScheme.surface) ) } } + FrequencyRow(radio = radio, isDownlink = true) + FrequencyRow(radio = radio, isDownlink = false) } } } diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsDialog.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsDialog.kt index d0f9653f..823eac01 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsDialog.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsDialog.kt @@ -238,6 +238,7 @@ fun NetworkOutputDialog( Boolean, String, String, String ) -> Unit ) { + val padding = LocalSpacing.current.large val rotatorState = rememberSaveable { mutableStateOf(initialSettings.rotatorState) } val rotatorAddress = rememberSaveable { mutableStateOf(initialSettings.rotatorAddress) } val rotatorPort = rememberSaveable { mutableStateOf(initialSettings.rotatorPort) } @@ -264,7 +265,7 @@ fun NetworkOutputDialog( onCancel = onDismiss, onAccept = onAccept ) { - Column(modifier = Modifier.padding(8.dp)) { + Column(modifier = Modifier.padding(horizontal = padding)) { Row( horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, @@ -277,7 +278,7 @@ fun NetworkOutputDialog( ) } Row( - horizontalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(6.dp), modifier = Modifier.fillMaxWidth() ) { OutlinedTextField( @@ -297,7 +298,7 @@ fun NetworkOutputDialog( enabled = rotatorState.value ) } - Spacer(modifier = Modifier.height(8.dp)) + Spacer(modifier = Modifier.height(6.dp)) OutlinedTextField( value = rotatorFormat.value, onValueChange = { rotatorFormat.value = it }, @@ -306,7 +307,7 @@ fun NetworkOutputDialog( modifier = Modifier.fillMaxWidth(), enabled = rotatorState.value ) - Spacer(modifier = Modifier.height(12.dp)) + Spacer(modifier = Modifier.height(6.dp)) Row( horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, @@ -319,7 +320,7 @@ fun NetworkOutputDialog( ) } Row( - horizontalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(6.dp), modifier = Modifier.fillMaxWidth() ) { OutlinedTextField( @@ -339,7 +340,7 @@ fun NetworkOutputDialog( enabled = frequencyState.value ) } - Spacer(modifier = Modifier.height(8.dp)) + Spacer(modifier = Modifier.height(6.dp)) OutlinedTextField( value = frequencyFormat.value, onValueChange = { frequencyFormat.value = it }, @@ -389,6 +390,7 @@ fun BluetoothOutputDialog( Boolean, String, String ) -> Unit ) { + val padding = LocalSpacing.current.large val rotatorState = rememberSaveable { mutableStateOf(initialSettings.bluetoothRotatorState) } val rotatorAddress = rememberSaveable { mutableStateOf(initialSettings.bluetoothRotatorAddress) } val rotatorFormat = rememberSaveable { mutableStateOf(initialSettings.bluetoothRotatorFormat) } @@ -411,7 +413,7 @@ fun BluetoothOutputDialog( onCancel = onDismiss, onAccept = onAccept ) { - Column(modifier = Modifier.padding(8.dp)) { + Column(modifier = Modifier.padding(horizontal = padding)) { Row( horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, @@ -424,7 +426,7 @@ fun BluetoothOutputDialog( ) } Row( - horizontalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(6.dp), modifier = Modifier.fillMaxWidth() ) { OutlinedTextField( @@ -444,7 +446,7 @@ fun BluetoothOutputDialog( enabled = rotatorState.value ) } - Spacer(modifier = Modifier.height(12.dp)) + Spacer(modifier = Modifier.height(6.dp)) Row( horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, @@ -457,7 +459,7 @@ fun BluetoothOutputDialog( ) } Row( - horizontalArrangement = Arrangement.spacedBy(8.dp), + horizontalArrangement = Arrangement.spacedBy(6.dp), modifier = Modifier.fillMaxWidth() ) { OutlinedTextField( diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsScreen.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsScreen.kt index 5dd21fb0..6cf68f4e 100644 --- a/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsScreen.kt +++ b/app/src/main/java/com/rtbishop/look4sat/presentation/settings/SettingsScreen.kt @@ -32,6 +32,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.GridItemSpan import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.material3.ElevatedCard import androidx.compose.material3.Icon @@ -299,7 +300,7 @@ private fun SettingsScreen(uiState: SettingsState) { LocationCard(posSettings, setGpsPos, showPosDialog, showLocDialog, dismissPos, uiState.sendSystemAction) } 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 { CardCredits() } } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c9409e3b..f6354224 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,6 +1,6 @@ [versions] android-gradle-plugin = "9.0.1" -google-ksp = "2.3.2" +google-ksp = "2.3.5" kotlin = "2.3.10" androidx-core-ktx = "1.17.0"