Skip to content

Commit bd14d92

Browse files
committed
feat: add separate page for setting and major changes on UI
1 parent 07e645f commit bd14d92

24 files changed

Lines changed: 739 additions & 179 deletions

File tree

.idea/deploymentTargetDropDown.xml

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/gradle.xml

Lines changed: 2 additions & 16 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/migrations.xml

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ android {
2525
applicationId = "com.bagusmerta.taskk"
2626
minSdk = 29
2727
targetSdk = 33
28-
versionCode = 4
29-
versionName = "1.2.1"
28+
versionCode = 95
29+
versionName = "1.21.1"
3030

3131
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
3232
vectorDrawables {

app/release/app-release.apk

231 KB
Binary file not shown.

app/release/output-metadata.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
"type": "SINGLE",
1212
"filters": [],
1313
"attributes": [],
14-
"versionCode": 4,
15-
"versionName": "1.2.1",
14+
"versionCode": 95,
15+
"versionName": "1.21.1",
1616
"outputFile": "app-release.apk"
1717
}
1818
],
Lines changed: 1 addition & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,15 @@
11
package com.bagusmerta.taskk.navigation
22

3-
import androidx.compose.runtime.MutableState
4-
import androidx.compose.runtime.mutableStateOf
5-
import androidx.compose.runtime.remember
6-
import androidx.compose.ui.res.stringResource
73
import androidx.hilt.navigation.compose.hiltViewModel
84
import androidx.navigation.NavGraphBuilder
95
import androidx.navigation.NavHostController
106
import androidx.navigation.compose.composable
117
import androidx.navigation.navigation
12-
import com.bagusmerta.taskk.R
13-
import com.bagusmerta.taskk.presentation.designsystem.component.TaskkDialog
14-
import com.bagusmerta.taskk.presentation.screen.setting.ui.SettingScreen
15-
import com.bagusmerta.taskk.presentation.screen.setting.ui.SettingViewModel
168
import com.bagusmerta.taskk.presentation.screen.taskk.ui.HomeScreen
179
import com.bagusmerta.taskk.presentation.screen.taskk.ui.HomeViewModel
18-
import com.bagusmerta.taskk.utils.wrapper.BottomSheetConfiguration
19-
import com.bagusmerta.taskk.utils.wrapper.DefaultBottomSheet
20-
import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi
21-
import com.google.accompanist.navigation.material.bottomSheet
2210

23-
@OptIn(ExperimentalMaterialNavigationApi::class)
2411
fun NavGraphBuilder.HomeNavHost(
2512
navController: NavHostController,
26-
bottomSheetConfig: MutableState<BottomSheetConfiguration>
2713
){
2814
navigation(
2915
startDestination = HomeFlow.HomeScreen.route,
@@ -34,48 +20,16 @@ fun NavGraphBuilder.HomeNavHost(
3420
arguments = HomeFlow.HomeScreen.arguments
3521
){
3622
val viewModel = hiltViewModel<HomeViewModel>()
37-
val showDialog = remember { mutableStateOf(false) }
38-
39-
// Dialog section
40-
if(showDialog.value){
41-
TaskkDialog(
42-
headerValue = stringResource(R.string.dialog_header),
43-
description = stringResource(R.string.dialog_description),
44-
setShowDialog = { showDialog.value = it }
45-
)
46-
}
47-
4823
HomeScreen(
4924
viewModel = viewModel,
5025
onAddTaskClick = { navController.navigate(DetailFlow.Root.route) },
5126
onTaskItemClick = {
5227
taskkId, listId ->
5328
navController.navigate(DetailFlow.Root.route(taskkId, listId))
5429
},
55-
onClickSettings = { navController.navigate(HomeFlow.SettingScreen.route) },
56-
onClickInfo = {
57-
showDialog.value = true
58-
}
30+
onClickSettings = { navController.navigate(SettingsFlow.Root.route) },
5931
)
6032
}
61-
62-
bottomSheet(HomeFlow.SettingScreen.route){
63-
val viewModel = if(navController.previousBackStackEntry != null){
64-
hiltViewModel<SettingViewModel>(
65-
navController.previousBackStackEntry!!
66-
)
67-
} else {
68-
hiltViewModel()
69-
}
70-
bottomSheetConfig.value = DefaultBottomSheet
71-
SettingScreen(
72-
viewModel = viewModel,
73-
onClickBack = {
74-
navController.navigateUp()
75-
}
76-
)
77-
78-
}
7933
}
8034

8135
}

app/src/main/java/com/bagusmerta/taskk/navigation/MainFlow.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,17 @@ sealed class HomeFlow(val name: String){
2626
}
2727
)
2828
}
29+
}
30+
31+
sealed class SettingsFlow(val name: String){
32+
object Root: SettingsFlow("setting-root") {
33+
val route = name
34+
}
2935

30-
object SettingScreen: HomeFlow("setting-screen"){
36+
object SettingScreen: SettingsFlow("setting-screen"){
37+
val route = name
38+
}
39+
object ChangeThemeScreen: SettingsFlow("theme-screen"){
3140
val route = name
3241
}
3342
}

app/src/main/java/com/bagusmerta/taskk/navigation/MainNavHost.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ fun MainScreen(
4646
bottomSheetConfig: MutableState<BottomSheetConfiguration>
4747
){
4848
val navController = rememberNavController(bottomSheetNavigator)
49+
4950
NavHost(
5051
navController = navController,
5152
startDestination = MainFlow.Root.route
@@ -55,7 +56,8 @@ fun MainScreen(
5556
SplashScreen(navController, viewModel)
5657
}
5758

58-
HomeNavHost(navController, bottomSheetConfig)
59+
HomeNavHost(navController)
5960
DetailNavHost(navController, bottomSheetConfig)
61+
SettingNavHost(navController, bottomSheetConfig)
6062
}
6163
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.bagusmerta.taskk.navigation
2+
3+
import androidx.compose.runtime.MutableState
4+
import androidx.compose.runtime.mutableStateOf
5+
import androidx.compose.runtime.remember
6+
import androidx.compose.ui.res.stringResource
7+
import androidx.hilt.navigation.compose.hiltViewModel
8+
import androidx.navigation.NavController
9+
import androidx.navigation.NavGraphBuilder
10+
import androidx.navigation.compose.composable
11+
import androidx.navigation.navigation
12+
import com.bagusmerta.taskk.R
13+
import com.bagusmerta.taskk.presentation.designsystem.component.TaskkDialog
14+
import com.bagusmerta.taskk.presentation.screen.setting.ui.SettingScreen
15+
import com.bagusmerta.taskk.presentation.screen.setting.ui.SettingThemeOptionScreen
16+
import com.bagusmerta.taskk.presentation.screen.setting.ui.SettingViewModel
17+
import com.bagusmerta.taskk.utils.wrapper.BottomSheetConfiguration
18+
import com.bagusmerta.taskk.utils.wrapper.DefaultBottomSheet
19+
import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi
20+
import com.google.accompanist.navigation.material.bottomSheet
21+
22+
@OptIn(ExperimentalMaterialNavigationApi::class)
23+
fun NavGraphBuilder.SettingNavHost(
24+
navController: NavController,
25+
bottomSheetConfig: MutableState<BottomSheetConfiguration>
26+
) {
27+
navigation(
28+
startDestination = SettingsFlow.SettingScreen.route,
29+
route = SettingsFlow.Root.route
30+
) {
31+
composable(
32+
route = SettingsFlow.SettingScreen.route
33+
) {
34+
val viewModel = hiltViewModel<SettingViewModel>()
35+
val showDialog = remember { mutableStateOf(false) }
36+
37+
// Dialog section
38+
if(showDialog.value){
39+
TaskkDialog(
40+
headerValue = stringResource(R.string.dialog_header),
41+
description = stringResource(R.string.dialog_description),
42+
setShowDialog = { showDialog.value = it }
43+
)
44+
}
45+
46+
SettingScreen(
47+
viewModel = viewModel,
48+
onClickBack = { navController.navigateUp() },
49+
onClickChangeTheme = { navController.navigate(SettingsFlow.ChangeThemeScreen.route) },
50+
onClickInfo = { showDialog.value = true }
51+
)
52+
}
53+
54+
bottomSheet(SettingsFlow.ChangeThemeScreen.route) {
55+
val viewModel = if(navController.previousBackStackEntry != null){
56+
hiltViewModel<SettingViewModel>(
57+
navController.previousBackStackEntry!!
58+
)
59+
} else {
60+
hiltViewModel()
61+
}
62+
63+
bottomSheetConfig.value = DefaultBottomSheet
64+
SettingThemeOptionScreen(
65+
viewModel = viewModel,
66+
onItemClick = { navController.navigateUp() }
67+
)
68+
}
69+
}
70+
}

0 commit comments

Comments
 (0)