commit 1ed51dcac6b1607aecdaf0ebf5c8c43f9f015fc8
parent 89e94050c7136a09de5d6ad2e92d1fb2bd08b5d2
Author: MTRNord <MTRNord@users.noreply.github.com>
Date: Wed, 30 Jul 2025 00:15:29 +0200
Move assignColums out
Diffstat:
1 file changed, 27 insertions(+), 26 deletions(-)
diff --git a/app/src/main/java/space/midnightthoughts/nordiccalendar/screens/CalendarScreen.kt b/app/src/main/java/space/midnightthoughts/nordiccalendar/screens/CalendarScreen.kt
@@ -167,6 +167,26 @@ fun CalendarScreen(
}
}
+fun assignColumns(events: List<Event>): List<Triple<Event, Int, Int>> {
+ val sorted = events.sortedBy { it.startTime }
+ val active = mutableListOf<Pair<Event, Int>>() // Event, column
+ val result =
+ mutableListOf<Triple<Event, Int, Int>>() // Event, column, maxColumns
+ for (event in sorted) {
+ // Entferne abgelaufene Events
+ active.removeAll { it.first.endTime <= event.startTime }
+ // Finde freie Spalte
+ val usedColumns = active.map { it.second }.toSet()
+ val col =
+ (0..active.size).firstOrNull { it !in usedColumns } ?: active.size
+ active.add(event to col)
+ // maxColumns = aktuelle Anzahl aktiver Events
+ val maxColumns = active.size
+ result.add(Triple(event, col, maxColumns))
+ }
+ return result
+}
+
@SuppressLint("UnusedBoxWithConstraintsScope")
@Composable
fun DayView(
@@ -175,7 +195,7 @@ fun DayView(
) {
val events = remember(calendarViewModel) {
calendarViewModel.events
- }.collectAsState(initial = emptyList())
+ }.collectAsState()
val hourHeightDp = 64.dp
val timeColumnWidth = 64.dp
@@ -206,6 +226,12 @@ fun DayView(
modifier = Modifier
.fillMaxSize()
.verticalScroll(scrollState)
+ .semantics {
+ collectionInfo = CollectionInfo(
+ rowCount = events.value.size,
+ columnCount = 1,
+ )
+ }
) {
val maxWidthPx = with(density) { maxWidth.toPx() }
val lineThickness = 4.dp
@@ -214,12 +240,6 @@ fun DayView(
Column(
modifier = Modifier
.fillMaxWidth()
- .semantics {
- collectionInfo = CollectionInfo(
- rowCount = events.value.size,
- columnCount = 1,
- )
- }
) {
for (hour in 0..24) { // Bis einschließlich 24, um 00:00 am Folgetag anzuzeigen
Row(
@@ -238,25 +258,6 @@ fun DayView(
}
}
}
- fun assignColumns(events: List<Event>): List<Triple<Event, Int, Int>> {
- val sorted = events.sortedBy { it.startTime }
- val active = mutableListOf<Pair<Event, Int>>() // Event, column
- val result =
- mutableListOf<Triple<Event, Int, Int>>() // Event, column, maxColumns
- for (event in sorted) {
- // Entferne abgelaufene Events
- active.removeAll { it.first.endTime <= event.startTime }
- // Finde freie Spalte
- val usedColumns = active.map { it.second }.toSet()
- val col =
- (0..active.size).firstOrNull { it !in usedColumns } ?: active.size
- active.add(event to col)
- // maxColumns = aktuelle Anzahl aktiver Events
- val maxColumns = active.size
- result.add(Triple(event, col, maxColumns))
- }
- return result
- }
val eventColumns = assignColumns(events.value)
eventColumns.forEach { (event, col, maxColumns) ->