diff --git a/presentation/src/main/java/com/moizaandroid/moiza/ui/board/BoardScreen.kt b/presentation/src/main/java/com/moizaandroid/moiza/ui/board/BoardScreen.kt new file mode 100644 index 0000000..3c45876 --- /dev/null +++ b/presentation/src/main/java/com/moizaandroid/moiza/ui/board/BoardScreen.kt @@ -0,0 +1,8 @@ +package com.moizaandroid.moiza.ui.board + +import androidx.compose.runtime.Composable + +@Composable +fun BoardScreen() { + +} \ No newline at end of file diff --git a/presentation/src/main/java/com/moizaandroid/moiza/ui/home/HomeScreen.kt b/presentation/src/main/java/com/moizaandroid/moiza/ui/home/HomeScreen.kt new file mode 100644 index 0000000..a37b702 --- /dev/null +++ b/presentation/src/main/java/com/moizaandroid/moiza/ui/home/HomeScreen.kt @@ -0,0 +1,8 @@ +package com.moizaandroid.moiza.ui.home + +import androidx.compose.runtime.Composable + +@Composable +fun HomeScreen() { + +} \ No newline at end of file diff --git a/presentation/src/main/java/com/moizaandroid/moiza/ui/main/MainActivity.kt b/presentation/src/main/java/com/moizaandroid/moiza/ui/main/MainActivity.kt index 3d68a78..635337a 100644 --- a/presentation/src/main/java/com/moizaandroid/moiza/ui/main/MainActivity.kt +++ b/presentation/src/main/java/com/moizaandroid/moiza/ui/main/MainActivity.kt @@ -2,36 +2,118 @@ package com.moizaandroid.moiza.ui.main import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent import androidx.activity.viewModels -import androidx.navigation.fragment.findNavController -import androidx.navigation.ui.setupWithNavController -import com.google.android.material.bottomnavigation.BottomNavigationView -import com.moizaandroid.moiza.R -import com.moizaandroid.moiza.databinding.ActivityMainBinding -import com.moizaandroid.moiza.ui.base.BaseActivity +import androidx.compose.foundation.layout.height +import androidx.compose.material.* +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import androidx.navigation.NavHostController +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.currentBackStackEntryAsState +import androidx.navigation.compose.rememberNavController +import com.moiza_design.icon.MoizaIcons +import com.moiza_design.theme.Blue +import com.moiza_design.theme.Gray500 +import com.moizaandroid.moiza.ui.board.BoardScreen +import com.moizaandroid.moiza.ui.home.HomeScreen +import com.moizaandroid.moiza.ui.notification.NotificationScreen +import com.moizaandroid.moiza.ui.profile.ProfileScreen +import com.moizaandroid.moiza.utils.NavDestination import com.moizaandroid.moiza.viewmodel.MainViewModel -class MainActivity : BaseActivity( - R.layout.activity_main -) { +class MainActivity : ComponentActivity() { private val mainViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - - initBottomNavBar() + setContent { + val navController = rememberNavController() + Scaffold( + bottomBar = { + BottomNavigationBar( + itemList = listOf( + BottomNavItem( + route = NavDestination.BottomNav.HOME, + icon = MoizaIcons.home + ), + BottomNavItem( + route = NavDestination.BottomNav.BOARD, + icon = MoizaIcons.board + ), + BottomNavItem( + route = NavDestination.BottomNav.NOTIFICATION, + icon = MoizaIcons.notification + ), + BottomNavItem( + route = NavDestination.BottomNav.PROFILE, + icon = MoizaIcons.profile + ) + ), + modifier = Modifier, + navController = navController, + onItemClick = { + navController.navigate(it.route) + }) + } + ) { + Navigation(navController = navController) + } + } } +} - private fun initBottomNavBar() { - val navController = - supportFragmentManager.findFragmentById(R.id.fragmentView)?.findNavController() - val nav = binding.bottomNav as BottomNavigationView - navController?.let { - nav.setupWithNavController(navController) +@Composable +fun Navigation(navController: NavHostController) { + NavHost(navController = navController, startDestination = NavDestination.BottomNav.HOME) { + composable(route = NavDestination.BottomNav.HOME) { + HomeScreen() + } + composable(route = NavDestination.BottomNav.BOARD) { + BoardScreen() + } + composable(route = NavDestination.BottomNav.NOTIFICATION) { + NotificationScreen() + } + composable(route = NavDestination.BottomNav.PROFILE) { + ProfileScreen() } } +} - override fun initView() {} - - override fun observeEvent() {} -} \ No newline at end of file +@OptIn(ExperimentalMaterialApi::class) +@Composable +fun BottomNavigationBar( + itemList: List, + navController: NavHostController, + modifier: Modifier, + onItemClick: (BottomNavItem) -> Unit +) { + val backStackEntry = navController.currentBackStackEntryAsState() + BottomNavigation( + modifier = modifier, + backgroundColor = Color.White + ) { + itemList.forEach{ item -> + val selected = item.route == backStackEntry.value?.destination?.route + BottomNavigationItem( + selected = selected, + onClick = { onItemClick(item) }, + selectedContentColor = Blue, + unselectedContentColor = Gray500, + icon = { + Icon( + painter = painterResource(id = item.icon), + contentDescription = item.route, + modifier = Modifier.height(20.dp) + ) + } + ) + } + } +} diff --git a/presentation/src/main/java/com/moizaandroid/moiza/ui/notification/NotificationScreen.kt b/presentation/src/main/java/com/moizaandroid/moiza/ui/notification/NotificationScreen.kt new file mode 100644 index 0000000..c63a9c9 --- /dev/null +++ b/presentation/src/main/java/com/moizaandroid/moiza/ui/notification/NotificationScreen.kt @@ -0,0 +1,8 @@ +package com.moizaandroid.moiza.ui.notification + +import androidx.compose.runtime.Composable + +@Composable +fun NotificationScreen() { + +} \ No newline at end of file diff --git a/presentation/src/main/java/com/moizaandroid/moiza/ui/profile/ProfileScreen.kt b/presentation/src/main/java/com/moizaandroid/moiza/ui/profile/ProfileScreen.kt new file mode 100644 index 0000000..ab2105d --- /dev/null +++ b/presentation/src/main/java/com/moizaandroid/moiza/ui/profile/ProfileScreen.kt @@ -0,0 +1,8 @@ +package com.moizaandroid.moiza.ui.profile + +import androidx.compose.runtime.Composable + +@Composable +fun ProfileScreen() { + +} \ No newline at end of file diff --git a/presentation/src/main/res/layout/activity_main.xml b/presentation/src/main/res/layout/activity_main.xml deleted file mode 100644 index 21fd81e..0000000 --- a/presentation/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/presentation/src/main/res/menu/bottom_nav_menu.xml b/presentation/src/main/res/menu/bottom_nav_menu.xml deleted file mode 100644 index 8482378..0000000 --- a/presentation/src/main/res/menu/bottom_nav_menu.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/presentation/src/main/res/navigation/bottom_nav_graph.xml b/presentation/src/main/res/navigation/bottom_nav_graph.xml deleted file mode 100644 index 7ebfa3c..0000000 --- a/presentation/src/main/res/navigation/bottom_nav_graph.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - \ No newline at end of file