package com.aiosman.riderpro import android.app.StatusBarManager import android.os.Bundle import android.widget.HorizontalScrollView import android.widget.ScrollView import androidx.activity.ComponentActivity import androidx.activity.SystemBarStyle import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.layout.windowInsetsStartWidth import androidx.compose.foundation.layout.wrapContentWidth import androidx.compose.foundation.text.BasicText import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.Icon import androidx.compose.material3.NavigationBar import androidx.compose.material3.NavigationBarItem import androidx.compose.material3.NavigationBarItemColors import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.ColorProducer import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.core.view.WindowCompat import androidx.navigation.NavController 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.aiosman.riderpro.ui.theme.RiderProTheme import com.google.android.gms.maps.model.CameraPosition import com.google.android.gms.maps.model.LatLng import com.google.maps.android.compose.GoogleMap import com.google.maps.android.compose.Marker import com.google.maps.android.compose.MarkerComposable import com.google.maps.android.compose.MarkerState import com.google.maps.android.compose.rememberCameraPositionState class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { Navigation() } } } @Composable fun NavigationController(navController: NavHostController){ NavHost( navController = navController, startDestination = NavigationItem.Home.route){ composable(route = NavigationItem.Home.route){ Home() } composable(route = NavigationItem.Street.route){ Street() } composable(route = NavigationItem.Add.route){ Add() } composable(route = NavigationItem.Message.route){ Message() } composable(route = NavigationItem.Profile.route){ Profile() } } } @Composable fun Navigation(){ val navigationBarHeight = with(LocalDensity.current) { WindowInsets.navigationBars.getBottom(this).toDp() } val navController = rememberNavController() val item = listOf( NavigationItem.Home, NavigationItem.Street, NavigationItem.Add, NavigationItem.Message, NavigationItem.Profile ) Scaffold ( modifier = Modifier.statusBarsPadding(), topBar = {}, bottomBar = { NavigationBar ( modifier = Modifier.height(56.dp + navigationBarHeight), containerColor = Color.Black ){ val navBackStackEntry by navController.currentBackStackEntryAsState() val currentRoute = navBackStackEntry?.destination?.route item.forEach{ it -> NavigationBarItem( selected = currentRoute == it.route , onClick = { if(currentRoute != it.route){ navController.navigate(it.route) } }, colors = NavigationBarItemColors( selectedIconColor = Color.Red, selectedTextColor = Color.Red, selectedIndicatorColor = Color.Black, unselectedIconColor = Color.Red, unselectedTextColor = Color.Red, disabledIconColor = Color.Red, disabledTextColor = Color.Red, ), icon = { Icon(modifier = Modifier.size(24.dp), imageVector = it.icon(), contentDescription = null, tint = if(currentRoute == it.route) Color.Red else Color.White ) } ) } } } ){ NavigationController(navController = navController) } } @Composable fun Home(){ Column ( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ){ PagingBackendSample() } } @Composable fun Street(){ Column ( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { StreetPage() } } @Composable fun Add(){ Column ( modifier = Modifier.fillMaxSize().background(Color.Black), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ){ } } @Composable fun Message(){ Column ( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Top, horizontalAlignment = Alignment.CenterHorizontally, ){ MessagePage() } } @Composable fun Profile(){ Column ( modifier = Modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ){ ProfilePage() } } @Preview(showBackground = true) @Composable fun GreetingPreview() { RiderProTheme { Surface (modifier = Modifier.fillMaxSize(), color = Color.White){ Navigation() } } }