mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
color the dot at day events list as appropriate
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package com.simplemobiletools.calendar.adapters
|
package com.simplemobiletools.calendar.adapters
|
||||||
|
|
||||||
|
import android.graphics.Color
|
||||||
|
import android.graphics.PorterDuff
|
||||||
import android.support.v7.view.ActionMode
|
import android.support.v7.view.ActionMode
|
||||||
import android.support.v7.widget.RecyclerView
|
import android.support.v7.widget.RecyclerView
|
||||||
import android.view.*
|
import android.view.*
|
||||||
@@ -115,12 +117,13 @@ class DayEventsAdapter(val activity: SimpleActivity, val mItems: List<Event>, va
|
|||||||
|
|
||||||
class ViewHolder(val activity: SimpleActivity, view: View, val itemClick: (Event) -> (Unit)) : SwappingHolder(view, MultiSelector()) {
|
class ViewHolder(val activity: SimpleActivity, view: View, val itemClick: (Event) -> (Unit)) : SwappingHolder(view, MultiSelector()) {
|
||||||
fun bindView(multiSelectorCallback: ModalMultiSelectorCallback, multiSelector: MultiSelector, event: Event, pos: Int): View {
|
fun bindView(multiSelectorCallback: ModalMultiSelectorCallback, multiSelector: MultiSelector, event: Event, pos: Int): View {
|
||||||
|
|
||||||
itemView.apply {
|
itemView.apply {
|
||||||
event_item_title.text = event.title
|
event_item_title.text = event.title
|
||||||
event_item_description.text = event.description
|
event_item_description.text = event.description
|
||||||
event_item_start.text = if (event.getIsAllDay()) allDayString else Formatter.getTimeFromTS(context, event.startTS)
|
event_item_start.text = if (event.getIsAllDay()) allDayString else Formatter.getTimeFromTS(context, event.startTS)
|
||||||
event_item_end.beInvisibleIf(event.startTS == event.endTS)
|
event_item_end.beInvisibleIf(event.startTS == event.endTS)
|
||||||
|
event_item_color.setColorFilter(event.color, PorterDuff.Mode.SRC_IN)
|
||||||
|
|
||||||
toggleItemSelection(this, markedItems.contains(pos), pos)
|
toggleItemSelection(this, markedItems.contains(pos), pos)
|
||||||
|
|
||||||
if (event.startTS != event.endTS) {
|
if (event.startTS != event.endTS) {
|
||||||
|
@@ -746,6 +746,11 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||||||
COL_IS_DST_INCLUDED, COL_LAST_UPDATED, COL_EVENT_SOURCE)
|
COL_IS_DST_INCLUDED, COL_LAST_UPDATED, COL_EVENT_SOURCE)
|
||||||
|
|
||||||
private fun fillEvents(cursor: Cursor?): List<Event> {
|
private fun fillEvents(cursor: Cursor?): List<Event> {
|
||||||
|
val eventTypeColors = SparseIntArray()
|
||||||
|
val eventTypes = fetchEventTypes().forEach {
|
||||||
|
eventTypeColors.put(it.id, it.color)
|
||||||
|
}
|
||||||
|
|
||||||
val events = ArrayList<Event>()
|
val events = ArrayList<Event>()
|
||||||
try {
|
try {
|
||||||
if (cursor != null && cursor.moveToFirst()) {
|
if (cursor != null && cursor.moveToFirst()) {
|
||||||
@@ -768,11 +773,12 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||||||
val isDstIncluded = cursor.getIntValue(COL_IS_DST_INCLUDED) == 1
|
val isDstIncluded = cursor.getIntValue(COL_IS_DST_INCLUDED) == 1
|
||||||
val lastUpdated = cursor.getLongValue(COL_LAST_UPDATED)
|
val lastUpdated = cursor.getLongValue(COL_LAST_UPDATED)
|
||||||
val source = cursor.getStringValue(COL_EVENT_SOURCE)
|
val source = cursor.getStringValue(COL_EVENT_SOURCE)
|
||||||
|
val color = eventTypeColors[eventType]
|
||||||
|
|
||||||
val ignoreEventOccurrences = if (repeatInterval != 0) {
|
val ignoreEventOccurrences = if (repeatInterval != 0) {
|
||||||
getIgnoredOccurrences(id)
|
getIgnoredOccurrences(id)
|
||||||
} else {
|
} else {
|
||||||
ArrayList<Int>()
|
ArrayList()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (repeatInterval > 0 && repeatInterval % MONTH == 0 && repeatRule == 0) {
|
if (repeatInterval > 0 && repeatInterval % MONTH == 0 && repeatRule == 0) {
|
||||||
@@ -781,7 +787,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
|||||||
|
|
||||||
val event = Event(id, startTS, endTS, title, description, reminder1Minutes, reminder2Minutes, reminder3Minutes,
|
val event = Event(id, startTS, endTS, title, description, reminder1Minutes, reminder2Minutes, reminder3Minutes,
|
||||||
repeatInterval, importId, flags, repeatLimit, repeatRule, eventType, ignoreEventOccurrences, offset, isDstIncluded,
|
repeatInterval, importId, flags, repeatLimit, repeatRule, eventType, ignoreEventOccurrences, offset, isDstIncluded,
|
||||||
0, lastUpdated, source)
|
0, lastUpdated, source, color)
|
||||||
events.add(event)
|
events.add(event)
|
||||||
} while (cursor.moveToNext())
|
} while (cursor.moveToNext())
|
||||||
}
|
}
|
||||||
|
@@ -1,7 +1,6 @@
|
|||||||
package com.simplemobiletools.calendar.helpers
|
package com.simplemobiletools.calendar.helpers
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.SparseIntArray
|
|
||||||
import com.simplemobiletools.calendar.extensions.config
|
import com.simplemobiletools.calendar.extensions.config
|
||||||
import com.simplemobiletools.calendar.extensions.dbHelper
|
import com.simplemobiletools.calendar.extensions.dbHelper
|
||||||
import com.simplemobiletools.calendar.extensions.getFilteredEvents
|
import com.simplemobiletools.calendar.extensions.getFilteredEvents
|
||||||
@@ -17,22 +16,18 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
|||||||
private val YEAR_PATTERN = "YYYY"
|
private val YEAR_PATTERN = "YYYY"
|
||||||
|
|
||||||
private val mToday: String = DateTime().toString(Formatter.DAYCODE_PATTERN)
|
private val mToday: String = DateTime().toString(Formatter.DAYCODE_PATTERN)
|
||||||
var mEvents: List<Event>
|
var mEvents = ArrayList<Event>()
|
||||||
var mFilterEventTypes = true
|
var mFilterEventTypes = true
|
||||||
|
|
||||||
lateinit var mTargetDate: DateTime
|
lateinit var mTargetDate: DateTime
|
||||||
|
|
||||||
init {
|
|
||||||
mEvents = ArrayList<Event>()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun updateMonthlyCalendar(targetDate: DateTime, filterEventTypes: Boolean = true) {
|
fun updateMonthlyCalendar(targetDate: DateTime, filterEventTypes: Boolean = true) {
|
||||||
mFilterEventTypes = filterEventTypes
|
mFilterEventTypes = filterEventTypes
|
||||||
mTargetDate = targetDate
|
mTargetDate = targetDate
|
||||||
val startTS = mTargetDate.minusMonths(1).seconds()
|
val startTS = mTargetDate.minusMonths(1).seconds()
|
||||||
val endTS = mTargetDate.plusMonths(1).seconds()
|
val endTS = mTargetDate.plusMonths(1).seconds()
|
||||||
mContext.dbHelper.getEvents(startTS, endTS) {
|
mContext.dbHelper.getEvents(startTS, endTS) {
|
||||||
gotEvents(it)
|
gotEvents(it as ArrayList<Event>)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,7 +67,7 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
|||||||
|
|
||||||
val newDay = curDay.withDayOfMonth(value)
|
val newDay = curDay.withDayOfMonth(value)
|
||||||
val dayCode = Formatter.getDayCodeFromDateTime(newDay)
|
val dayCode = Formatter.getDayCodeFromDateTime(newDay)
|
||||||
val day = Day(value, isThisMonth, isToday, dayCode, false, newDay.weekOfWeekyear, ArrayList<Int>())
|
val day = Day(value, isThisMonth, isToday, dayCode, false, newDay.weekOfWeekyear, ArrayList())
|
||||||
days.add(day)
|
days.add(day)
|
||||||
value++
|
value++
|
||||||
}
|
}
|
||||||
@@ -84,11 +79,6 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
|||||||
private fun markDaysWithEvents(days: ArrayList<Day>) {
|
private fun markDaysWithEvents(days: ArrayList<Day>) {
|
||||||
mContext.dbHelper.getEventTypes {
|
mContext.dbHelper.getEventTypes {
|
||||||
val dayEvents = HashMap<String, ArrayList<Event>>()
|
val dayEvents = HashMap<String, ArrayList<Event>>()
|
||||||
val eventTypeColors = SparseIntArray()
|
|
||||||
it.forEach {
|
|
||||||
eventTypeColors.put(it.id, it.color)
|
|
||||||
}
|
|
||||||
|
|
||||||
mEvents.forEach {
|
mEvents.forEach {
|
||||||
val startDateTime = Formatter.getDateTimeFromTS(it.startTS)
|
val startDateTime = Formatter.getDateTimeFromTS(it.startTS)
|
||||||
val endDateTime = Formatter.getDateTimeFromTS(it.endTS)
|
val endDateTime = Formatter.getDateTimeFromTS(it.endTS)
|
||||||
@@ -96,13 +86,13 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
|||||||
|
|
||||||
var currDay = startDateTime
|
var currDay = startDateTime
|
||||||
var dayCode = Formatter.getDayCodeFromDateTime(currDay)
|
var dayCode = Formatter.getDayCodeFromDateTime(currDay)
|
||||||
var currDayEvents = (dayEvents[dayCode] ?: ArrayList<Event>()).apply { add(it) }
|
var currDayEvents = (dayEvents[dayCode] ?: ArrayList()).apply { add(it) }
|
||||||
dayEvents.put(dayCode, currDayEvents)
|
dayEvents.put(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<Event>()).apply { add(it) }
|
currDayEvents = (dayEvents[dayCode] ?: ArrayList()).apply { add(it) }
|
||||||
dayEvents.put(dayCode, currDayEvents)
|
dayEvents.put(dayCode, currDayEvents)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -113,7 +103,7 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
|||||||
|
|
||||||
val events = dayEvents[it.code]
|
val events = dayEvents[it.code]
|
||||||
events!!.forEach {
|
events!!.forEach {
|
||||||
day.eventColors.add(eventTypeColors[it.eventType])
|
day.eventColors.add(it.color)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mCallback.updateMonthlyCalendar(monthName, days)
|
mCallback.updateMonthlyCalendar(monthName, days)
|
||||||
@@ -137,11 +127,11 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
|||||||
return month
|
return month
|
||||||
}
|
}
|
||||||
|
|
||||||
fun gotEvents(events: MutableList<Event>) {
|
private fun gotEvents(events: ArrayList<Event>) {
|
||||||
if (mFilterEventTypes)
|
mEvents = if (mFilterEventTypes)
|
||||||
mEvents = mContext.getFilteredEvents(events)
|
mContext.getFilteredEvents(events) as ArrayList<Event>
|
||||||
else
|
else
|
||||||
mEvents = events
|
events
|
||||||
|
|
||||||
getDays()
|
getDays()
|
||||||
}
|
}
|
||||||
|
@@ -12,7 +12,7 @@ data class Event(var id: Int = 0, var startTS: Int = 0, var endTS: Int = 0, var
|
|||||||
var importId: String = "", var flags: Int = 0, var repeatLimit: Int = 0, var repeatRule: Int = 0,
|
var importId: String = "", var flags: Int = 0, var repeatLimit: Int = 0, var repeatRule: Int = 0,
|
||||||
var eventType: Int = DBHelper.REGULAR_EVENT_TYPE_ID, var ignoreEventOccurrences: ArrayList<Int> = ArrayList(),
|
var eventType: Int = DBHelper.REGULAR_EVENT_TYPE_ID, var ignoreEventOccurrences: ArrayList<Int> = ArrayList(),
|
||||||
var offset: String = "", var isDstIncluded: Boolean = false, var parentId: Int = 0, var lastUpdated: Long = 0L,
|
var offset: String = "", var isDstIncluded: Boolean = false, var parentId: Int = 0, var lastUpdated: Long = 0L,
|
||||||
var source: String = SOURCE_SIMPLE_CALENDAR) : Serializable {
|
var source: String = SOURCE_SIMPLE_CALENDAR, var color: Int = 0) : Serializable {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val serialVersionUID = -32456795132345616L
|
private val serialVersionUID = -32456795132345616L
|
||||||
|
Reference in New Issue
Block a user