mirror of
https://github.com/AdrianKuta/KahootQuiz.git
synced 2025-10-30 16:33:42 +01:00
feat: Enhance QuizScreen UI and introduce core design system module
This commit significantly revamps the `QuizScreen` UI to display question details including image and text, and introduces a new `core:designsystem` module to centralize theme, colors, typography, and drawable resources.
Key changes:
- **UI Layer (`ui:quiz` module):**
- Updated `QuizScreen.kt`:
- Implemented a background image for the screen.
- Added a `Toolbar` composable to display question progress and type.
- Created `QuestionContent` composable to show the question image (using Coil for image loading) and text.
- Added a placeholder `Choices` composable (currently an empty `LazyVerticalGrid`).
- Applied `fillMaxSize()` to the main `QuizScreen` modifier.
- Included a `@Preview` for `QuizScreen` with sample data.
- Modified `QuizScreenViewModel.kt` to update `QuizUiState` with the first `Question` from the fetched quiz.
- Added a `quiz` string resource in `strings.xml`.
- Added dependencies for Coil (compose and okhttp) in `ui/quiz/build.gradle.kts`.
- **Core Design System (`core:designsystem` module):**
- Created a new Android library module `core:designsystem`.
- Moved `Color.kt`, `Theme.kt`, and `Type.kt` from `app/src/main/java/dev/adriankuta/kahootquiz/ui/theme` to this new module.
- Added a new `Grey` color to `Color.kt`.
- Added `bg_image.webp` and `ic_type.xml` drawable resources.
- Configured the module with `kahootquiz.android.library.compose` plugin.
- **App Module (`app` module):**
- Updated `MainActivity.kt` to import `KahootQuizTheme` from the new `core.designsystem` package.
- Added `implementation(projects.core.designsystem)` dependency in `app/build.gradle.kts`.
- **Domain Layer (`domain` module):**
- Made several fields in `Question.kt` and `Choice.kt` nullable and provided default null values to accommodate potential missing data from the API.
- Specifically, `Question.image` is now non-nullable (`String`).
- **Build System:**
- Added `coilCompose` and `coilNetworkOkhttp` versions to `gradle/libs.versions.toml`.
- Included `:core:designsystem` in `settings.gradle.kts`.
This commit is contained in:
@@ -3,5 +3,5 @@ package dev.adriankuta.kahootquiz.domain.models
|
||||
data class Choice(
|
||||
val answer: String?,
|
||||
val correct: Boolean?,
|
||||
val languageInfo: LanguageInfo?
|
||||
val languageInfo: LanguageInfo? = null
|
||||
)
|
||||
@@ -8,16 +8,16 @@ data class Question(
|
||||
val type: String?,
|
||||
val question: String?,
|
||||
val time: Duration?,
|
||||
val points: Boolean?,
|
||||
val points: Boolean? = null,
|
||||
val pointsMultiplier: Int?,
|
||||
val choices: List<Choice>?,
|
||||
val layout: String?,
|
||||
val image: String?,
|
||||
val layout: String? = null,
|
||||
val image: String,
|
||||
val imageMetadata: ImageMetadata?,
|
||||
val resources: String?,
|
||||
val video: Video?,
|
||||
val questionFormat: Int?,
|
||||
val languageInfo: LanguageInfo?,
|
||||
val media: List<MediaItem>?,
|
||||
val choiceRange: ChoiceRange?
|
||||
val resources: String? = null,
|
||||
val video: Video? = null,
|
||||
val questionFormat: Int? = null,
|
||||
val languageInfo: LanguageInfo? = null,
|
||||
val media: List<MediaItem>? = null,
|
||||
val choiceRange: ChoiceRange? = null
|
||||
)
|
||||
Reference in New Issue
Block a user