Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.paw.key.presentation.ui.community

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import com.paw.key.R

@Composable
fun CommunityRoute(
paddingValues: PaddingValues,
navigateUp: () -> Unit,
navigateNext: () -> Unit,
snackBarHostState: SnackbarHostState,
modifier: Modifier = Modifier,
) {
CommunityScreen(
paddingValues = paddingValues,
navigateUp = navigateUp,
navigateNext = navigateNext,
snackBarHostState = snackBarHostState,
modifier = modifier,
)
}

@Composable
fun CommunityScreen(
paddingValues: PaddingValues,
navigateUp: () -> Unit,
navigateNext: () -> Unit,
snackBarHostState: SnackbarHostState,
modifier: Modifier = Modifier,
) {
Text(
text = stringResource(R.string.ic_community_description),
modifier = modifier,
)
}

@Preview
@Composable
private fun CommunityScreenPreview() {
CommunityScreen(
paddingValues = PaddingValues(),
navigateUp = {},
navigateNext = {},
snackBarHostState = SnackbarHostState(),
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.paw.key.presentation.ui.community.navigation

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.material3.SnackbarHostState
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import com.paw.key.core.navigation.MainTabRoute
import com.paw.key.presentation.ui.community.CommunityRoute
import kotlinx.serialization.Serializable

fun NavController.navigateCommunity(
navOptions: NavOptions?
) {
navigate(Community, navOptions)
}

fun NavGraphBuilder.communityNavGraph(
paddingValues: PaddingValues,
navigateUp: () -> Unit,
navigateNext: () -> Unit,
snackBarHostState: SnackbarHostState,
) {
composable<Community> {
CommunityRoute(
paddingValues = paddingValues,
navigateUp = navigateUp,
navigateNext = navigateNext,
snackBarHostState = snackBarHostState,
)
}
}

@Serializable
data object Community : MainTabRoute
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.paw.key.presentation.ui.course

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import com.paw.key.R

@Composable
fun CourseRoute(
paddingValues: PaddingValues,
navigateUp: () -> Unit,
navigateNext: () -> Unit,
snackBarHostState: SnackbarHostState,
modifier: Modifier = Modifier,
) {
CourseScreen(
paddingValues = paddingValues,
navigateUp = navigateUp,
navigateNext = navigateNext,
snackBarHostState = snackBarHostState,
modifier = modifier,
)
}

@Composable
fun CourseScreen(
paddingValues: PaddingValues,
navigateUp: () -> Unit,
navigateNext: () -> Unit,
snackBarHostState: SnackbarHostState,
modifier: Modifier = Modifier,
) {
Text(
text = stringResource(R.string.ic_course_description),
modifier = modifier,
)
}

@Preview
@Composable
private fun CourseScreenPreview() {
CourseScreen(
paddingValues = PaddingValues(),
navigateUp = {},
navigateNext = {},
snackBarHostState = SnackbarHostState(),
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.paw.key.presentation.ui.course.navigation

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.material3.SnackbarHostState
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import com.paw.key.core.navigation.MainTabRoute
import com.paw.key.presentation.ui.course.CourseRoute
import kotlinx.serialization.Serializable

fun NavController.navigateCourse(
navOptions: NavOptions?
) {
navigate(Course, navOptions)
}

fun NavGraphBuilder.courseNavGraph(
paddingValues: PaddingValues,
navigateUp: () -> Unit,
navigateNext: () -> Unit,
snackBarHostState: SnackbarHostState,
) {
composable<Course> {
CourseRoute(
paddingValues = paddingValues,
navigateUp = navigateUp,
navigateNext = navigateNext,
snackBarHostState = snackBarHostState,
)
}
}

@Serializable
data object Course : MainTabRoute
54 changes: 54 additions & 0 deletions app/src/main/java/com/paw/key/presentation/ui/home/HomeScreen.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.paw.key.presentation.ui.home

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import com.paw.key.R

@Composable
fun HomeRoute (
paddingValues: PaddingValues,
navigateUp: () -> Unit,
navigateNext: () -> Unit,
snackBarHostState: SnackbarHostState,
modifier: Modifier = Modifier
) {

HomeScreen(
paddingValues = paddingValues,
navigateUp = navigateUp,
navigateNext = navigateNext,
snackBarHostState = snackBarHostState,
modifier = modifier
)
}

@Composable
fun HomeScreen (
paddingValues: PaddingValues,
navigateUp: () -> Unit,
navigateNext: () -> Unit,
snackBarHostState: SnackbarHostState,
modifier: Modifier = Modifier
) {
// Todo : 변경 예정
Text(
text = stringResource(R.string.ic_home_description),
modifier = modifier
)
}

@Preview
@Composable
private fun HomeScreenPreview() {
HomeScreen(
paddingValues = PaddingValues(),
navigateUp = {},
navigateNext = {},
snackBarHostState = SnackbarHostState(),
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.paw.key.presentation.ui.home.navigation

import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.material3.SnackbarHostState
import androidx.compose.ui.Modifier
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.NavOptions
import androidx.navigation.compose.composable
import com.paw.key.core.navigation.MainTabRoute
import com.paw.key.presentation.ui.home.HomeRoute
import kotlinx.serialization.Serializable

fun NavController.navigateHome(
navOptions: NavOptions?
) {
navigate(Home, navOptions)
}

fun NavGraphBuilder.homeNavGraph(
paddingValues: PaddingValues,
navigateUp: () -> Unit,
navigateNext: () -> Unit,
snackBarHostState: SnackbarHostState,
modifier: Modifier = Modifier
) {
composable<Home> {
HomeRoute(
paddingValues = paddingValues,
navigateUp = navigateUp,
navigateNext = navigateNext,
snackBarHostState = snackBarHostState,
modifier = modifier
)
}
}

@Serializable
data object Home : MainTabRoute
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,13 @@ import androidx.navigation.NavOptions
import androidx.navigation.compose.currentBackStackEntryAsState
import androidx.navigation.compose.rememberNavController
import androidx.navigation.navOptions
import com.paw.key.presentation.ui.dummy.navigation.Dummy
import com.paw.key.presentation.ui.community.navigation.navigateCommunity
import com.paw.key.presentation.ui.course.navigation.navigateCourse
import com.paw.key.presentation.ui.dummy.navigation.navigateDummy
import com.paw.key.presentation.ui.dummy.next.navigateDummyNext
import com.paw.key.presentation.ui.home.navigation.Home
import com.paw.key.presentation.ui.home.navigation.navigateHome
import com.paw.key.presentation.ui.mypage.navigation.navigateMyPage

class MainNavigator (
val navController: NavHostController
Expand All @@ -20,7 +24,7 @@ class MainNavigator (
@Composable get() = navController
.currentBackStackEntryAsState().value?.destination

val startDestination = Dummy
val startDestination = Home

val currentTab : MainTab?
@Composable get() = MainTab.find { tab ->
Expand All @@ -40,9 +44,10 @@ class MainNavigator (
}

when (tab) {
/* MainTab.HOME -> navController.navigateToHome(navOptions)
MainTab.ACCOUNT -> navController.navigateToAccount(navOptions)*/
else -> {}
MainTab.HOME -> navController.navigateHome(navOptions)
MainTab.COURSE -> navController.navigateCourse(navOptions)
MainTab.COMMUNITY -> navController.navigateCommunity(navOptions)
MainTab.MYPAGE -> navController.navigateMyPage(navOptions)
}
}

Expand Down
55 changes: 22 additions & 33 deletions app/src/main/java/com/paw/key/presentation/ui/main/MainScreen.kt
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
package com.paw.key.presentation.ui.main

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.WindowInsetsSides
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.only
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.systemBars
import androidx.compose.foundation.layout.systemBarsPadding
import androidx.compose.foundation.layout.windowInsetsPadding
import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import com.paw.key.presentation.ui.main.component.MainBottomBar
import kotlinx.collections.immutable.toImmutableList

Expand All @@ -38,34 +35,26 @@ private fun MainScreenContent(
snackBarHostState: SnackbarHostState,
modifier: Modifier = Modifier
) {
Scaffold(
modifier = Modifier
.background(color = Color.White)
Box(
modifier = modifier
.windowInsetsPadding(WindowInsets.systemBars.only(WindowInsetsSides.Top))
.systemBarsPadding()
.fillMaxSize(),
content = { padding ->
Box(modifier = Modifier.fillMaxSize()) {
PawKeyNavHost(
navigator = navigator,
paddingValues = padding,
snackbarHostState = snackBarHostState,
modifier = Modifier.padding(padding)
)
}
},
bottomBar = {
MainBottomBar(
isVisible = navigator.showBottomBar(),
tabs = MainTab.entries.toImmutableList(),
currentTab = navigator.currentTab,
onTabSelected = navigator::navigate
)
},
snackbarHost = {
SnackbarHost(
hostState = snackBarHostState
)
}
)
.fillMaxSize()
) {
PawKeyNavHost(
navigator = navigator,
paddingValues = PaddingValues(),
snackbarHostState = snackBarHostState,
modifier = modifier
)

MainBottomBar(
isVisible = navigator.showBottomBar(),
tabs = MainTab.entries.toImmutableList(),
currentTab = navigator.currentTab,
onTabSelected = navigator::navigate,
modifier = modifier
.align(Alignment.BottomCenter)
)
}
}
Loading