Skip to content

Commit 1cf502e

Browse files
committed
added data base
1 parent aa4e1f0 commit 1cf502e

File tree

15 files changed

+639
-139
lines changed

15 files changed

+639
-139
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:tools="http://schemas.android.com/tools">
4-
4+
<uses-permission android:name="android.permission.INTERNET"/>
55
<application
6+
android:name=".EventTrackerApplication"
67
android:allowBackup="true"
78
android:dataExtractionRules="@xml/data_extraction_rules"
89
android:fullBackupContent="@xml/backup_rules"
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.example.eventtracker
2+
3+
import android.app.Application
4+
import dagger.hilt.android.HiltAndroidApp
5+
6+
@HiltAndroidApp
7+
class EventTrackerApplication:Application() {
8+
}

app/src/main/java/com/example/eventtracker/MainActivity.kt

Lines changed: 63 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.example.eventtracker
22

33
import android.os.Bundle
4+
import android.util.Log
45
import androidx.activity.ComponentActivity
56
import androidx.activity.compose.setContent
67
import androidx.activity.enableEdgeToEdge
@@ -9,39 +10,82 @@ import androidx.compose.foundation.layout.padding
910
import androidx.compose.material3.Scaffold
1011
import androidx.compose.material3.Text
1112
import androidx.compose.runtime.Composable
13+
import androidx.compose.runtime.getValue
14+
import androidx.compose.runtime.mutableStateOf
15+
import androidx.compose.runtime.remember
16+
import androidx.compose.runtime.setValue
1217
import androidx.compose.ui.Modifier
1318
import androidx.compose.ui.tooling.preview.Preview
19+
import androidx.navigation.compose.currentBackStackEntryAsState
20+
import androidx.navigation.compose.rememberNavController
21+
import com.example.eventtracker.ui.bottomBar.BottomBar
22+
import com.example.eventtracker.ui.home.EventDetailScreen
23+
import com.example.eventtracker.ui.home.EventDetailScreenTopBar
24+
import com.example.eventtracker.ui.home.HomeScreenTopBar
25+
import com.example.eventtracker.ui.navigation.EventDetailsScreen
26+
import com.example.eventtracker.ui.navigation.EventTrackerApp
27+
import com.example.eventtracker.ui.navigation.HomeScreen
28+
import com.example.eventtracker.ui.navigation.PostEventScreen
29+
import com.example.eventtracker.ui.navigation.ProfileScreen
30+
import com.example.eventtracker.ui.postNewEvent.PostNewEventScreenTopBar
31+
import com.example.eventtracker.ui.profile.ProfileScreenTopBar
1432
import com.example.eventtracker.ui.theme.EventTrackerTheme
33+
import dagger.hilt.android.AndroidEntryPoint
1534

35+
@AndroidEntryPoint
1636
class MainActivity : ComponentActivity() {
1737
override fun onCreate(savedInstanceState: Bundle?) {
1838
super.onCreate(savedInstanceState)
1939
enableEdgeToEdge()
2040
setContent {
2141
EventTrackerTheme {
22-
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
23-
Greeting(
24-
name = "Android",
25-
modifier = Modifier.padding(innerPadding)
42+
val navController = rememberNavController()
43+
var buttonsVisible by remember { mutableStateOf(false) }
44+
val navBackStackEntry by navController.currentBackStackEntryAsState()
45+
val pathString = "com.example.eventtracker.ui.navigation."
46+
val eventDetailScreenPath =
47+
"com.example.eventtracker.ui.navigation." +
48+
"EventDetailsScreen?name={name}&image={image}&" +
49+
"date={date}&time={time}&location={location}&description" +
50+
"={description}&category={category}"
51+
Log.d("route", navBackStackEntry?.destination?.route.toString())
52+
Scaffold(
53+
modifier = Modifier.fillMaxSize(),
54+
bottomBar = {
55+
// Show bottom bar only if buttonsVisible is true
56+
// Show bottom bar only if buttonsVisible is true
57+
if (buttonsVisible) {
58+
BottomBar(
59+
navController = navController,
60+
state = buttonsVisible,
61+
modifier = Modifier,
62+
)
63+
}
64+
},
65+
topBar = {
66+
when (navBackStackEntry?.destination?.route) {
67+
68+
pathString + HomeScreen.toString() -> HomeScreenTopBar(onClickAction = {})
69+
eventDetailScreenPath -> EventDetailScreenTopBar()
70+
pathString + PostEventScreen.toString() -> PostNewEventScreenTopBar(
71+
onClickAction = { navController.navigateUp() })
72+
73+
pathString + ProfileScreen.toString() -> ProfileScreenTopBar()
74+
else -> {
75+
Log.d("route", "I am here")
76+
//DO NOTHING
77+
}
78+
}
79+
}
80+
) { innerPadding ->
81+
EventTrackerApp(
82+
navController = navController,
83+
modifier = Modifier.padding(innerPadding),
84+
onBottomBarVisibilityChanged = { buttonsVisible = it },
2685
)
2786
}
2887
}
2988
}
3089
}
3190
}
3291

33-
@Composable
34-
fun Greeting(name: String, modifier: Modifier = Modifier) {
35-
Text(
36-
text = "Hello $name!",
37-
modifier = modifier
38-
)
39-
}
40-
41-
@Preview(showBackground = true)
42-
@Composable
43-
fun GreetingPreview() {
44-
EventTrackerTheme {
45-
Greeting("Android")
46-
}
47-
}

app/src/main/java/com/example/eventtracker/model/EventData.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ data class EventData(
66
val date:String = "20/05/2024",
77
val time:String = "10:00 AM",
88
val location:String = "Av Auditorium,DSCE",
9-
val description:String = "THis is the description of the event"
9+
val description:String = "THis is the description of the event",
10+
val category:String = "Technical",
1011
)
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.example.eventtracker.ui.bottomBar
2+
3+
import android.annotation.SuppressLint
4+
import androidx.compose.material3.Icon
5+
import androidx.compose.material3.NavigationBar
6+
import androidx.compose.material3.NavigationBarItem
7+
import androidx.compose.material3.NavigationBarItemDefaults
8+
import androidx.compose.runtime.Composable
9+
import androidx.compose.runtime.getValue
10+
import androidx.compose.ui.Modifier
11+
import androidx.compose.ui.graphics.Color
12+
import androidx.navigation.NavGraph.Companion.findStartDestination
13+
import androidx.navigation.NavHostController
14+
import androidx.navigation.compose.currentBackStackEntryAsState
15+
16+
@SuppressLint("StateFlowValueCalledInComposition")
17+
@Composable
18+
fun BottomBar(
19+
navController: NavHostController,
20+
state: Boolean,
21+
modifier: Modifier = Modifier,
22+
) {
23+
24+
val screens = listOf(
25+
BottomBarItem.HomeScreen,
26+
BottomBarItem.PostEventScreen,
27+
BottomBarItem.ProfileScreen,
28+
)
29+
30+
31+
NavigationBar(
32+
modifier = modifier,
33+
containerColor = Color(176, 183, 192, 70),
34+
) {
35+
val navBackStackEntry by navController.currentBackStackEntryAsState()
36+
val currentRoute = navBackStackEntry?.destination?.route
37+
screens.forEach { screen ->
38+
NavigationBarItem(
39+
// label = {
40+
// Text(text = screen.title!!)
41+
// },
42+
icon = {
43+
Icon(imageVector = screen.icon, contentDescription = "")
44+
},
45+
selected = currentRoute == screen.route,
46+
onClick = {
47+
navController.navigate(screen.route) {
48+
popUpTo(navController.graph.findStartDestination().id) {
49+
saveState = true
50+
}
51+
launchSingleTop = true
52+
restoreState = true
53+
}
54+
},
55+
colors = NavigationBarItemDefaults.colors(
56+
unselectedTextColor = Color.Gray,
57+
selectedTextColor = Color.Black,
58+
selectedIconColor = Color.Black,
59+
unselectedIconColor = Color.Black,
60+
indicatorColor = Color.White
61+
),
62+
)
63+
}
64+
65+
}
66+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.example.eventtracker.ui.bottomBar
2+
3+
import androidx.compose.material.icons.Icons
4+
import androidx.compose.material.icons.filled.Add
5+
import androidx.compose.material.icons.filled.Home
6+
import androidx.compose.material.icons.filled.Message
7+
import androidx.compose.material.icons.filled.Person
8+
import androidx.compose.material.icons.filled.Search
9+
import androidx.compose.ui.graphics.vector.ImageVector
10+
import com.example.eventtracker.ui.navigation.HomeScreen
11+
import com.example.eventtracker.ui.navigation.PostEventScreen
12+
import com.example.eventtracker.ui.navigation.ProfileScreen
13+
14+
sealed class BottomBarItem (
15+
val label: String,
16+
val icon: ImageVector,
17+
val route:Any,
18+
) {
19+
data object HomeScreen: BottomBarItem(
20+
label = "Home",
21+
icon = Icons.Default.Home,
22+
route = com.example.eventtracker.ui.navigation.HomeScreen
23+
)
24+
data object PostEventScreen: BottomBarItem(
25+
label = "Post Event",
26+
icon = Icons.Default.Add,
27+
route = com.example.eventtracker.ui.navigation.PostEventScreen
28+
)
29+
data object ProfileScreen: BottomBarItem(
30+
label = "Profile",
31+
icon = Icons.Default.Person,
32+
route = com.example.eventtracker.ui.navigation.ProfileScreen
33+
)
34+
}

0 commit comments

Comments
 (0)