diff --git a/app/build.gradle b/app/build.gradle
index a19cbd7..68d4e47 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -123,9 +123,6 @@ dependencies {
implementation 'com.google.firebase:firebase-firestore-ktx'
implementation 'com.google.firebase:firebase-perf-ktx'
implementation 'com.google.firebase:firebase-config-ktx'
-
- // Colorpicker
- implementation 'com.github.skydoves:colorpicker-compose:1.0.2'
}
// Allow references to generate code
diff --git a/app/src/main/java/be/ugent/sel/studeez/common/ext/ColorExt.kt b/app/src/main/java/be/ugent/sel/studeez/common/ext/ColorExt.kt
new file mode 100644
index 0000000..87ce226
--- /dev/null
+++ b/app/src/main/java/be/ugent/sel/studeez/common/ext/ColorExt.kt
@@ -0,0 +1,10 @@
+package be.ugent.sel.studeez.common.ext
+
+import androidx.compose.ui.graphics.Color
+import kotlin.random.Random
+
+fun Color.Companion.generateRandomArgb(): Long {
+ val random = Random
+ val mask: Long = (0x000000FFL shl random.nextInt(0, 3)).inv()
+ return random.nextLong(0xFF000000L, 0xFFFFFFFFL) and mask
+}
\ No newline at end of file
diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/subjects/form/SubjectFormScreen.kt b/app/src/main/java/be/ugent/sel/studeez/screens/subjects/form/SubjectFormScreen.kt
index 19e6816..b89a851 100644
--- a/app/src/main/java/be/ugent/sel/studeez/screens/subjects/form/SubjectFormScreen.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/screens/subjects/form/SubjectFormScreen.kt
@@ -2,7 +2,9 @@ package be.ugent.sel.studeez.screens.subjects.form
import androidx.annotation.StringRes
import androidx.compose.foundation.layout.Column
-import androidx.compose.material.OutlinedTextField
+import androidx.compose.foundation.shape.RoundedCornerShape
+import androidx.compose.material.Button
+import androidx.compose.material.ButtonDefaults
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
@@ -10,11 +12,14 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
import be.ugent.sel.studeez.common.composable.BasicButton
import be.ugent.sel.studeez.common.composable.DeleteButton
+import be.ugent.sel.studeez.common.composable.LabelledInputField
import be.ugent.sel.studeez.common.composable.SecondaryScreenTemplate
import be.ugent.sel.studeez.common.ext.basicButton
import be.ugent.sel.studeez.common.ext.fieldModifier
+import be.ugent.sel.studeez.common.ext.generateRandomArgb
import be.ugent.sel.studeez.resources
import be.ugent.sel.studeez.R.string as AppText
@@ -31,7 +36,7 @@ fun SubjectCreateRoute(
uiState = uiState,
onConfirm = { viewModel.onCreate(openAndPopUp) },
onNameChange = viewModel::onNameChange,
- onColorChange = {},
+ onColorChange = viewModel::onColorChange,
)
}
@@ -48,7 +53,7 @@ fun SubjectEditRoute(
uiState = uiState,
onConfirm = { viewModel.onEdit(openAndPopUp) },
onNameChange = viewModel::onNameChange,
- onColorChange = {},
+ onColorChange = viewModel::onColorChange,
) {
DeleteButton(text = AppText.delete_subject) {
viewModel.onDelete(openAndPopUp)
@@ -63,7 +68,7 @@ fun SubjectForm(
uiState: SubjectFormUiState,
onConfirm: () -> Unit,
onNameChange: (String) -> Unit,
- onColorChange: (Color) -> Unit,
+ onColorChange: (Long) -> Unit,
extraButton: @Composable () -> Unit = {},
) {
SecondaryScreenTemplate(
@@ -71,13 +76,13 @@ fun SubjectForm(
popUp = goBack,
) {
Column {
- OutlinedTextField(
+ LabelledInputField(
singleLine = true,
value = uiState.name,
- onValueChange = onNameChange,
- placeholder = { Text(stringResource(id = AppText.name)) },
- modifier = Modifier.fieldModifier(),
+ onNewValue = onNameChange,
+ label = AppText.name,
)
+ ColorPicker(onColorChange, uiState)
BasicButton(
text = AppText.confirm,
modifier = Modifier.basicButton(),
@@ -88,6 +93,24 @@ fun SubjectForm(
}
}
+@Composable
+fun ColorPicker(
+ onColorChange: (Long) -> Unit,
+ uiState: SubjectFormUiState,
+) {
+ Button(
+ onClick = { onColorChange(Color.generateRandomArgb()) },
+ modifier = Modifier.fieldModifier(),
+ colors = ButtonDefaults.buttonColors(
+ backgroundColor = Color(uiState.color),
+ contentColor = Color.White,
+ ),
+ shape = RoundedCornerShape(4.dp),
+ ) {
+ Text(text = stringResource(id = AppText.regenerate_color))
+ }
+}
+
@Preview
@Composable
fun AddSubjectFormPreview() {
diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/subjects/form/SubjectFormUiState.kt b/app/src/main/java/be/ugent/sel/studeez/screens/subjects/form/SubjectFormUiState.kt
index 9fdba01..10a18e8 100644
--- a/app/src/main/java/be/ugent/sel/studeez/screens/subjects/form/SubjectFormUiState.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/screens/subjects/form/SubjectFormUiState.kt
@@ -1,6 +1,9 @@
package be.ugent.sel.studeez.screens.subjects.form
+import androidx.compose.ui.graphics.Color
+import be.ugent.sel.studeez.common.ext.generateRandomArgb
+
data class SubjectFormUiState(
val name: String = "",
- val color: Long = 0xFFFFD200,
+ val color: Long = Color.generateRandomArgb(),
)
\ No newline at end of file
diff --git a/app/src/main/java/be/ugent/sel/studeez/screens/subjects/form/SubjectFormViewModel.kt b/app/src/main/java/be/ugent/sel/studeez/screens/subjects/form/SubjectFormViewModel.kt
index 533123b..7847a63 100644
--- a/app/src/main/java/be/ugent/sel/studeez/screens/subjects/form/SubjectFormViewModel.kt
+++ b/app/src/main/java/be/ugent/sel/studeez/screens/subjects/form/SubjectFormViewModel.kt
@@ -2,6 +2,8 @@ package be.ugent.sel.studeez.screens.subjects.form
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
+import androidx.compose.ui.graphics.Color
+import be.ugent.sel.studeez.common.ext.generateRandomArgb
import be.ugent.sel.studeez.data.SelectedSubject
import be.ugent.sel.studeez.data.local.models.task.Subject
import be.ugent.sel.studeez.domain.LogService
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 70c4558..fa27f51 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -46,6 +46,7 @@
Delete Subject
Delete Task
View
+ Regenerate Color
Looks like you found the sessions screen! In here, your upcoming studying sessions with friends will be listed. You can accept invites or edit your own.