kopia lustrzana https://github.com/rt-bishop/Look4Sat
Added a few minor fixes to Dialogs and RadarScreen
rodzic
baea133579
commit
f831d9d59c
|
@ -1,5 +1,6 @@
|
||||||
package com.rtbishop.look4sat.presentation.common
|
package com.rtbishop.look4sat.presentation.common
|
||||||
|
|
||||||
|
import androidx.compose.foundation.MarqueeSpacing
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.basicMarquee
|
import androidx.compose.foundation.basicMarquee
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
|
@ -119,7 +120,7 @@ fun NextPassRow(pass: OrbitalPass, modifier: Modifier = Modifier) {
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.weight(1f)
|
.weight(1f)
|
||||||
.padding(end = 6.dp)
|
.padding(end = 6.dp)
|
||||||
.basicMarquee(),
|
.infiniteMarquee(),
|
||||||
fontWeight = FontWeight.Medium,
|
fontWeight = FontWeight.Medium,
|
||||||
maxLines = 1,
|
maxLines = 1,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
|
@ -287,6 +288,11 @@ fun isVerticalLayout(): Boolean {
|
||||||
return windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass.COMPACT
|
return windowSizeClass.windowWidthSizeClass == WindowWidthSizeClass.COMPACT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun Modifier.infiniteMarquee(): Modifier {
|
||||||
|
return basicMarquee(iterations = Int.MAX_VALUE, spacing = MarqueeSpacing(16.dp))
|
||||||
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun Modifier.layoutPadding(): Modifier {
|
fun Modifier.layoutPadding(): Modifier {
|
||||||
val statusBarMod = this.statusBarsPadding()
|
val statusBarMod = this.statusBarsPadding()
|
||||||
|
|
|
@ -29,7 +29,6 @@ import androidx.compose.foundation.lazy.grid.GridCells
|
||||||
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||||
import androidx.compose.foundation.lazy.grid.itemsIndexed
|
import androidx.compose.foundation.lazy.grid.itemsIndexed
|
||||||
import androidx.compose.material3.Checkbox
|
import androidx.compose.material3.Checkbox
|
||||||
import androidx.compose.material3.HorizontalDivider
|
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Slider
|
import androidx.compose.material3.Slider
|
||||||
|
@ -155,7 +154,6 @@ fun RadiosDialog(modes: List<String>, cancel: () -> Unit, accept: (List<String>)
|
||||||
horizontalArrangement = Arrangement.spacedBy(1.dp),
|
horizontalArrangement = Arrangement.spacedBy(1.dp),
|
||||||
verticalArrangement = Arrangement.spacedBy(1.dp)
|
verticalArrangement = Arrangement.spacedBy(1.dp)
|
||||||
) {
|
) {
|
||||||
item { HorizontalDivider(color = MaterialTheme.colorScheme.surface) }
|
|
||||||
itemsIndexed(allModes) { index, item ->
|
itemsIndexed(allModes) { index, item ->
|
||||||
Surface {
|
Surface {
|
||||||
Row(
|
Row(
|
||||||
|
@ -185,7 +183,6 @@ fun RadiosDialog(modes: List<String>, cancel: () -> Unit, accept: (List<String>)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
item { HorizontalDivider(color = MaterialTheme.colorScheme.surface) }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package com.rtbishop.look4sat.presentation.passes
|
package com.rtbishop.look4sat.presentation.passes
|
||||||
|
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.basicMarquee
|
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
|
@ -51,6 +50,7 @@ import com.rtbishop.look4sat.presentation.common.InfoDialog
|
||||||
import com.rtbishop.look4sat.presentation.common.NextPassRow
|
import com.rtbishop.look4sat.presentation.common.NextPassRow
|
||||||
import com.rtbishop.look4sat.presentation.common.TimerRow
|
import com.rtbishop.look4sat.presentation.common.TimerRow
|
||||||
import com.rtbishop.look4sat.presentation.common.TopBar
|
import com.rtbishop.look4sat.presentation.common.TopBar
|
||||||
|
import com.rtbishop.look4sat.presentation.common.infiniteMarquee
|
||||||
import com.rtbishop.look4sat.presentation.common.isVerticalLayout
|
import com.rtbishop.look4sat.presentation.common.isVerticalLayout
|
||||||
import com.rtbishop.look4sat.presentation.common.layoutPadding
|
import com.rtbishop.look4sat.presentation.common.layoutPadding
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
|
@ -203,7 +203,7 @@ private fun NearEarthPass(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.weight(1f)
|
.weight(1f)
|
||||||
.padding(end = 6.dp)
|
.padding(end = 6.dp)
|
||||||
.basicMarquee(),
|
.infiniteMarquee(),
|
||||||
fontWeight = FontWeight.Medium,
|
fontWeight = FontWeight.Medium,
|
||||||
maxLines = 1,
|
maxLines = 1,
|
||||||
overflow = TextOverflow.Ellipsis
|
overflow = TextOverflow.Ellipsis
|
||||||
|
|
|
@ -6,9 +6,7 @@ import androidx.compose.animation.core.animateFloat
|
||||||
import androidx.compose.animation.core.infiniteRepeatable
|
import androidx.compose.animation.core.infiniteRepeatable
|
||||||
import androidx.compose.animation.core.rememberInfiniteTransition
|
import androidx.compose.animation.core.rememberInfiniteTransition
|
||||||
import androidx.compose.animation.core.tween
|
import androidx.compose.animation.core.tween
|
||||||
import androidx.compose.foundation.MarqueeSpacing
|
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.basicMarquee
|
|
||||||
import androidx.compose.foundation.border
|
import androidx.compose.foundation.border
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
|
@ -16,7 +14,6 @@ import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.RowScope
|
import androidx.compose.foundation.layout.RowScope
|
||||||
import androidx.compose.foundation.layout.Spacer
|
import androidx.compose.foundation.layout.Spacer
|
||||||
import androidx.compose.foundation.layout.aspectRatio
|
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
|
@ -57,6 +54,7 @@ import com.rtbishop.look4sat.presentation.common.NextPassRow
|
||||||
import com.rtbishop.look4sat.presentation.common.TimerRow
|
import com.rtbishop.look4sat.presentation.common.TimerRow
|
||||||
import com.rtbishop.look4sat.presentation.common.TopBar
|
import com.rtbishop.look4sat.presentation.common.TopBar
|
||||||
import com.rtbishop.look4sat.presentation.common.getDefaultPass
|
import com.rtbishop.look4sat.presentation.common.getDefaultPass
|
||||||
|
import com.rtbishop.look4sat.presentation.common.infiniteMarquee
|
||||||
import com.rtbishop.look4sat.presentation.common.isVerticalLayout
|
import com.rtbishop.look4sat.presentation.common.isVerticalLayout
|
||||||
import com.rtbishop.look4sat.presentation.common.layoutPadding
|
import com.rtbishop.look4sat.presentation.common.layoutPadding
|
||||||
|
|
||||||
|
@ -100,98 +98,17 @@ private fun RadarScreen(uiState: RadarState, navigateUp: () -> Unit) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(isVerticalLayout()) {
|
if(isVerticalLayout()) {
|
||||||
Box(contentAlignment = Alignment.BottomCenter, modifier = Modifier.aspectRatio(1f)) {
|
ElevatedCard(modifier = Modifier.weight(1f)) {
|
||||||
uiState.orbitalPos?.let { position ->
|
Box(contentAlignment = Alignment.Center) {
|
||||||
ElevatedCard {
|
uiState.orbitalPos?.let { position ->
|
||||||
RadarViewCompose(
|
RadarViewCompose(
|
||||||
item = position,
|
item = position,
|
||||||
items = uiState.satTrack,
|
items = uiState.satTrack,
|
||||||
azimElev = uiState.orientationValues,
|
azimElev = uiState.orientationValues,
|
||||||
shouldShowSweep = uiState.shouldShowSweep,
|
shouldShowSweep = uiState.shouldShowSweep,
|
||||||
shouldUseCompass = uiState.shouldUseCompass
|
shouldUseCompass = uiState.shouldUseCompass,
|
||||||
|
modifier = Modifier.align(Alignment.Center)
|
||||||
)
|
)
|
||||||
}
|
|
||||||
Column(
|
|
||||||
verticalArrangement = Arrangement.SpaceBetween,
|
|
||||||
modifier = Modifier
|
|
||||||
.fillMaxSize()
|
|
||||||
.padding(horizontal = 6.dp, vertical = 4.dp)
|
|
||||||
) {
|
|
||||||
Row(
|
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
|
||||||
modifier = Modifier.fillMaxWidth()
|
|
||||||
) {
|
|
||||||
RadarTextTop(
|
|
||||||
position.azimuth,
|
|
||||||
stringResource(R.string.radar_az_text),
|
|
||||||
true
|
|
||||||
)
|
|
||||||
RadarTextTop(
|
|
||||||
position.elevation,
|
|
||||||
stringResource(R.string.radar_el_text),
|
|
||||||
false
|
|
||||||
)
|
|
||||||
}
|
|
||||||
Row(
|
|
||||||
horizontalArrangement = Arrangement.SpaceBetween,
|
|
||||||
modifier = Modifier.fillMaxWidth()
|
|
||||||
) {
|
|
||||||
RadarTextBottom(
|
|
||||||
position.altitude,
|
|
||||||
stringResource(R.string.radar_alt_text),
|
|
||||||
true
|
|
||||||
)
|
|
||||||
RadarTextBottom(
|
|
||||||
position.distance,
|
|
||||||
stringResource(R.string.radar_dist_text),
|
|
||||||
false
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ElevatedCard(modifier = Modifier.fillMaxSize()) {
|
|
||||||
if (uiState.transmitters.isEmpty()) {
|
|
||||||
Column(
|
|
||||||
modifier = Modifier.fillMaxSize(),
|
|
||||||
horizontalAlignment = Alignment.CenterHorizontally,
|
|
||||||
verticalArrangement = Arrangement.Center
|
|
||||||
) {
|
|
||||||
Icon(
|
|
||||||
painter = painterResource(R.drawable.ic_satellite),
|
|
||||||
contentDescription = null,
|
|
||||||
modifier = Modifier.size(64.dp)
|
|
||||||
)
|
|
||||||
Spacer(modifier = Modifier.height(16.dp))
|
|
||||||
Text(
|
|
||||||
text = "This satellite doesn't have any known transcievers...",
|
|
||||||
textAlign = TextAlign.Center,
|
|
||||||
fontSize = 18.sp,
|
|
||||||
modifier = Modifier.padding(16.dp)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
|
|
||||||
TransmittersList(transmitters = uiState.transmitters)
|
|
||||||
if (uiState.orbitalPos?.eclipsed == true) {
|
|
||||||
EclipsedIndicator()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
|
||||||
Box(contentAlignment = Alignment.BottomCenter, modifier = Modifier.weight(1f)) {
|
|
||||||
uiState.orbitalPos?.let { position ->
|
|
||||||
ElevatedCard {
|
|
||||||
RadarViewCompose(
|
|
||||||
item = position,
|
|
||||||
items = uiState.satTrack,
|
|
||||||
azimElev = uiState.orientationValues,
|
|
||||||
shouldShowSweep = uiState.shouldShowSweep,
|
|
||||||
shouldUseCompass = false
|
|
||||||
)
|
|
||||||
}
|
|
||||||
Column(
|
Column(
|
||||||
verticalArrangement = Arrangement.SpaceBetween,
|
verticalArrangement = Arrangement.SpaceBetween,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
|
@ -231,7 +148,90 @@ private fun RadarScreen(uiState: RadarState, navigateUp: () -> Unit) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ElevatedCard(modifier = Modifier.fillMaxSize().weight(1f)) {
|
}
|
||||||
|
ElevatedCard(modifier = Modifier.weight(1f)) {
|
||||||
|
if (uiState.transmitters.isEmpty()) {
|
||||||
|
Column(
|
||||||
|
modifier = Modifier.fillMaxSize(),
|
||||||
|
horizontalAlignment = Alignment.CenterHorizontally,
|
||||||
|
verticalArrangement = Arrangement.Center
|
||||||
|
) {
|
||||||
|
Icon(
|
||||||
|
painter = painterResource(R.drawable.ic_satellite),
|
||||||
|
contentDescription = null,
|
||||||
|
modifier = Modifier.size(64.dp)
|
||||||
|
)
|
||||||
|
Spacer(modifier = Modifier.height(16.dp))
|
||||||
|
Text(
|
||||||
|
text = "This satellite doesn't have any known transcievers...",
|
||||||
|
textAlign = TextAlign.Center,
|
||||||
|
fontSize = 18.sp,
|
||||||
|
modifier = Modifier.padding(16.dp)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
|
||||||
|
TransmittersList(transmitters = uiState.transmitters)
|
||||||
|
if (uiState.orbitalPos?.eclipsed == true) {
|
||||||
|
EclipsedIndicator()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Row(horizontalArrangement = Arrangement.spacedBy(6.dp)) {
|
||||||
|
ElevatedCard(modifier = Modifier.weight(1f)) {
|
||||||
|
Box(contentAlignment = Alignment.Center) {
|
||||||
|
uiState.orbitalPos?.let { position ->
|
||||||
|
RadarViewCompose(
|
||||||
|
item = position,
|
||||||
|
items = uiState.satTrack,
|
||||||
|
azimElev = uiState.orientationValues,
|
||||||
|
shouldShowSweep = uiState.shouldShowSweep,
|
||||||
|
shouldUseCompass = false,
|
||||||
|
modifier = Modifier.align(Alignment.Center)
|
||||||
|
)
|
||||||
|
Column(
|
||||||
|
verticalArrangement = Arrangement.SpaceBetween,
|
||||||
|
modifier = Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
.padding(horizontal = 6.dp, vertical = 4.dp)
|
||||||
|
) {
|
||||||
|
Row(
|
||||||
|
horizontalArrangement = Arrangement.SpaceBetween,
|
||||||
|
modifier = Modifier.fillMaxWidth()
|
||||||
|
) {
|
||||||
|
RadarTextTop(
|
||||||
|
position.azimuth,
|
||||||
|
stringResource(R.string.radar_az_text),
|
||||||
|
true
|
||||||
|
)
|
||||||
|
RadarTextTop(
|
||||||
|
position.elevation,
|
||||||
|
stringResource(R.string.radar_el_text),
|
||||||
|
false
|
||||||
|
)
|
||||||
|
}
|
||||||
|
Row(
|
||||||
|
horizontalArrangement = Arrangement.SpaceBetween,
|
||||||
|
modifier = Modifier.fillMaxWidth()
|
||||||
|
) {
|
||||||
|
RadarTextBottom(
|
||||||
|
position.altitude,
|
||||||
|
stringResource(R.string.radar_alt_text),
|
||||||
|
true
|
||||||
|
)
|
||||||
|
RadarTextBottom(
|
||||||
|
position.distance,
|
||||||
|
stringResource(R.string.radar_dist_text),
|
||||||
|
false
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ElevatedCard(modifier = Modifier.weight(1f)) {
|
||||||
if (uiState.transmitters.isEmpty()) {
|
if (uiState.transmitters.isEmpty()) {
|
||||||
Column(
|
Column(
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
|
@ -378,10 +378,7 @@ private fun TransmitterItem(radio: SatRadio) {
|
||||||
text = if (radio.isInverted) "INVERTED: ${radio.info} " else "${radio.info} ",
|
text = if (radio.isInverted) "INVERTED: ${radio.info} " else "${radio.info} ",
|
||||||
textAlign = TextAlign.Center,
|
textAlign = TextAlign.Center,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.basicMarquee(
|
.infiniteMarquee()
|
||||||
iterations = Int.MAX_VALUE,
|
|
||||||
spacing = MarqueeSpacing(16.dp)
|
|
||||||
)
|
|
||||||
.weight(0.7f)
|
.weight(0.7f)
|
||||||
)
|
)
|
||||||
Icon(
|
Icon(
|
||||||
|
|
|
@ -6,7 +6,7 @@ import androidx.compose.animation.core.infiniteRepeatable
|
||||||
import androidx.compose.animation.core.rememberInfiniteTransition
|
import androidx.compose.animation.core.rememberInfiniteTransition
|
||||||
import androidx.compose.animation.core.tween
|
import androidx.compose.animation.core.tween
|
||||||
import androidx.compose.foundation.Canvas
|
import androidx.compose.foundation.Canvas
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.aspectRatio
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.mutableFloatStateOf
|
import androidx.compose.runtime.mutableFloatStateOf
|
||||||
|
@ -46,7 +46,8 @@ fun RadarViewCompose(
|
||||||
items: List<OrbitalPos>,
|
items: List<OrbitalPos>,
|
||||||
azimElev: Pair<Float, Float>,
|
azimElev: Pair<Float, Float>,
|
||||||
shouldShowSweep: Boolean,
|
shouldShowSweep: Boolean,
|
||||||
shouldUseCompass: Boolean
|
shouldUseCompass: Boolean,
|
||||||
|
modifier: Modifier = Modifier
|
||||||
) {
|
) {
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val view = LocalView.current
|
val view = LocalView.current
|
||||||
|
@ -128,7 +129,7 @@ fun RadarViewCompose(
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
Canvas(modifier = Modifier.fillMaxSize()) {
|
Canvas(modifier = modifier.aspectRatio(1f)) {
|
||||||
val radius = (size.minDimension / 2f) * 0.95f
|
val radius = (size.minDimension / 2f) * 0.95f
|
||||||
if (!trackCreated.value) {
|
if (!trackCreated.value) {
|
||||||
trackPath.value = createTrackPath(items, radius)
|
trackPath.value = createTrackPath(items, radius)
|
||||||
|
|
|
@ -10,7 +10,6 @@ import androidx.compose.foundation.lazy.grid.GridCells
|
||||||
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||||
import androidx.compose.foundation.lazy.grid.itemsIndexed
|
import androidx.compose.foundation.lazy.grid.itemsIndexed
|
||||||
import androidx.compose.material3.Checkbox
|
import androidx.compose.material3.Checkbox
|
||||||
import androidx.compose.material3.HorizontalDivider
|
|
||||||
import androidx.compose.material3.MaterialTheme
|
import androidx.compose.material3.MaterialTheme
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
@ -50,7 +49,6 @@ fun MultiTypesDialog(
|
||||||
horizontalArrangement = Arrangement.spacedBy(1.dp),
|
horizontalArrangement = Arrangement.spacedBy(1.dp),
|
||||||
verticalArrangement = Arrangement.spacedBy(1.dp)
|
verticalArrangement = Arrangement.spacedBy(1.dp)
|
||||||
) {
|
) {
|
||||||
item { HorizontalDivider(color = MaterialTheme.colorScheme.surface) }
|
|
||||||
itemsIndexed(allTypes) { index, item ->
|
itemsIndexed(allTypes) { index, item ->
|
||||||
Row(
|
Row(
|
||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
|
@ -78,7 +76,6 @@ fun MultiTypesDialog(
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
item { HorizontalDivider(color = MaterialTheme.colorScheme.surface) }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package com.rtbishop.look4sat.presentation.satellites
|
package com.rtbishop.look4sat.presentation.satellites
|
||||||
|
|
||||||
import androidx.compose.foundation.MarqueeSpacing
|
|
||||||
import androidx.compose.foundation.background
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.basicMarquee
|
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Arrangement
|
import androidx.compose.foundation.layout.Arrangement
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
|
@ -51,6 +49,7 @@ import com.rtbishop.look4sat.presentation.common.CardLoadingIndicator
|
||||||
import com.rtbishop.look4sat.presentation.common.IconCard
|
import com.rtbishop.look4sat.presentation.common.IconCard
|
||||||
import com.rtbishop.look4sat.presentation.common.InfoDialog
|
import com.rtbishop.look4sat.presentation.common.InfoDialog
|
||||||
import com.rtbishop.look4sat.presentation.common.TopBar
|
import com.rtbishop.look4sat.presentation.common.TopBar
|
||||||
|
import com.rtbishop.look4sat.presentation.common.infiniteMarquee
|
||||||
import com.rtbishop.look4sat.presentation.common.isVerticalLayout
|
import com.rtbishop.look4sat.presentation.common.isVerticalLayout
|
||||||
import com.rtbishop.look4sat.presentation.common.layoutPadding
|
import com.rtbishop.look4sat.presentation.common.layoutPadding
|
||||||
|
|
||||||
|
@ -198,7 +197,8 @@ private fun TypeCard(types: List<String>, onClick: () -> Unit, modifier: Modifie
|
||||||
fontWeight = FontWeight.Medium,
|
fontWeight = FontWeight.Medium,
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.weight(1f)
|
.weight(1f)
|
||||||
.basicMarquee(iterations = Int.MAX_VALUE, spacing = MarqueeSpacing(16.dp))
|
.padding(end = 6.dp)
|
||||||
|
.infiniteMarquee()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ object Sources {
|
||||||
"All" to "https://celestrak.org/NORAD/elements/gp.php?GROUP=active&FORMAT=csv",
|
"All" to "https://celestrak.org/NORAD/elements/gp.php?GROUP=active&FORMAT=csv",
|
||||||
"Amsat" to "https://amsat.org/tle/current/nasabare.txt",
|
"Amsat" to "https://amsat.org/tle/current/nasabare.txt",
|
||||||
"Amateur" to "https://celestrak.org/NORAD/elements/gp.php?GROUP=amateur&FORMAT=csv",
|
"Amateur" to "https://celestrak.org/NORAD/elements/gp.php?GROUP=amateur&FORMAT=csv",
|
||||||
|
"Brightest" to "https://celestrak.org/NORAD/elements/gp.php?GROUP=visual&FORMAT=csv",
|
||||||
"Classified" to "https://www.mmccants.org/tles/classfd.zip",
|
"Classified" to "https://www.mmccants.org/tles/classfd.zip",
|
||||||
"Cubesat" to "https://celestrak.org/NORAD/elements/gp.php?GROUP=cubesat&FORMAT=csv",
|
"Cubesat" to "https://celestrak.org/NORAD/elements/gp.php?GROUP=cubesat&FORMAT=csv",
|
||||||
"Education" to "https://celestrak.org/NORAD/elements/gp.php?GROUP=education&FORMAT=csv",
|
"Education" to "https://celestrak.org/NORAD/elements/gp.php?GROUP=education&FORMAT=csv",
|
||||||
|
|
Ładowanie…
Reference in New Issue