Skip to content

Commit 458af99

Browse files
committed
Showing a dialog in the sample app
1 parent 575283e commit 458af99

File tree

4 files changed

+38
-10
lines changed

4 files changed

+38
-10
lines changed

app/src/main/java/no/nordicsemi/android/common/test/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ class MainActivity : NordicActivity() {
158158
topBar = {
159159
NordicAppBar(
160160
text = stringResource(id = R.string.title_main),
161-
showBackButton = listOf(Hello, Scanner).contains(currentDestination),
161+
showBackButton = listOf(Hello, HelloDialog, Scanner).contains(currentDestination),
162162
onNavigationButtonClick = { navigator.navigateUp() },
163163
onHamburgerButtonClick = {
164164
scope.launch { drawerState.open() }

app/src/main/java/no/nordicsemi/android/common/test/main/Main.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import no.nordicsemi.android.common.navigation.createSimpleDestination
77
import no.nordicsemi.android.common.navigation.defineDestination
88
import no.nordicsemi.android.common.test.main.page.*
99
import no.nordicsemi.android.common.test.scanner.ScannerDestination
10-
import no.nordicsemi.android.common.test.simple.HelloDestination
10+
import no.nordicsemi.android.common.test.simple.HelloDestinations
1111
import no.nordicsemi.android.common.theme.view.PagerView
1212
import no.nordicsemi.android.common.theme.view.PagerViewEntity
1313

@@ -21,7 +21,7 @@ private val MainDestination = defineDestination(Main) {
2121
MainScreen()
2222
}
2323

24-
val MainDestinations = MainDestination + ScannerDestination + HelloDestination
24+
val MainDestinations = MainDestination + ScannerDestination + HelloDestinations
2525

2626
@Composable
2727
private fun MainScreen() {

app/src/main/java/no/nordicsemi/android/common/test/simple/Hello.kt

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package no.nordicsemi.android.common.test.simple
22

3-
import androidx.compose.foundation.layout.*
3+
import androidx.compose.foundation.layout.Arrangement
4+
import androidx.compose.foundation.layout.Column
5+
import androidx.compose.foundation.layout.fillMaxSize
6+
import androidx.compose.foundation.layout.fillMaxWidth
7+
import androidx.compose.material3.AlertDialog
48
import androidx.compose.material3.Button
5-
import androidx.compose.material3.ExperimentalMaterial3Api
69
import androidx.compose.material3.Text
710
import androidx.compose.runtime.Composable
811
import androidx.compose.ui.Alignment
@@ -13,10 +16,10 @@ import androidx.compose.ui.unit.dp
1316
import androidx.hilt.navigation.compose.hiltViewModel
1417
import no.nordicsemi.android.common.navigation.createDestination
1518
import no.nordicsemi.android.common.navigation.defineDestination
19+
import no.nordicsemi.android.common.navigation.defineDialogDestination
1620
import no.nordicsemi.android.common.navigation.viewmodel.SimpleNavigationViewModel
1721
import no.nordicsemi.android.common.test.R
1822
import no.nordicsemi.android.common.theme.NordicTheme
19-
import no.nordicsemi.android.common.theme.view.NordicAppBar
2023

2124
/**
2225
* This is an example of a simple destination.
@@ -25,19 +28,43 @@ import no.nordicsemi.android.common.theme.view.NordicAppBar
2528
*/
2629
val Hello = createDestination<Int, Unit>("hello")
2730

28-
val HelloDestination = defineDestination(Hello) {
31+
private val HelloDestination = defineDestination(Hello) {
2932
val vm: SimpleNavigationViewModel = hiltViewModel()
3033
val param = vm.parameterOf(Hello)
3134

3235
HelloScreen(
3336
param = param,
37+
onShowDialog = { vm.navigateTo(HelloDialog, "Hello World!") },
3438
modifier = Modifier.fillMaxWidth(),
3539
)
3640
}
3741

42+
val HelloDialog = createDestination<String, Unit>("hello-dialog")
43+
44+
private val HelloDialogDestination = defineDialogDestination(HelloDialog) {
45+
val vm: SimpleNavigationViewModel = hiltViewModel()
46+
val param = vm.parameterOf(HelloDialog)
47+
48+
// This should not be AlertDialog, but AlertDialogContent. This is already wrapped in Dialog.
49+
// Unfortunately, the AlertDialogContent is internal.
50+
AlertDialog(
51+
onDismissRequest = { vm.navigateUp() },
52+
title = { Text(text = param) },
53+
text = { Text(text = "This is a dialog.") },
54+
confirmButton = {
55+
Button(onClick = { vm.navigateUp() }) {
56+
Text(text = "OK")
57+
}
58+
},
59+
)
60+
}
61+
62+
val HelloDestinations = HelloDestination + HelloDialogDestination
63+
3864
@Composable
3965
private fun HelloScreen(
4066
param: Int,
67+
onShowDialog: () -> Unit,
4168
modifier: Modifier = Modifier,
4269
) {
4370
Column(
@@ -52,7 +79,7 @@ private fun HelloScreen(
5279

5380
Text(text = stringResource(id = R.string.hello_param, param))
5481

55-
Button(onClick = { }) {
82+
Button(onClick = onShowDialog) {
5683
Text(text = stringResource(id = R.string.action_dialog))
5784
}
5885
}
@@ -65,6 +92,7 @@ private fun SimpleContentPreview() {
6592
NordicTheme {
6693
HelloScreen(
6794
param = 0,
95+
onShowDialog = {},
6896
)
6997
}
7098
}

app/src/main/java/no/nordicsemi/android/common/test/tab/Second.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import no.nordicsemi.android.common.navigation.defineDestination
1717
import no.nordicsemi.android.common.navigation.viewmodel.SimpleNavigationViewModel
1818
import no.nordicsemi.android.common.test.R
1919
import no.nordicsemi.android.common.test.simple.Hello
20-
import no.nordicsemi.android.common.test.simple.HelloDestination
20+
import no.nordicsemi.android.common.test.simple.HelloDestinations
2121
import no.nordicsemi.android.common.theme.NordicTheme
2222

2323
val Second = createSimpleDestination("second")
@@ -30,7 +30,7 @@ private val SecondDestination = defineDestination(Second) {
3030
)
3131
}
3232

33-
val SecondDestinations = SecondDestination + HelloDestination
33+
val SecondDestinations = SecondDestination + HelloDestinations
3434

3535
@Composable
3636
private fun SecondScreen(

0 commit comments

Comments
 (0)