feat: implement route type and icons
This commit is contained in:
parent
3c0eb906cc
commit
4cd160cc47
13 changed files with 200 additions and 3 deletions
|
|
@ -0,0 +1,56 @@
|
|||
package moe.lava.banksia.api.ptv
|
||||
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.draw.drawBehind
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.dp
|
||||
import moe.lava.banksia.resources.Res
|
||||
import moe.lava.banksia.resources.bus
|
||||
import moe.lava.banksia.resources.bus_background
|
||||
import moe.lava.banksia.resources.bus_icon
|
||||
import moe.lava.banksia.resources.train
|
||||
import moe.lava.banksia.resources.train_background
|
||||
import moe.lava.banksia.resources.train_icon
|
||||
import moe.lava.banksia.resources.tram
|
||||
import moe.lava.banksia.resources.tram_background
|
||||
import moe.lava.banksia.resources.tram_icon
|
||||
import org.jetbrains.compose.resources.DrawableResource
|
||||
import org.jetbrains.compose.resources.painterResource
|
||||
|
||||
data class RouteTypeProperties(
|
||||
val colour: Color,
|
||||
val drawable: DrawableResource,
|
||||
val background: DrawableResource,
|
||||
val icon: DrawableResource,
|
||||
)
|
||||
fun RouteType.getProperties(): RouteTypeProperties {
|
||||
val colour = when (this) {
|
||||
RouteType.TRAIN -> Color(0xFF0072CE)
|
||||
RouteType.TRAM -> Color(0xFF78BE20)
|
||||
RouteType.BUS, RouteType.NIGHT_BUS -> Color(0xFFFF8200)
|
||||
RouteType.VLINE -> Color(0xFF8F1A95)
|
||||
}
|
||||
val (drawable, background, icon) = when (this) {
|
||||
RouteType.TRAM -> Triple(
|
||||
Res.drawable.tram, Res.drawable.tram_background, Res.drawable.tram_icon)
|
||||
RouteType.TRAIN, RouteType.VLINE -> Triple(
|
||||
Res.drawable.train, Res.drawable.train_background, Res.drawable.train_icon)
|
||||
RouteType.BUS, RouteType.NIGHT_BUS -> Triple(
|
||||
Res.drawable.bus, Res.drawable.bus_background, Res.drawable.bus_icon)
|
||||
}
|
||||
return RouteTypeProperties(colour, drawable, background, icon)
|
||||
}
|
||||
@Composable
|
||||
fun RouteType.ComposableIcon() {
|
||||
val properties = this.getProperties()
|
||||
Image(
|
||||
painter = painterResource(properties.icon),
|
||||
contentDescription = null,
|
||||
modifier = Modifier
|
||||
.drawBehind {
|
||||
drawCircle(properties.colour, radius = (this.size.minDimension + 10.dp.toPx()) / 2f)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
|
@ -30,6 +30,7 @@ import androidx.compose.ui.Alignment
|
|||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.dp
|
||||
import moe.lava.banksia.api.ptv.ComposableIcon
|
||||
import moe.lava.banksia.api.ptv.PtvService
|
||||
import moe.lava.banksia.api.ptv.Route
|
||||
|
||||
|
|
@ -58,7 +59,7 @@ fun Searcher(
|
|||
val localRoutes = ptvService.routes()
|
||||
routes = localRoutes.sortedWith(
|
||||
compareBy(
|
||||
// { it.routeType.ordinal },
|
||||
{ it.gtfsSubType()?.ordinal },
|
||||
{ it.routeNumber.toIntOrNull() },
|
||||
{ it.routeName }
|
||||
)
|
||||
|
|
@ -104,7 +105,7 @@ fun Searcher(
|
|||
Text(route.routeName)
|
||||
}
|
||||
},
|
||||
// leadingContent = { route.route_type.ComposableIcon() },
|
||||
leadingContent = { route.routeType.ComposableIcon() },
|
||||
colors = ListItemDefaults.colors(containerColor = Color.Transparent),
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue