Add touchable back button (#32)

This commit is contained in:
timklge 2025-03-04 23:55:07 +01:00 committed by GitHub
parent 04c6b341df
commit 0462a2bc28
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 88 additions and 62 deletions

View File

@ -15,8 +15,8 @@ android {
applicationId = "de.timklge.karooreminder"
minSdk = 26
targetSdk = 34
versionCode = 13
versionName = "1.1.4"
versionCode = 14
versionName = "1.1.5"
}
signingConfigs {

View File

@ -3,9 +3,9 @@
"packageName": "de.timklge.karooreminder",
"iconUrl": "https://github.com/timklge/karoo-reminder/releases/latest/download/karoo-reminder.png",
"latestApkUrl": "https://github.com/timklge/karoo-reminder/releases/latest/download/app-release.apk",
"latestVersion": "1.1.4",
"latestVersionCode": 13,
"latestVersion": "1.1.5",
"latestVersionCode": 14,
"developer": "timklge",
"description": "Shows in-ride alerts after a given time interval, distance or HR / power / speed / cadence out of range",
"releaseNotes": "Enlarge trigger select, increase tone frequency, optimize build"
"releaseNotes": "* Enlarge trigger select\n* Increase tone frequency\n* Optimize build\n* Add touchable back button"
}

View File

@ -88,7 +88,7 @@ fun Flow<Int>.allIntermediateInts(): Flow<Int> = flow {
}
}
class KarooReminderExtension : KarooExtension("karoo-reminder", "1.1.4") {
class KarooReminderExtension : KarooExtension("karoo-reminder", "1.1.5") {
companion object {
const val TAG = "karoo-reminder"

View File

@ -18,7 +18,9 @@ class MainActivity : ComponentActivity() {
setContent {
AppTheme {
ReminderAppNavHost()
ReminderAppNavHost() {
finish()
}
}
}
}

View File

@ -2,8 +2,10 @@ package de.timklge.karooreminder.screens
import android.content.Context
import android.util.Log
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
@ -11,6 +13,7 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.shape.CircleShape
@ -43,6 +46,7 @@ import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.shadow
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import androidx.core.content.ContextCompat
import androidx.datastore.preferences.core.edit
@ -76,7 +80,7 @@ suspend fun saveReminders(context: Context, reminders: MutableList<Reminder>) {
}
@Composable
fun ReminderAppNavHost(modifier: Modifier = Modifier, navController: NavHostController = rememberNavController()){
fun ReminderAppNavHost(modifier: Modifier = Modifier, navController: NavHostController = rememberNavController(), onFinish: () -> Unit){
val scope = rememberCoroutineScope()
val reminders = remember {
mutableStateListOf<Reminder>()
@ -145,14 +149,14 @@ fun ReminderAppNavHost(modifier: Modifier = Modifier, navController: NavHostCont
}, { navController.popBackStack() })
}
composable(route = "reminders") {
MainScreen(reminders, { reminder -> navController.navigate(route = "reminder/${reminder.id}") }, { navController.navigate(route = "create") })
MainScreen(reminders, { reminder -> navController.navigate(route = "reminder/${reminder.id}") }, { navController.navigate(route = "create") }, onFinish)
}
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun MainScreen(reminders: MutableList<Reminder>, onNavigateToReminder: (r: Reminder) -> Unit, onNavigateToCreateReminder: () -> Unit) {
fun MainScreen(reminders: MutableList<Reminder>, onNavigateToReminder: (r: Reminder) -> Unit, onNavigateToCreateReminder: () -> Unit, onFinish: () -> Unit) {
var karooConnected by remember { mutableStateOf(false) }
val ctx = LocalContext.current
val karooSystem = remember { KarooSystemService(ctx) }
@ -167,15 +171,8 @@ fun MainScreen(reminders: MutableList<Reminder>, onNavigateToReminder: (r: Remin
Scaffold(
topBar = { TopAppBar(title = {Text("Reminder")}) },
floatingActionButtonPosition = FabPosition.End,
floatingActionButton = {
FloatingActionButton(onClick = {
onNavigateToCreateReminder()
}) {
Icon(Icons.Rounded.Add, "Add")
}
},
content = {
Box(Modifier.fillMaxSize()){
Column(
Modifier
.padding(it)
@ -211,6 +208,8 @@ fun MainScreen(reminders: MutableList<Reminder>, onNavigateToReminder: (r: Remin
}
}
Spacer(modifier = Modifier.padding(30.dp))
LaunchedEffect(Unit) {
karooSystem.connect { connected ->
karooConnected = connected
@ -225,6 +224,31 @@ fun MainScreen(reminders: MutableList<Reminder>, onNavigateToReminder: (r: Remin
}
}
}
Image(
painter = painterResource(id = R.drawable.back),
contentDescription = "Back",
modifier = Modifier
.align(Alignment.BottomStart)
.padding(bottom = 10.dp)
.size(54.dp)
.clickable {
onFinish()
}
)
Image(
painter = painterResource(id = R.drawable.add),
contentDescription = "Add",
modifier = Modifier
.align(Alignment.BottomEnd)
.padding(bottom = 10.dp)
.size(54.dp)
.clickable {
onNavigateToCreateReminder()
}
)
}
}
)
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB