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" applicationId = "de.timklge.karooreminder"
minSdk = 26 minSdk = 26
targetSdk = 34 targetSdk = 34
versionCode = 13 versionCode = 14
versionName = "1.1.4" versionName = "1.1.5"
} }
signingConfigs { signingConfigs {

View File

@ -3,9 +3,9 @@
"packageName": "de.timklge.karooreminder", "packageName": "de.timklge.karooreminder",
"iconUrl": "https://github.com/timklge/karoo-reminder/releases/latest/download/karoo-reminder.png", "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", "latestApkUrl": "https://github.com/timklge/karoo-reminder/releases/latest/download/app-release.apk",
"latestVersion": "1.1.4", "latestVersion": "1.1.5",
"latestVersionCode": 13, "latestVersionCode": 14,
"developer": "timklge", "developer": "timklge",
"description": "Shows in-ride alerts after a given time interval, distance or HR / power / speed / cadence out of range", "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 { companion object {
const val TAG = "karoo-reminder" const val TAG = "karoo-reminder"

View File

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

View File

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