diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..bfed76e
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+DeNa Drive
\ No newline at end of file
diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml
new file mode 100644
index 0000000..4a53bee
--- /dev/null
+++ b/.idea/AndroidProjectSystem.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..b86273d
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
new file mode 100644
index 0000000..b268ef3
--- /dev/null
+++ b/.idea/deploymentTargetSelector.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..97f0a8e
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..7061a0d
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
new file mode 100644
index 0000000..c224ad5
--- /dev/null
+++ b/.idea/kotlinc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/migrations.xml b/.idea/migrations.xml
new file mode 100644
index 0000000..f8051a6
--- /dev/null
+++ b/.idea/migrations.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..74dd639
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
new file mode 100644
index 0000000..16660f1
--- /dev/null
+++ b/.idea/runConfigurations.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 76a45b8..6249dd2 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -56,4 +56,6 @@ dependencies {
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
+
+ implementation(libs.androidx.navigation.compose)
}
\ No newline at end of file
diff --git a/app/src/main/java/com/bbc/denadrive/MainActivity.kt b/app/src/main/java/com/bbc/denadrive/MainActivity.kt
index 3e64401..8adc934 100644
--- a/app/src/main/java/com/bbc/denadrive/MainActivity.kt
+++ b/app/src/main/java/com/bbc/denadrive/MainActivity.kt
@@ -11,22 +11,28 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
+import androidx.navigation.compose.rememberNavController
import com.bbc.denadrive.ui.theme.DeNaDriveTheme
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- enableEdgeToEdge()
+
setContent {
- DeNaDriveTheme {
- Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
- Greeting(
- name = "Android",
- modifier = Modifier.padding(innerPadding)
- )
- }
- }
+ val navController = rememberNavController()
+ NavigationGraph(navController)
}
+// enableEdgeToEdge()
+// setContent {
+// DeNaDriveTheme {
+// Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
+// Greeting(
+// name = "Android",
+// modifier = Modifier.padding(innerPadding)
+// )
+// }
+// }
+// }
}
}
diff --git a/app/src/main/java/com/bbc/denadrive/MyNavGraph.kt b/app/src/main/java/com/bbc/denadrive/MyNavGraph.kt
new file mode 100644
index 0000000..f1fea76
--- /dev/null
+++ b/app/src/main/java/com/bbc/denadrive/MyNavGraph.kt
@@ -0,0 +1,25 @@
+package com.bbc.denadrive
+
+import androidx.compose.runtime.Composable
+import androidx.navigation.NavHostController
+import androidx.navigation.compose.NavHost
+import androidx.navigation.compose.composable
+import com.bbc.denadrive.home.DetailsScreen
+import com.bbc.denadrive.home.HomeScreen
+
+@Composable
+fun NavigationGraph(navController: NavHostController) {
+ // Create a NavHost that defines the navigation graph
+ NavHost(navController = navController, startDestination = "home") {
+ // Define the home screen destination
+ composable("home") { HomeScreen(navController) }
+
+ // Define the details screen destination with an argument
+ composable("details/{itemId}") { backStackEntry ->
+ // Retrieve the argument from the back stack entry
+ val itemId = backStackEntry.arguments?.getString("itemId")
+ // Pass the argument to the DetailsScreen
+ DetailsScreen(itemId, navController)
+ }
+ }
+}
diff --git a/app/src/main/java/com/bbc/denadrive/home/DebugScreens.kt b/app/src/main/java/com/bbc/denadrive/home/DebugScreens.kt
new file mode 100644
index 0000000..50731d9
--- /dev/null
+++ b/app/src/main/java/com/bbc/denadrive/home/DebugScreens.kt
@@ -0,0 +1,184 @@
+package com.bbc.denadrive.home
+
+import androidx.compose.material3.Button
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.navigation.NavHostController
+//import androidx.compose.foundation.background
+//import androidx.compose.foundation.clickable
+//import androidx.compose.foundation.layout.*
+//import androidx.compose.material3.*
+//import androidx.compose.runtime.*
+//import androidx.compose.ui.Alignment
+//import androidx.compose.ui.Modifier
+//import androidx.compose.ui.graphics.Color
+//import androidx.compose.ui.unit.dp
+//import androidx.compose.ui.unit.sp
+
+import androidx.compose.foundation.clickable
+import androidx.compose.foundation.layout.*
+import androidx.compose.material.icons.Icons
+import androidx.compose.material.icons.filled.Menu
+import androidx.compose.material.icons.filled.MoreVert
+import androidx.compose.material3.*
+import androidx.compose.runtime.*
+import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.unit.dp
+import androidx.compose.ui.unit.sp
+//import androidx.compose.material3.icons.Icons
+//import androidx.compose.material3.icons.filled.Menu
+//import androidx.compose.material3.icons.filled.MoreVert
+
+@Composable
+fun HomeScreen(navController: NavHostController) {
+ Button(onClick = { navController.navigate("details/1") }) {
+ Text("Go to Details")
+ }
+}
+
+@Composable
+fun DetailsScreen(itemId: String?, navController: NavHostController) {
+ Text(text = "Details for item: $itemId")
+}
+
+
+@OptIn(ExperimentalMaterial3Api::class)
+@Composable
+fun ScaffoldWithSidebar() {
+ // State to control the drawer
+ var isDrawerOpen by remember { mutableStateOf(false) }
+
+ // ModalNavigationDrawer
+ ModalNavigationDrawer(
+ drawerState = rememberDrawerState(initialValue = DrawerValue.Closed),
+ drawerContent = {
+ // Drawer content
+ Column(
+ modifier = Modifier
+ .fillMaxSize()
+ .padding(16.dp)
+ ) {
+ Text("Item 1", modifier = Modifier.clickable { /* Handle click */ })
+ Spacer(modifier = Modifier.height(8.dp))
+ Text("Item 2", modifier = Modifier.clickable { /* Handle click */ })
+ Spacer(modifier = Modifier.height(8.dp))
+ Text("Item 3", modifier = Modifier.clickable { /* Handle click */ })
+ }
+ },
+ content = {
+ // Main content of the screen
+ Scaffold(
+ topBar = {
+ TopAppBar(
+ title = { Text("My App") },
+ navigationIcon = {
+ IconButton(onClick = { isDrawerOpen = true }) {
+ // Icon for the menu (three horizontal lines)
+ Icon(Icons.Filled.Menu, contentDescription = "Menu")
+ }
+ },
+ actions = {
+ IconButton(onClick = { /* Handle settings click */ }) {
+ // Icon for the settings (three vertical dots)
+ Icon(Icons.Filled.MoreVert, contentDescription = "Settings")
+ }
+ }
+ )
+ },
+ content = { innerPadding ->
+ Box(
+ modifier = Modifier
+ .fillMaxSize()
+ .padding(innerPadding)
+ .padding(16.dp),
+ contentAlignment = Alignment.Center
+ ) {
+ Text("Main Content", fontSize = 24.sp)
+ }
+ }
+ )
+ }
+ )
+}
+
+@Composable
+fun MyApp() {
+ ScaffoldWithSidebar()
+}
+
+@Composable
+fun MainActivityContent() {
+ MyApp()
+}
+
+
+//@OptIn(ExperimentalMaterial3Api::class)
+//@Composable
+//fun ScaffoldWithSidebar() {
+// // State to control the drawer
+// var isDrawerOpen by remember { mutableStateOf(false) }
+//
+// // Main Scaffold
+// Scaffold(
+// topBar = {
+// TopAppBar(
+// title = { Text("My App") },
+// navigationIcon = {
+// IconButton(onClick = { isDrawerOpen = true }) {
+// // Icon for the menu (three horizontal lines)
+// Icon(Icons.Filled.Menu, contentDescription = "Menu")
+// }
+// },
+// actions = {
+// IconButton(onClick = { /* Handle settings click */ }) {
+// // Icon for the settings (three vertical dots)
+// Icon(Icons.Filled.MoreVert, contentDescription = "Settings")
+// }
+// }
+// )
+// },
+// drawerContent = {
+// // Drawer content
+// Column(
+// modifier = Modifier
+// .fillMaxSize()
+// .padding(16.dp)
+// ) {
+// Text("Item 1", modifier = Modifier.clickable { /* Handle click */ })
+// Spacer(modifier = Modifier.height(8.dp))
+// Text("Item 2", modifier = Modifier.clickable { /* Handle click */ })
+// Spacer(modifier = Modifier.height(8.dp))
+// Text("Item 3", modifier = Modifier.clickable { /* Handle click */ })
+// }
+// },
+// drawerGesturesEnabled = true,
+// drawerShape = MaterialTheme.shapes.large,
+// drawerContentColor = MaterialTheme.colorScheme.background,
+// drawerContainerColor = MaterialTheme.colorScheme.surface,
+// content = { padding ->
+// // Main content of the screen
+// Box(
+// modifier = Modifier
+// .fillMaxSize()
+// .padding(padding)
+// .background(Color.White),
+// contentAlignment = Alignment.Center
+// ) {
+// Text("Main Content", fontSize = 24.sp)
+// }
+// }
+// )
+//
+// // Handle drawer state
+// if (isDrawerOpen) {
+// // Close the drawer when clicking outside
+// Box(
+// modifier = Modifier
+// .fillMaxSize()
+// .background(Color.Black.copy(alpha = 0.5f))
+// .clickable { isDrawerOpen = false }
+// )
+// }
+//}
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 4d5cbd6..ab0d952 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -8,9 +8,11 @@ espressoCore = "3.6.1"
lifecycleRuntimeKtx = "2.8.7"
activityCompose = "1.10.1"
composeBom = "2024.09.00"
+navigationCompose = "2.8.8"
[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
+androidx-navigation-compose = { module = "androidx.navigation:navigation-compose", version.ref = "navigationCompose" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }