diff --git a/app/src/androidTest/java/com/github/lookupgroup27/lookup/ui/overview/QuizScreenTest.kt b/app/src/androidTest/java/com/github/lookupgroup27/lookup/ui/quiz/QuizScreenTest.kt similarity index 82% rename from app/src/androidTest/java/com/github/lookupgroup27/lookup/ui/overview/QuizScreenTest.kt rename to app/src/androidTest/java/com/github/lookupgroup27/lookup/ui/quiz/QuizScreenTest.kt index e84695b6f..561d52630 100644 --- a/app/src/androidTest/java/com/github/lookupgroup27/lookup/ui/overview/QuizScreenTest.kt +++ b/app/src/androidTest/java/com/github/lookupgroup27/lookup/ui/quiz/QuizScreenTest.kt @@ -1,9 +1,8 @@ -package com.github.lookupgroup27.lookup.ui.overview +package com.github.lookupgroup27.lookup.ui.quiz import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.junit4.createComposeRule import androidx.compose.ui.test.onNodeWithTag -import androidx.compose.ui.test.onNodeWithText import androidx.compose.ui.test.performClick import com.github.lookupgroup27.lookup.ui.navigation.NavigationActions import org.junit.Rule @@ -21,8 +20,8 @@ class QuizScreenTest { fun quizScreen_displaysQuizText() { composeTestRule.setContent { QuizScreen(navigationActions = mockNavigationActions) } - // Verify that the "Quiz Screen" text is displayed - composeTestRule.onNodeWithText("Quiz Screen").assertIsDisplayed() + // Verify that the "quiz_screen" text is displayed + composeTestRule.onNodeWithTag("quiz_screen").assertIsDisplayed() } @Test diff --git a/app/src/main/java/com/github/lookupgroup27/lookup/MainActivity.kt b/app/src/main/java/com/github/lookupgroup27/lookup/MainActivity.kt index 7a2d694cd..7a847dd39 100644 --- a/app/src/main/java/com/github/lookupgroup27/lookup/MainActivity.kt +++ b/app/src/main/java/com/github/lookupgroup27/lookup/MainActivity.kt @@ -21,8 +21,9 @@ import com.github.lookupgroup27.lookup.ui.navigation.Screen import com.github.lookupgroup27.lookup.ui.overview.CalendarScreen import com.github.lookupgroup27.lookup.ui.overview.LandingScreen import com.github.lookupgroup27.lookup.ui.overview.MenuScreen -import com.github.lookupgroup27.lookup.ui.overview.QuizScreen import com.github.lookupgroup27.lookup.ui.profile.ProfileScreen +import com.github.lookupgroup27.lookup.ui.quiz.QuizPlayScreen +import com.github.lookupgroup27.lookup.ui.quiz.QuizScreen import com.github.lookupgroup27.lookup.ui.skytracker.SkyTrackerScreen import com.github.lookupgroup27.lookup.ui.theme.LookUpTheme import com.google.firebase.auth.FirebaseAuth @@ -75,5 +76,10 @@ fun LookUpApp() { composable(Screen.SKY_TRACKER) { SkyTrackerScreen(navigationActions) } composable(Screen.QUIZ) { QuizScreen(navigationActions) } } + + navigation(startDestination = Screen.QUIZ, route = Route.QUIZ) { + composable(Screen.QUIZ) { QuizScreen(navigationActions) } + composable(Screen.QUIZ_PLAY) { QuizPlayScreen(navigationActions) } + } } } diff --git a/app/src/main/java/com/github/lookupgroup27/lookup/ui/navigation/NavigationActions.kt b/app/src/main/java/com/github/lookupgroup27/lookup/ui/navigation/NavigationActions.kt index 806601e54..13db5d901 100644 --- a/app/src/main/java/com/github/lookupgroup27/lookup/ui/navigation/NavigationActions.kt +++ b/app/src/main/java/com/github/lookupgroup27/lookup/ui/navigation/NavigationActions.kt @@ -14,6 +14,7 @@ object Route { const val CALENDAR = "Calendar" const val SKY_TRACKER = "SkyTracker" const val QUIZ = "Quiz" + const val QUIZ_PLAY = "QuizPlay" const val PROFILE = "Profile" const val MENU = "Menu" const val COLLECTION = "Collection" @@ -26,6 +27,7 @@ object Screen { const val CALENDAR = "Calendar Screen" const val SKY_TRACKER = "Sky Tracker Screen" const val QUIZ = "Quiz Screen" + const val QUIZ_PLAY = "Quiz Play Screen" const val PROFILE = "Profile Screen" const val MENU = "Menu Screen" const val COLLECTION = "Collection Screen" diff --git a/app/src/main/java/com/github/lookupgroup27/lookup/ui/overview/Quiz.kt b/app/src/main/java/com/github/lookupgroup27/lookup/ui/overview/Quiz.kt deleted file mode 100644 index 3763b7b47..000000000 --- a/app/src/main/java/com/github/lookupgroup27/lookup/ui/overview/Quiz.kt +++ /dev/null @@ -1,106 +0,0 @@ -package com.github.lookupgroup27.lookup.ui.overview - -import androidx.compose.foundation.Image -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack -import androidx.compose.material3.Button -import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.blur -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.style.TextAlign -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import com.github.lookupgroup27.lookup.R -import com.github.lookupgroup27.lookup.ui.navigation.NavigationActions -import com.github.lookupgroup27.lookup.ui.navigation.Screen - -@Composable -fun QuizScreen(navigationActions: NavigationActions) { - Box( - modifier = Modifier.fillMaxSize() - .testTag("quiz_screen"), - contentAlignment = Alignment.Center, - ) { - - // Background Image - Image( - painter = painterResource(id = R.drawable.landing_screen_bckgrnd), - contentDescription = "Background", - contentScale = ContentScale.Crop, - modifier = Modifier.fillMaxSize().blur(10.dp) - ) - - IconButton( - onClick = { navigationActions.goBack() }, - modifier = Modifier.padding(16.dp).align(Alignment.TopStart).testTag("back_button")) { - Icon( - imageVector = Icons.Default.ArrowBack, - contentDescription = "Back", - tint = Color.White) - } - - // Overlay for content - Column( - modifier = Modifier - .align(Alignment.Center) - .padding(horizontal = 32.dp), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.spacedBy(32.dp) - ) { - // Title Text - Text( - text = "Take a Quiz", - color = Color.White, - style = MaterialTheme.typography.displaySmall.copy( - fontWeight = FontWeight.Bold, - fontSize = 32.sp - ) - ) - - // Earth Button - Button( - onClick = { /* TODO: navigate to Earth quiz */ }, - shape = RoundedCornerShape(16.dp), - modifier = Modifier - .fillMaxWidth() - .height(56.dp) - ) { - Text( - text = "Earth", - fontSize = 20.sp, - color = Color.White, - fontWeight = FontWeight.SemiBold - ) - } - - // Solar System Button - Button( - onClick = { /* TODO: navigate to Solar System quiz */ }, - shape = RoundedCornerShape(16.dp), - modifier = Modifier - .fillMaxWidth() - .height(56.dp) - ) { - Text( - text = "Solar System", - fontSize = 20.sp, - color = Color.White, - fontWeight = FontWeight.SemiBold - ) - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/github/lookupgroup27/lookup/ui/quiz/Quiz.kt b/app/src/main/java/com/github/lookupgroup27/lookup/ui/quiz/Quiz.kt new file mode 100644 index 000000000..66b25b0fc --- /dev/null +++ b/app/src/main/java/com/github/lookupgroup27/lookup/ui/quiz/Quiz.kt @@ -0,0 +1,91 @@ +package com.github.lookupgroup27.lookup.ui.quiz + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.* +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material3.Button +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.blur +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.github.lookupgroup27.lookup.R +import com.github.lookupgroup27.lookup.ui.navigation.NavigationActions +import com.github.lookupgroup27.lookup.ui.navigation.Screen + +@Composable +fun QuizScreen(navigationActions: NavigationActions) { + Box( + modifier = Modifier.fillMaxSize().testTag("quiz_screen"), + contentAlignment = Alignment.Center, + ) { + + // Background Image + Image( + painter = painterResource(id = R.drawable.landing_screen_bckgrnd), + contentDescription = "Background", + contentScale = ContentScale.Crop, + modifier = Modifier.fillMaxSize().blur(10.dp).testTag("quiz_background")) + + IconButton( + onClick = { navigationActions.goBack() }, + modifier = + Modifier.padding(16.dp).align(Alignment.TopStart).testTag("go_back_button_quiz")) { + Icon( + imageVector = Icons.Default.ArrowBack, + contentDescription = "Back", + tint = Color.White) + } + + // Overlay for content + Column( + modifier = Modifier.align(Alignment.Center).padding(horizontal = 32.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.spacedBy(32.dp)) { + // Title Text + Text( + text = "Take a Quiz", + color = Color.White, + style = + MaterialTheme.typography.displaySmall.copy( + fontWeight = FontWeight.Bold, fontSize = 32.sp), + modifier = Modifier.testTag("quiz_title")) + + // Earth Button + Button( + onClick = { navigationActions.navigateTo(Screen.QUIZ_PLAY) }, + shape = RoundedCornerShape(16.dp), + modifier = Modifier.fillMaxWidth().height(56.dp).testTag("earth_button")) { + Text( + text = "Earth", + fontSize = 20.sp, + color = Color.White, + fontWeight = FontWeight.SemiBold) + } + + // Solar System Button + Button( + onClick = { navigationActions.navigateTo(Screen.QUIZ_PLAY) }, + shape = RoundedCornerShape(16.dp), + modifier = Modifier.fillMaxWidth().height(56.dp).testTag("solar_system_button")) { + Text( + text = "Solar System", + fontSize = 20.sp, + color = Color.White, + fontWeight = FontWeight.SemiBold) + } + } + } +} diff --git a/app/src/main/java/com/github/lookupgroup27/lookup/ui/quiz/QuizPlay.kt b/app/src/main/java/com/github/lookupgroup27/lookup/ui/quiz/QuizPlay.kt new file mode 100644 index 000000000..123148f67 --- /dev/null +++ b/app/src/main/java/com/github/lookupgroup27/lookup/ui/quiz/QuizPlay.kt @@ -0,0 +1,14 @@ +package com.github.lookupgroup27.lookup.ui.quiz + +import androidx.compose.runtime.Composable +import com.github.lookupgroup27.lookup.ui.navigation.NavigationActions +import com.github.lookupgroup27.lookup.ui.overview.SampleScreen + +@Composable +fun QuizPlayScreen(navigationActions: NavigationActions) { + SampleScreen( + screenText = "Quiz Play Screen", + navigationActions = navigationActions, + screenTag = "quiz_play_screen", + backButtonTag = "go_back_button_quiz") +}