mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
Misc code cleaning, readability improvements
This commit is contained in:
@@ -2,4 +2,4 @@ package com.simplemobiletools.calendar.pro.extensions
|
|||||||
|
|
||||||
import android.util.Range
|
import android.util.Range
|
||||||
|
|
||||||
fun Range<Int>.touch(other: Range<Int>) = (upper >= other.lower && lower <= other.upper) || (other.upper >= lower && other.lower <= upper)
|
fun Range<Int>.intersects(other: Range<Int>) = (upper >= other.lower && lower <= other.upper) || (other.upper >= lower && other.lower <= upper)
|
||||||
|
@@ -35,6 +35,9 @@ import kotlinx.android.synthetic.main.week_event_marker.view.*
|
|||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import org.joda.time.Days
|
import org.joda.time.Days
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
import kotlin.math.max
|
||||||
|
import kotlin.math.min
|
||||||
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
class WeekFragment : Fragment(), WeeklyCalendar {
|
class WeekFragment : Fragment(), WeeklyCalendar {
|
||||||
private val WEEKLY_EVENT_ID_LABEL = "event_id_label"
|
private val WEEKLY_EVENT_ID_LABEL = "event_id_label"
|
||||||
@@ -132,7 +135,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val initialScrollY = (rowHeight * config.startWeeklyAt).toInt()
|
val initialScrollY = (rowHeight * config.startWeeklyAt).toInt()
|
||||||
updateScrollY(Math.max(listener?.getCurrScrollY() ?: 0, initialScrollY))
|
updateScrollY(max(listener?.getCurrScrollY() ?: 0, initialScrollY))
|
||||||
}
|
}
|
||||||
|
|
||||||
wasFragmentInit = true
|
wasFragmentInit = true
|
||||||
@@ -361,7 +364,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
prevScaleSpanY = detector.currentSpanY
|
prevScaleSpanY = detector.currentSpanY
|
||||||
|
|
||||||
val wantedFactor = config.weeklyViewItemHeightMultiplier - (SCALE_RANGE * percent)
|
val wantedFactor = config.weeklyViewItemHeightMultiplier - (SCALE_RANGE * percent)
|
||||||
var newFactor = Math.max(Math.min(wantedFactor, MAX_SCALE_FACTOR), MIN_SCALE_FACTOR)
|
var newFactor = max(min(wantedFactor, MAX_SCALE_FACTOR), MIN_SCALE_FACTOR)
|
||||||
if (scrollView.height > defaultRowHeight * newFactor * 24) {
|
if (scrollView.height > defaultRowHeight * newFactor * 24) {
|
||||||
newFactor = scrollView.height / 24f / defaultRowHeight
|
newFactor = scrollView.height / 24f / defaultRowHeight
|
||||||
}
|
}
|
||||||
@@ -422,7 +425,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
rowHeight = context?.getWeeklyViewItemHeight() ?: return
|
rowHeight = context?.getWeeklyViewItemHeight() ?: return
|
||||||
|
|
||||||
val oneDp = res.getDimension(R.dimen.one_dp).toInt()
|
val oneDp = res.getDimension(R.dimen.one_dp).toInt()
|
||||||
val fullHeight = Math.max(rowHeight.toInt() * 24, scrollView.height + oneDp)
|
val fullHeight = max(rowHeight.toInt() * 24, scrollView.height + oneDp)
|
||||||
scrollView.layoutParams.height = fullHeight - oneDp
|
scrollView.layoutParams.height = fullHeight - oneDp
|
||||||
mView.week_horizontal_grid_holder.layoutParams.height = fullHeight
|
mView.week_horizontal_grid_holder.layoutParams.height = fullHeight
|
||||||
mView.week_events_columns_holder.layoutParams.height = fullHeight
|
mView.week_events_columns_holder.layoutParams.height = fullHeight
|
||||||
@@ -440,7 +443,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
|
|
||||||
val minuteHeight = rowHeight / 60
|
val minuteHeight = rowHeight / 60
|
||||||
val minimalHeight = res.getDimension(R.dimen.weekly_view_minimal_event_height).toInt()
|
val minimalHeight = res.getDimension(R.dimen.weekly_view_minimal_event_height).toInt()
|
||||||
val density = Math.round(res.displayMetrics.density)
|
val density = res.displayMetrics.density.roundToInt()
|
||||||
|
|
||||||
for (event in events) {
|
for (event in events) {
|
||||||
val startDateTime = Formatter.getDateTimeFromTS(event.startTS)
|
val startDateTime = Formatter.getDateTimeFromTS(event.startTS)
|
||||||
@@ -493,7 +496,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
eventsCollisionChecked.add(eventId)
|
eventsCollisionChecked.add(eventId)
|
||||||
val eventWeeklyViewsToCheck = eventDayList.filter { !eventsCollisionChecked.contains(it.key) }
|
val eventWeeklyViewsToCheck = eventDayList.filter { !eventsCollisionChecked.contains(it.key) }
|
||||||
for ((toCheckId, eventWeeklyViewToCheck) in eventWeeklyViewsToCheck) {
|
for ((toCheckId, eventWeeklyViewToCheck) in eventWeeklyViewsToCheck) {
|
||||||
val areTouching = eventWeeklyView.range.touch(eventWeeklyViewToCheck.range)
|
val areTouching = eventWeeklyView.range.intersects(eventWeeklyViewToCheck.range)
|
||||||
val doHaveCommonMinutes = if (areTouching) {
|
val doHaveCommonMinutes = if (areTouching) {
|
||||||
eventWeeklyView.range.upper > eventWeeklyViewToCheck.range.lower || (eventWeeklyView.range.lower == eventWeeklyView.range.upper &&
|
eventWeeklyView.range.upper > eventWeeklyViewToCheck.range.lower || (eventWeeklyView.range.lower == eventWeeklyView.range.upper &&
|
||||||
eventWeeklyView.range.upper == eventWeeklyViewToCheck.range.lower)
|
eventWeeklyView.range.upper == eventWeeklyViewToCheck.range.lower)
|
||||||
@@ -507,7 +510,7 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
val slotRange = Array(eventWeeklyView.slot_max) { it + 1 }
|
val slotRange = Array(eventWeeklyView.slot_max) { it + 1 }
|
||||||
val collisionEventWeeklyViews = eventDayList.filter { eventWeeklyView.collisions.contains(it.key) }
|
val collisionEventWeeklyViews = eventDayList.filter { eventWeeklyView.collisions.contains(it.key) }
|
||||||
for ((_, collisionEventWeeklyView) in collisionEventWeeklyViews) {
|
for ((_, collisionEventWeeklyView) in collisionEventWeeklyViews) {
|
||||||
if (collisionEventWeeklyView.range.touch(eventWeeklyViewToCheck.range)) {
|
if (collisionEventWeeklyView.range.intersects(eventWeeklyViewToCheck.range)) {
|
||||||
slotRange[collisionEventWeeklyView.slot - 1] = nextSlot
|
slotRange[collisionEventWeeklyView.slot - 1] = nextSlot
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -723,8 +726,8 @@ class WeekFragment : Fragment(), WeeklyCalendar {
|
|||||||
val startDateTime = Formatter.getDateTimeFromTS(event.startTS)
|
val startDateTime = Formatter.getDateTimeFromTS(event.startTS)
|
||||||
val endDateTime = Formatter.getDateTimeFromTS(event.endTS)
|
val endDateTime = Formatter.getDateTimeFromTS(event.endTS)
|
||||||
|
|
||||||
val minTS = Math.max(startDateTime.seconds(), weekTimestamp)
|
val minTS = max(startDateTime.seconds(), weekTimestamp)
|
||||||
val maxTS = Math.min(endDateTime.seconds(), weekTimestamp + 2 * WEEK_SECONDS)
|
val maxTS = min(endDateTime.seconds(), weekTimestamp + 2 * WEEK_SECONDS)
|
||||||
|
|
||||||
// fix a visual glitch with all-day events or events lasting multiple days starting at midnight on monday, being shown the previous week too
|
// fix a visual glitch with all-day events or events lasting multiple days starting at midnight on monday, being shown the previous week too
|
||||||
if (minTS == maxTS && (minTS - weekTimestamp == WEEK_SECONDS.toLong())) {
|
if (minTS == maxTS && (minTS - weekTimestamp == WEEK_SECONDS.toLong())) {
|
||||||
|
@@ -8,8 +8,7 @@ import com.simplemobiletools.calendar.pro.interfaces.MonthlyCalendar
|
|||||||
import com.simplemobiletools.calendar.pro.models.DayMonthly
|
import com.simplemobiletools.calendar.pro.models.DayMonthly
|
||||||
import com.simplemobiletools.calendar.pro.models.Event
|
import com.simplemobiletools.calendar.pro.models.Event
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import java.util.*
|
import kotlin.math.min
|
||||||
import kotlin.collections.ArrayList
|
|
||||||
|
|
||||||
class MonthlyCalendarImpl(val callback: MonthlyCalendar, val context: Context) {
|
class MonthlyCalendarImpl(val callback: MonthlyCalendar, val context: Context) {
|
||||||
private val DAYS_CNT = 42
|
private val DAYS_CNT = 42
|
||||||
@@ -83,25 +82,25 @@ class MonthlyCalendarImpl(val callback: MonthlyCalendar, val context: Context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// it works more often than not, dont touch
|
// it works more often than not, don't touch
|
||||||
private fun markDaysWithEvents(days: ArrayList<DayMonthly>) {
|
private fun markDaysWithEvents(days: ArrayList<DayMonthly>) {
|
||||||
val dayEvents = HashMap<String, ArrayList<Event>>()
|
val dayEvents = HashMap<String, ArrayList<Event>>()
|
||||||
mEvents.forEach {
|
mEvents.forEach { event ->
|
||||||
val startDateTime = Formatter.getDateTimeFromTS(it.startTS)
|
val startDateTime = Formatter.getDateTimeFromTS(event.startTS)
|
||||||
val endDateTime = Formatter.getDateTimeFromTS(it.endTS)
|
val endDateTime = Formatter.getDateTimeFromTS(event.endTS)
|
||||||
val endCode = Formatter.getDayCodeFromDateTime(endDateTime)
|
val endCode = Formatter.getDayCodeFromDateTime(endDateTime)
|
||||||
|
|
||||||
var currDay = startDateTime
|
var currDay = startDateTime
|
||||||
var dayCode = Formatter.getDayCodeFromDateTime(currDay)
|
var dayCode = Formatter.getDayCodeFromDateTime(currDay)
|
||||||
var currDayEvents = dayEvents[dayCode] ?: ArrayList()
|
var currDayEvents = dayEvents[dayCode] ?: ArrayList()
|
||||||
currDayEvents.add(it)
|
currDayEvents.add(event)
|
||||||
dayEvents[dayCode] = currDayEvents
|
dayEvents[dayCode] = currDayEvents
|
||||||
|
|
||||||
while (Formatter.getDayCodeFromDateTime(currDay) != endCode) {
|
while (Formatter.getDayCodeFromDateTime(currDay) != endCode) {
|
||||||
currDay = currDay.plusDays(1)
|
currDay = currDay.plusDays(1)
|
||||||
dayCode = Formatter.getDayCodeFromDateTime(currDay)
|
dayCode = Formatter.getDayCodeFromDateTime(currDay)
|
||||||
currDayEvents = dayEvents[dayCode] ?: ArrayList()
|
currDayEvents = dayEvents[dayCode] ?: ArrayList()
|
||||||
currDayEvents.add(it)
|
currDayEvents.add(event)
|
||||||
dayEvents[dayCode] = currDayEvents
|
dayEvents[dayCode] = currDayEvents
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -114,7 +113,7 @@ class MonthlyCalendarImpl(val callback: MonthlyCalendar, val context: Context) {
|
|||||||
|
|
||||||
private fun isToday(targetDate: DateTime, curDayInMonth: Int): Boolean {
|
private fun isToday(targetDate: DateTime, curDayInMonth: Int): Boolean {
|
||||||
val targetMonthDays = targetDate.dayOfMonth().maximumValue
|
val targetMonthDays = targetDate.dayOfMonth().maximumValue
|
||||||
return targetDate.withDayOfMonth(Math.min(curDayInMonth, targetMonthDays)).toString(Formatter.DAYCODE_PATTERN) == mToday
|
return targetDate.withDayOfMonth(min(curDayInMonth, targetMonthDays)).toString(Formatter.DAYCODE_PATTERN) == mToday
|
||||||
}
|
}
|
||||||
|
|
||||||
private val monthName: String
|
private val monthName: String
|
||||||
|
@@ -23,6 +23,8 @@ import com.simplemobiletools.commons.helpers.LOWER_ALPHA
|
|||||||
import com.simplemobiletools.commons.helpers.MEDIUM_ALPHA
|
import com.simplemobiletools.commons.helpers.MEDIUM_ALPHA
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import org.joda.time.Days
|
import org.joda.time.Days
|
||||||
|
import kotlin.math.max
|
||||||
|
import kotlin.math.min
|
||||||
|
|
||||||
// used in the Monthly view fragment, 1 view per screen
|
// used in the Monthly view fragment, 1 view per screen
|
||||||
class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(context, attrs, defStyle) {
|
class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(context, attrs, defStyle) {
|
||||||
@@ -255,8 +257,8 @@ class MonthView(context: Context, attrs: AttributeSet, defStyle: Int) : View(con
|
|||||||
|
|
||||||
private fun drawEvent(event: MonthViewEvent, canvas: Canvas) {
|
private fun drawEvent(event: MonthViewEvent, canvas: Canvas) {
|
||||||
var verticalOffset = 0
|
var verticalOffset = 0
|
||||||
for (i in 0 until Math.min(event.daysCnt, 7 - event.startDayIndex % 7)) {
|
for (i in 0 until min(event.daysCnt, 7 - event.startDayIndex % 7)) {
|
||||||
verticalOffset = Math.max(verticalOffset, dayVerticalOffsets[event.startDayIndex + i])
|
verticalOffset = max(verticalOffset, dayVerticalOffsets[event.startDayIndex + i])
|
||||||
}
|
}
|
||||||
val xPos = event.startDayIndex % 7 * dayWidth + horizontalOffset
|
val xPos = event.startDayIndex % 7 * dayWidth + horizontalOffset
|
||||||
val yPos = (event.startDayIndex / 7) * dayHeight
|
val yPos = (event.startDayIndex / 7) * dayHeight
|
||||||
|
Reference in New Issue
Block a user