@@ -11,7 +11,9 @@ import androidx.appcompat.app.AppCompatActivity
1111import androidx.compose.foundation.background
1212import androidx.compose.foundation.layout.Box
1313import androidx.compose.foundation.layout.padding
14- import androidx.compose.foundation.layout.safeDrawingPadding
14+ import androidx.compose.foundation.layout.statusBarsPadding
15+ import androidx.compose.foundation.layout.systemBarsPadding
16+ import androidx.compose.material.MaterialTheme
1517import androidx.compose.material.Scaffold
1618import androidx.compose.runtime.Composable
1719import androidx.compose.runtime.mutableStateOf
@@ -30,18 +32,14 @@ import com.inspiredandroid.linuxcommandbibliotheca.ui.composables.BottomBar
3032import com.inspiredandroid.linuxcommandbibliotheca.ui.composables.TopBar
3133import com.inspiredandroid.linuxcommandbibliotheca.ui.screens.basiccategories.BasicCategoriesScreen
3234import com.inspiredandroid.linuxcommandbibliotheca.ui.screens.basicgroups.BasicGroupsScreen
33- import com.inspiredandroid.linuxcommandbibliotheca.ui.screens.basicgroups.BasicGroupsViewModel
3435import com.inspiredandroid.linuxcommandbibliotheca.ui.screens.commanddetail.CommandDetailScreen
35- import com.inspiredandroid.linuxcommandbibliotheca.ui.screens.commanddetail.CommandDetailViewModel
3636import com.inspiredandroid.linuxcommandbibliotheca.ui.screens.commandlist.CommandListScreen
37- import com.inspiredandroid.linuxcommandbibliotheca.ui.screens.commandlist.CommandListViewModel
3837import com.inspiredandroid.linuxcommandbibliotheca.ui.screens.tips.TipsScreen
3938import com.inspiredandroid.linuxcommandbibliotheca.ui.theme.LinuxTheme
39+ import com.inspiredandroid.linuxcommandbibliotheca.ui.theme.LocalCustomColors
4040import com.linuxcommandlibrary.shared.hasDatabase
4141import com.linuxcommandlibrary.shared.initDatabase
4242import org.koin.android.ext.android.inject
43- import org.koin.androidx.compose.koinViewModel
44- import org.koin.core.parameter.parametersOf
4543
4644/* Copyright 2022 Simon Schubert
4745 *
@@ -76,12 +74,20 @@ class MainActivity : AppCompatActivity() {
7674 initDatabase(this )
7775
7876 setContent {
79- Box (
80- Modifier
81- .background(Color (0xFFd34747 ))
82- .safeDrawingPadding(),
83- ) {
84- LinuxApp ()
77+ LinuxTheme {
78+ Box (
79+ Modifier
80+ .background(MaterialTheme .colors.primary)
81+ .statusBarsPadding(),
82+ ) {
83+ Box (
84+ Modifier
85+ .background(LocalCustomColors .current.navBarBackground)
86+ .systemBarsPadding(),
87+ ) {
88+ LinuxApp ()
89+ }
90+ }
8591 }
8692 }
8793 }
@@ -102,105 +108,100 @@ fun LinuxApp() {
102108 navController.navigate(it)
103109 }
104110
105- LinuxTheme {
106- Scaffold (
107- topBar = {
108- TopBar (
109- navBackStackEntry,
110- searchTextValue,
111- onNavigateBack = {
112- navController.popBackStack()
113- },
114- )
115- },
116- bottomBar = {
117- BottomBar (navController)
118- },
119- ) { innerPadding ->
111+ Scaffold (
112+ topBar = {
113+ TopBar (
114+ navBackStackEntry = navBackStackEntry,
115+ textFieldValue = searchTextValue,
116+ onNavigateBack = {
117+ navController.popBackStack()
118+ },
119+ )
120+ },
121+ bottomBar = {
122+ BottomBar (navController)
123+ },
124+ ) { innerPadding ->
120125
121- NavHost (
122- navController,
123- startDestination = Screen .Basics .route,
124- Modifier .padding(innerPadding),
126+ NavHost (
127+ navController = navController,
128+ startDestination = Screen .Basics .route,
129+ modifier = Modifier .padding(innerPadding),
130+ ) {
131+ composable(
132+ Screen .Basics .route,
133+ deepLinks = listOf (
134+ navDeepLink { uriPattern = " $DEEPLINK_URI /basics" },
135+ navDeepLink { uriPattern = " $DEEPLINK_URI /basics.html" },
136+ ),
125137 ) {
126- composable(
127- Screen .Basics .route,
128- deepLinks = listOf (
129- navDeepLink { uriPattern = " $DEEPLINK_URI /basics" },
130- navDeepLink { uriPattern = " $DEEPLINK_URI /basics.html" },
131- ),
132- ) {
133- BasicCategoriesScreen (onNavigate)
134- }
135- composable(
136- Screen .Commands .route,
137- deepLinks = listOf (
138- navDeepLink { uriPattern = " $DEEPLINK_URI /" },
139- navDeepLink { uriPattern = " $DEEPLINK_URI /index.html" },
140- ),
141- ) {
142- val viewModel = koinViewModel<CommandListViewModel >()
143-
144- CommandListScreen (
145- searchTextValue.value.text,
146- viewModel,
147- onNavigate,
138+ BasicCategoriesScreen (onNavigate)
139+ }
140+ composable(
141+ Screen .Commands .route,
142+ deepLinks = listOf (
143+ navDeepLink { uriPattern = " $DEEPLINK_URI /" },
144+ navDeepLink { uriPattern = " $DEEPLINK_URI /index.html" },
145+ ),
146+ ) {
147+ CommandListScreen (
148+ searchText = searchTextValue.value.text,
149+ onNavigate = onNavigate,
150+ )
151+ }
152+ composable(
153+ Screen .Tips .route,
154+ deepLinks = listOf (
155+ navDeepLink { uriPattern = " $DEEPLINK_URI /tips" },
156+ navDeepLink { uriPattern = " $DEEPLINK_URI /tips.html" },
157+ ),
158+ ) {
159+ TipsScreen (onNavigate)
160+ }
161+ composable(
162+ " basicgroups?categoryId={categoryId}&categoryName={categoryName}" ,
163+ arguments = listOf (
164+ navArgument(" categoryId" ) { defaultValue = " " },
165+ navArgument(" categoryName" ) {},
166+ ),
167+ deepLinks = listOf (
168+ navDeepLink {
169+ uriPattern = " $DEEPLINK_URI /basic/{categoryName}.html"
170+ },
171+ navDeepLink { uriPattern = " $DEEPLINK_URI /basic/{categoryName}" },
172+ ),
173+ ) { backStackEntry ->
174+ val categoryId = backStackEntry.getCategoryId()
175+ if (categoryId != null ) {
176+ BasicGroupsScreen (
177+ categoryId = categoryId,
178+ onNavigate = onNavigate,
148179 )
149- }
150- composable(
151- Screen .Tips .route,
152- deepLinks = listOf (
153- navDeepLink { uriPattern = " $DEEPLINK_URI /tips" },
154- navDeepLink { uriPattern = " $DEEPLINK_URI /tips.html" },
155- ),
156- ) {
180+ } else {
181+ // open tips screen on invalid deeplink parameters
157182 TipsScreen (onNavigate)
158183 }
159- composable(
160- " basicgroups?categoryId={categoryId}&categoryName={categoryName}" ,
161- arguments = listOf (
162- navArgument(" categoryId" ) { defaultValue = " " },
163- navArgument(" categoryName" ) {},
164- ),
165- deepLinks = listOf (
166- navDeepLink {
167- uriPattern = " $DEEPLINK_URI /basic/{categoryName}.html"
168- },
169- navDeepLink { uriPattern = " $DEEPLINK_URI /basic/{categoryName}" },
170- ),
171- ) { backStackEntry ->
172- val categoryId = backStackEntry.getCategoryId()
173- if (categoryId != null ) {
174- val viewModel = koinViewModel<BasicGroupsViewModel >(
175- parameters = { parametersOf(categoryId) },
176- )
177- BasicGroupsScreen (onNavigate, viewModel)
178- } else {
179- // open tips screen on invalid deeplink parameters
180- TipsScreen (onNavigate)
181- }
182- }
183- composable(
184- " command?commandId={commandId}&commandName={commandName}" ,
185- arguments = listOf (
186- navArgument(" commandId" ) { defaultValue = " " },
187- navArgument(" commandName" ) {},
188- ),
189- deepLinks = listOf (
190- navDeepLink { uriPattern = " $DEEPLINK_URI /man/{commandName}.html" },
191- navDeepLink { uriPattern = " $DEEPLINK_URI /man/{commandName}" },
192- ),
193- ) { backStackEntry ->
194- val commandId = backStackEntry.getCommandId()
195- if (commandId != null ) {
196- val viewModel = koinViewModel<CommandDetailViewModel >(
197- parameters = { parametersOf(commandId) },
198- )
199- CommandDetailScreen (onNavigate, viewModel)
200- } else {
201- // open tips screen on invalid deeplink parameters
202- TipsScreen (onNavigate)
203- }
184+ }
185+ composable(
186+ " command?commandId={commandId}&commandName={commandName}" ,
187+ arguments = listOf (
188+ navArgument(" commandId" ) { defaultValue = " " },
189+ navArgument(" commandName" ) {},
190+ ),
191+ deepLinks = listOf (
192+ navDeepLink { uriPattern = " $DEEPLINK_URI /man/{commandName}.html" },
193+ navDeepLink { uriPattern = " $DEEPLINK_URI /man/{commandName}" },
194+ ),
195+ ) { backStackEntry ->
196+ val commandId = backStackEntry.getCommandId()
197+ if (commandId != null ) {
198+ CommandDetailScreen (
199+ commandId = commandId,
200+ onNavigate = onNavigate,
201+ )
202+ } else {
203+ // open tips screen on invalid deeplink parameters
204+ TipsScreen (onNavigate)
204205 }
205206 }
206207 }
0 commit comments