From 369317e2e6f66c357bd3dd50cea981171fe62061 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 25 Mar 2018 22:42:49 +0200 Subject: [PATCH] limit the max amount of events per day shown on the monthly view --- .../com/simplemobiletools/calendar/views/MonthView.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/views/MonthView.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/views/MonthView.kt index 85bb498c6..f352ab546 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/views/MonthView.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/views/MonthView.kt @@ -38,6 +38,8 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con private var eventTitleHeight = 0 private var currDayOfWeek = 0 private var smallPadding = 0 + private var availableHeightForEvents = 0 + private var maxEventsPerDay = 0 private var bgRectF = RectF() private var dayLetters = ArrayList() private var days = ArrayList() @@ -88,6 +90,8 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con if (dayHeight == 0f) { dayHeight = (canvas.height - weekDaysLetterHeight) / ROW_COUNT.toFloat() + availableHeightForEvents = dayHeight.toInt() - weekDaysLetterHeight + maxEventsPerDay = availableHeightForEvents / eventTitleHeight } // week day letters @@ -103,6 +107,7 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con var curId = 0 for (y in 0 until ROW_COUNT) { for (x in 0..6) { + var shownDayEvents = 0 val day = days.getOrNull(curId) if (day != null) { dayVerticalOffsets.put(day.indexOnMonthView, dayVerticalOffsets[day.indexOnMonthView] + weekDaysLetterHeight) @@ -115,6 +120,10 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con canvas.drawText(day.value.toString(), xPosCenter, yPos + paint.textSize, getTextPaint(day)) day.dayEvents.forEach { + if (shownDayEvents >= maxEventsPerDay) { + return@forEach + } + val verticalOffset = dayVerticalOffsets[day.indexOnMonthView] val startDateTime = Formatter.getDateTimeFromTS(it.startTS) @@ -134,6 +143,7 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con drawEventTitle(it.title, canvas, xPos, yPos + verticalOffset, it.color, daysCnt) dayVerticalOffsets.put(day.indexOnMonthView, verticalOffset + eventTitleHeight + smallPadding * 2) + shownDayEvents++ } } curId++