Skip to content

Commit 0836ff6

Browse files
authored
Merge pull request #22 from LookUpGroup27/feature/update-main-activity
feat: implement MainActivity with navigation setup
2 parents 055ad37 + c8bdae8 commit 0836ff6

File tree

19 files changed

+198
-186
lines changed

19 files changed

+198
-186
lines changed

app/src/androidTest/java/com/github/lookupgroup27/lookup/screen/MainScreen.kt

Lines changed: 0 additions & 14 deletions
This file was deleted.

app/src/androidTest/java/com/github/lookupgroup27/lookup/ui/authentication/LoginTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class LoginTest : TestCase() {
4343
fun titleAndButtonAreCorrectlyDisplayed() {
4444
// Assert that the title "Welcome" and the Google Sign-In button are displayed correctly
4545
composeTestRule.onNodeWithTag("loginTitle").assertIsDisplayed()
46-
composeTestRule.onNodeWithTag("loginTitle").assertTextEquals("Welcome")
46+
composeTestRule.onNodeWithTag("loginTitle").assertTextEquals("Welcome to the Cosmos")
4747

4848
composeTestRule.onNodeWithTag("loginButton").assertIsDisplayed()
4949
composeTestRule.onNodeWithTag("loginButton").assertHasClickAction()

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,14 @@
1010
android:label="@string/app_name"
1111
android:roundIcon="@mipmap/ic_launcher_round"
1212
android:supportsRtl="true"
13-
android:theme="@style/Theme.SampleApp"
13+
android:theme="@style/Theme.LookUpApp"
1414
tools:targetApi="31">
15-
<activity
16-
android:name=".SecondActivity"
17-
android:exported="false"
18-
android:label="@string/title_activity_second"
19-
android:theme="@style/Theme.SampleApp" />
15+
2016
<activity
2117
android:name=".MainActivity"
2218
android:exported="true"
2319
android:label="@string/title_activity_main"
24-
android:theme="@style/Theme.SampleApp">
20+
android:theme="@style/Theme.LookUpApp">
2521
<intent-filter>
2622
<action android:name="android.intent.action.MAIN" />
2723

app/src/main/java/com/github/lookupgroup27/lookup/MainActivity.kt

Lines changed: 60 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -4,56 +4,77 @@ import android.os.Bundle
44
import androidx.activity.ComponentActivity
55
import androidx.activity.compose.setContent
66
import androidx.compose.foundation.layout.fillMaxSize
7-
import androidx.compose.material3.*
7+
import androidx.compose.material3.Surface
88
import androidx.compose.runtime.Composable
99
import androidx.compose.ui.Modifier
10-
import androidx.compose.ui.semantics.*
1110
import androidx.lifecycle.viewmodel.compose.viewModel
12-
import androidx.navigation.compose.*
13-
import androidx.navigation.navigation
11+
import androidx.navigation.compose.NavHost
12+
import androidx.navigation.compose.composable
13+
import androidx.navigation.compose.navigation
14+
import androidx.navigation.compose.rememberNavController
1415
import com.github.lookupgroup27.lookup.model.calendar.CalendarViewModel
15-
import com.github.lookupgroup27.lookup.resources.C
16+
import com.github.lookupgroup27.lookup.ui.authentication.SignInScreen
1617
import com.github.lookupgroup27.lookup.ui.map.MapScreen
17-
import com.github.lookupgroup27.lookup.ui.navigation.*
18-
import com.github.lookupgroup27.lookup.ui.overview.*
19-
import com.github.lookupgroup27.lookup.ui.theme.SampleAppTheme
18+
import com.github.lookupgroup27.lookup.ui.navigation.NavigationActions
19+
import com.github.lookupgroup27.lookup.ui.navigation.Route
20+
import com.github.lookupgroup27.lookup.ui.navigation.Screen
21+
import com.github.lookupgroup27.lookup.ui.overview.CalendarScreen
22+
import com.github.lookupgroup27.lookup.ui.overview.LandingScreen
23+
import com.github.lookupgroup27.lookup.ui.overview.MenuScreen
24+
import com.github.lookupgroup27.lookup.ui.overview.QuizScreen
25+
import com.github.lookupgroup27.lookup.ui.profile.ProfileScreen
26+
import com.github.lookupgroup27.lookup.ui.skytracker.SkyTrackerScreen
27+
import com.github.lookupgroup27.lookup.ui.theme.LookUpTheme
28+
import com.google.firebase.auth.FirebaseAuth
2029

2130
class MainActivity : ComponentActivity() {
31+
32+
private lateinit var auth: FirebaseAuth
33+
2234
override fun onCreate(savedInstanceState: Bundle?) {
2335
super.onCreate(savedInstanceState)
24-
setContent {
25-
SampleAppTheme {
26-
// A surface container using the 'background' color from the theme
27-
Surface(
28-
modifier = Modifier.fillMaxSize().semantics { testTag = C.Tag.main_screen_container },
29-
color = MaterialTheme.colorScheme.background) {
30-
LookUpApp()
31-
}
32-
}
33-
}
36+
37+
auth = FirebaseAuth.getInstance()
38+
auth.currentUser?.let { auth.signOut() }
39+
40+
setContent { LookUpTheme { Surface(modifier = Modifier.fillMaxSize()) { LookUpApp() } } }
3441
}
42+
}
43+
44+
@Composable
45+
fun LookUpApp() {
46+
val navController = rememberNavController()
47+
val navigationActions = NavigationActions(navController)
48+
val calendarViewModel: CalendarViewModel = viewModel()
49+
50+
NavHost(navController = navController, startDestination = Route.LANDING) {
51+
navigation(
52+
startDestination = Screen.AUTH,
53+
route = Route.AUTH,
54+
) {
55+
composable(Screen.AUTH) { SignInScreen(navigationActions) }
56+
}
57+
58+
navigation(
59+
startDestination = Screen.LANDING,
60+
route = Route.LANDING,
61+
) {
62+
composable(Screen.LANDING) { LandingScreen(navigationActions) }
63+
composable(Screen.MENU) { MenuScreen(navigationActions) }
64+
composable(Screen.MAP) { MapScreen(navigationActions) }
65+
}
66+
67+
navigation(
68+
startDestination = Screen.MENU,
69+
route = Route.MENU,
70+
) {
71+
composable(Screen.MENU) { MenuScreen(navigationActions) }
72+
composable(Screen.PROFILE) { ProfileScreen(navigationActions) }
73+
74+
composable(Screen.CALENDAR) { CalendarScreen(calendarViewModel, navigationActions) }
3575

36-
@Composable
37-
fun LookUpApp() {
38-
val navController = rememberNavController()
39-
val navigationActions = NavigationActions(navController)
40-
val calendarViewModel: CalendarViewModel = viewModel()
41-
42-
NavHost(navController = navController, startDestination = Route.LANDING) {
43-
navigation(
44-
startDestination = Screen.LANDING,
45-
route = Route.LANDING,
46-
) {
47-
composable(Screen.LANDING) { LandingScreen(navigationActions) }
48-
}
49-
navigation(startDestination = Screen.MENU, route = Route.MENU) {
50-
composable(Screen.MENU) { MenuScreen(navigationActions) }
51-
composable(Screen.QUIZ) { QuizScreen(navigationActions) }
52-
composable(Screen.CALENDAR) { CalendarScreen(calendarViewModel, navigationActions) }
53-
}
54-
navigation(startDestination = Screen.MAP, route = Route.MAP) {
55-
composable(Screen.MAP) { MapScreen(navigationActions) }
56-
}
76+
composable(Screen.SKY_TRACKER) { SkyTrackerScreen(navigationActions) }
77+
composable(Screen.QUIZ) { QuizScreen(navigationActions) }
5778
}
5879
}
5980
}

app/src/main/java/com/github/lookupgroup27/lookup/SecondActivity.kt

Lines changed: 0 additions & 43 deletions
This file was deleted.

app/src/main/java/com/github/lookupgroup27/lookup/SimpleData.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.

app/src/main/java/com/github/lookupgroup27/lookup/resources/C.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.

app/src/main/java/com/github/lookupgroup27/lookup/ui/authentication/SignIn.kt

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import androidx.compose.ui.unit.dp
3131
import androidx.compose.ui.unit.sp
3232
import com.github.lookupgroup27.lookup.R
3333
import com.github.lookupgroup27.lookup.ui.navigation.NavigationActions
34+
import com.github.lookupgroup27.lookup.ui.navigation.Screen
3435
import com.google.android.gms.auth.api.signin.GoogleSignIn
3536
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
3637
import com.google.android.gms.common.api.ApiException
@@ -50,7 +51,7 @@ fun SignInScreen(navigationActions: NavigationActions) {
5051
onAuthComplete = { result ->
5152
Log.d("SignInScreen", "User signed in: ${result.user?.displayName}")
5253
Toast.makeText(context, "Login successful!", Toast.LENGTH_LONG).show()
53-
// TODO: navigate to the next screen
54+
navigationActions.navigateTo(Screen.PROFILE)
5455
},
5556
onAuthError = {
5657
Log.e("SignInScreen", "Failed to sign in: ${it.statusCode}")
@@ -60,7 +61,7 @@ fun SignInScreen(navigationActions: NavigationActions) {
6061

6162
Scaffold(
6263
modifier = Modifier.fillMaxSize(),
63-
containerColor = Color.White,
64+
containerColor = Color.Black,
6465
content = { padding ->
6566
Column(
6667
modifier = Modifier.fillMaxSize().padding(padding),
@@ -78,14 +79,17 @@ fun SignInScreen(navigationActions: NavigationActions) {
7879
// Welcome Text
7980
Text(
8081
modifier = Modifier.testTag("loginTitle"),
81-
text = "Welcome",
82+
text = "Welcome to the Cosmos",
8283
style =
83-
MaterialTheme.typography.headlineLarge.copy(fontSize = 57.sp, lineHeight = 64.sp),
84-
fontWeight = FontWeight.Bold,
85-
// center the text
86-
84+
MaterialTheme.typography.headlineMedium.copy(
85+
fontSize = 42.sp,
86+
lineHeight = 50.sp,
87+
letterSpacing = 1.5.sp // Add letter spacing for a futuristic effect
88+
),
89+
fontWeight = FontWeight.SemiBold, // Use SemiBold for a smoother look
8790
textAlign = TextAlign.Center,
88-
color = Color.White)
91+
color = Color(0xFF8A9BB7) // A softer, muted star-like color
92+
)
8993

9094
Spacer(modifier = Modifier.height(48.dp))
9195

@@ -108,9 +112,9 @@ fun SignInScreen(navigationActions: NavigationActions) {
108112
fun GoogleSignInButton(onSignInClick: () -> Unit) {
109113
Button(
110114
onClick = onSignInClick,
111-
colors = ButtonDefaults.buttonColors(containerColor = Color.White), // Button color
115+
colors = ButtonDefaults.buttonColors(containerColor = Color(0xFF1A1A2E)), // Button color
112116
shape = RoundedCornerShape(50), // Circular edges for the button
113-
border = BorderStroke(1.dp, Color.LightGray),
117+
border = BorderStroke(1.dp, Color(0xFF9DACE6)),
114118
modifier =
115119
Modifier.padding(8.dp)
116120
.height(48.dp) // Adjust height as needed
@@ -130,7 +134,7 @@ fun GoogleSignInButton(onSignInClick: () -> Unit) {
130134
// Text for the button
131135
Text(
132136
text = "Sign in with Google",
133-
color = Color.Gray, // Text color
137+
color = Color.White, // Text color
134138
fontSize = 16.sp, // Font size
135139
fontWeight = FontWeight.Medium)
136140
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package com.github.lookupgroup27.lookup.ui.navigation
2+
3+
import androidx.compose.foundation.layout.fillMaxWidth
4+
import androidx.compose.foundation.layout.height
5+
import androidx.compose.foundation.shape.RoundedCornerShape
6+
import androidx.compose.material3.Icon
7+
import androidx.compose.material3.MaterialTheme
8+
import androidx.compose.material3.NavigationBar
9+
import androidx.compose.material3.NavigationBarItem
10+
import androidx.compose.material3.Text
11+
import androidx.compose.runtime.Composable
12+
import androidx.compose.ui.Modifier
13+
import androidx.compose.ui.draw.clip
14+
import androidx.compose.ui.platform.testTag
15+
import androidx.compose.ui.unit.dp
16+
17+
@Composable
18+
fun BottomNavigationMenu(
19+
onTabSelect: (TopLevelDestination) -> Unit,
20+
tabList: List<TopLevelDestination>,
21+
selectedItem: String
22+
) {
23+
NavigationBar(
24+
modifier = Modifier.fillMaxWidth().height(60.dp).testTag("bottomNavigationMenu"),
25+
containerColor = MaterialTheme.colorScheme.surface,
26+
content = {
27+
tabList.forEach { tab ->
28+
NavigationBarItem(
29+
icon = { Icon(tab.icon, contentDescription = null) },
30+
label = { Text(tab.textId) },
31+
selected = tab.route == selectedItem,
32+
onClick = { onTabSelect(tab) },
33+
modifier = Modifier.clip(RoundedCornerShape(50.dp)).testTag(tab.textId))
34+
}
35+
},
36+
)
37+
}

0 commit comments

Comments
 (0)