worked on trackers screen

This commit is contained in:
Clara Dautermann 2025-06-04 00:07:08 +02:00
parent 70acdc756a
commit 50fba5f697
Signed by: clara
GPG key ID: 223391B52FAD4463
6 changed files with 135 additions and 71 deletions

View file

@ -23,7 +23,6 @@ import androidx.compose.material.icons.filled.Add
import androidx.compose.material.icons.filled.CalendarMonth
import androidx.compose.material.icons.filled.ChevronLeft
import androidx.compose.material.icons.filled.ChevronRight
import androidx.compose.material.icons.filled.DataExploration
import androidx.compose.material.icons.filled.RemoveRedEye
import androidx.compose.material3.Button
import androidx.compose.material3.Card
@ -32,7 +31,6 @@ import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.VerticalDivider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
@ -48,14 +46,17 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.em
import de.cdaut.dbtapp.R
import de.cdaut.dbtapp.model.TherapyAssignment
import de.cdaut.dbtapp.model.TherapyAssignment.Companion.mockTherapyAssignments
import de.cdaut.dbtapp.model.Tracker
import de.cdaut.dbtapp.model.Tracker.Companion.mockTrackers
import de.cdaut.dbtapp.util.weekdayListByLocale
import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.time.format.FormatStyle
import java.time.temporal.WeekFields
@Preview
@Preview(device = "id:pixel_6")
@Composable
fun TrackingScreen() {
Column(
@ -63,6 +64,8 @@ fun TrackingScreen() {
.fillMaxWidth()
.fillMaxHeight()
.background(MaterialTheme.colorScheme.background),
//TODO: Scrolling is fucked up
//.verticalScroll(rememberScrollState()),
horizontalAlignment = Alignment.CenterHorizontally
) {
Column(
@ -77,23 +80,14 @@ fun TrackingScreen() {
Spacer(modifier = Modifier.height(10.dp))
Row(
modifier = Modifier
.fillMaxWidth()
.background(
color = MaterialTheme.colorScheme.primary,
shape = CircleShape
),
.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween
horizontalArrangement = Arrangement.SpaceEvenly
) {
Row(
modifier = Modifier
.padding(10.dp)
.padding(horizontal = 10.dp, vertical = 0.dp)
.clickable(onClick = {
Button(
onClick = {
//TODO: Add tracker
}),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Start
}
) {
Icon(
Icons.Filled.Add,
@ -106,20 +100,11 @@ fun TrackingScreen() {
color = MaterialTheme.colorScheme.onPrimary
)
}
VerticalDivider(
modifier = Modifier
.fillMaxHeight(0.1f)
.padding(5.dp)
)
Row(
modifier = Modifier
.padding(10.dp)
.padding(horizontal = 10.dp, vertical = 0.dp)
.clickable(onClick = {
//TODO: Add tracker
}),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Start
Button(
onClick = {
//TODO: View statistics
}
) {
Text(
modifier = Modifier.padding(horizontal = 5.dp),
@ -144,7 +129,29 @@ fun TrackingScreen() {
Text(stringResource(R.string.btn_add_diarycard))
}
Spacer(modifier = Modifier.height(10.dp))
TitledListCard(stringResource(R.string.card_therapy_hw_heading))
TitledListCard<TherapyAssignment>(
stringResource(R.string.card_therapy_hw_heading),
rows = {
//TODO: This can probably be typed better…
assignments ->
TherapyAssignmentCardContent(assignments)
},
addAction = {
//TODO: Add Therapy assignment
},
items = mockTherapyAssignments()
)
Spacer(modifier = Modifier.height(10.dp))
TitledListCard<Tracker>(
stringResource(R.string.tracker_card_title),
rows = { trackers -> OtherTrackersCardContent(trackers = trackers) },
addAction = {
//TODO: Add new tracker
},
items = mockTrackers()
)
}
}
@ -237,7 +244,7 @@ private fun TopCalendar() {
}
@Composable
fun CalendarDaysGrid(selectedDateMut: MutableState<LocalDate>) {
private fun CalendarDaysGrid(selectedDateMut: MutableState<LocalDate>) {
val locale = LocalConfiguration.current.locales[0]
val selectedDate = selectedDateMut.value
@ -297,7 +304,12 @@ fun CalendarDaysGrid(selectedDateMut: MutableState<LocalDate>) {
}
@Composable
fun TitledListCard(title: String) {
private fun <T> TitledListCard(
title: String,
rows: @Composable Function1<List<T>, Unit>,
addAction: () -> Unit,
items: List<T>
) {
Card(
modifier = Modifier.fillMaxWidth()
) {
@ -317,15 +329,20 @@ fun TitledListCard(title: String) {
modifier = Modifier
.size(30.dp)
.clip(CircleShape)
.clickable(onClick = {
//TODO: Add Therapiehausaufgabe
}),
.clickable(onClick = addAction),
imageVector = Icons.Filled.Add,
contentDescription = "TODO: Provide"
)
}
HorizontalDivider()
for (assignment in mockTherapyAssignments()) {
rows(items)
}
}
}
@Composable
private fun TherapyAssignmentCardContent(assignments: List<TherapyAssignment>) {
for (assignment in assignments) {
Row(
modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically,
@ -352,5 +369,29 @@ fun TitledListCard(title: String) {
}
}
}
@Composable
private fun OtherTrackersCardContent(trackers: List<Tracker>) {
for (tracker in trackers) {
Row(
modifier = Modifier
.fillMaxWidth()
.padding(5.dp),
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween,
) {
Column {
Text(
modifier = Modifier.padding(horizontal = 10.dp, vertical = 0.dp),
text = tracker.title,
style = MaterialTheme.typography.bodyMedium
)
Text(
modifier = Modifier.padding(horizontal = 10.dp, vertical = 0.dp),
text = tracker.description,
style = MaterialTheme.typography.bodySmall
)
}
}
}
}

View file

@ -11,7 +11,7 @@ import java.util.UUID
@Entity
class Skill(
@PrimaryKey val identifier: UUID,
@PrimaryKey val identifier: UUID = UUID.randomUUID(),
@ColumnInfo(name = "title") val title: String,
@ColumnInfo(name = "description") val description: String
) {
@ -21,17 +21,14 @@ class Skill(
fun mockSkills(): List<Skill> {
return listOf(
Skill(
identifier = UUID.randomUUID(),
title = "Test Hallo :3",
description = "lorem ipsum dolor sid amnet consequetur blabla yada yada"
),
Skill(
identifier = UUID.randomUUID(),
title = "5-4-3-2-1",
description = "Hier kurz beschreiben wie die Übung funktioniert. Ggf. mehrere Zeilen aber nicht super lang"
),
Skill(
identifier = UUID.randomUUID(),
title = "UwU UwU awawawa",
description = "Just arf a little like the good fopsgirl you are :3"
)

View file

@ -7,7 +7,7 @@ import java.util.UUID
@Entity
class TherapyAssignment(
@PrimaryKey val identifier: UUID,
@PrimaryKey val identifier: UUID = UUID.randomUUID(),
@ColumnInfo(name = "title") val title: String,
@ColumnInfo(name = "description") val description: String,
@ColumnInfo(name = "done") var done: Boolean
@ -17,13 +17,11 @@ class TherapyAssignment(
fun mockTherapyAssignments(): List<TherapyAssignment> {
return listOf(
TherapyAssignment(
identifier = UUID.randomUUID(),
title = "Selbstfürsorge",
description = "Mir selbst eine gute Sache tun",
done = false
done = true
),
TherapyAssignment(
identifier = UUID.randomUUID(),
title = "Bedürfnis durchsetzen",
description = "Eine Sache durchsetzen, die mir schwer fällt",
done = false

View file

@ -0,0 +1,26 @@
package de.cdaut.dbtapp.model
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
import java.util.UUID
@Entity
class Tracker(
@PrimaryKey val identifier: UUID = UUID.randomUUID(),
@ColumnInfo(name = "title") val title: String,
@ColumnInfo(name = "description") val description: String
) {
companion object {
fun mockTrackers(): List<Tracker> {
return listOf(
Tracker(
title = "Stimmung",
description = "Deine aktuelle Stimmung"
)
)
}
}
}

View file

@ -13,4 +13,5 @@
<string name="card_therapy_hw_heading">Therapiehausaufgaben</string>
<string name="add_trackter">Tracker hinzufügen</string>
<string name="view_stats">Statistiken</string>
<string name="tracker_card_title">Tracker</string>
</resources>

View file

@ -12,4 +12,5 @@
<string name="card_therapy_hw_heading">Therapy Assignments</string>
<string name="add_trackter">Add Tracker</string>
<string name="view_stats">View Statistics</string>
<string name="tracker_card_title">Trackers</string>
</resources>