replace GetEventsListener with an anonymous callback
This commit is contained in:
parent
6db2db029c
commit
7cd1c0e34b
|
@ -10,10 +10,8 @@ import com.simplemobiletools.calendar.R.id.event_item_holder
|
||||||
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.seconds
|
import com.simplemobiletools.calendar.extensions.seconds
|
||||||
import com.simplemobiletools.calendar.helpers.DBHelper
|
|
||||||
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
||||||
import com.simplemobiletools.calendar.helpers.Formatter
|
import com.simplemobiletools.calendar.helpers.Formatter
|
||||||
import com.simplemobiletools.calendar.models.Event
|
|
||||||
import com.simplemobiletools.calendar.models.ListEvent
|
import com.simplemobiletools.calendar.models.ListEvent
|
||||||
import com.simplemobiletools.calendar.models.ListItem
|
import com.simplemobiletools.calendar.models.ListItem
|
||||||
import com.simplemobiletools.calendar.models.ListSection
|
import com.simplemobiletools.calendar.models.ListSection
|
||||||
|
@ -98,10 +96,9 @@ class EventListWidgetAdapter(val context: Context, val intent: Intent) : RemoteV
|
||||||
override fun onDataSetChanged() {
|
override fun onDataSetChanged() {
|
||||||
val fromTS = DateTime().seconds()
|
val fromTS = DateTime().seconds()
|
||||||
val toTS = DateTime().plusYears(1).seconds()
|
val toTS = DateTime().plusYears(1).seconds()
|
||||||
context.dbHelper.getEventsInBackground(fromTS, toTS, object : DBHelper.GetEventsListener {
|
context.dbHelper.getEventsInBackground(fromTS, toTS) {
|
||||||
override fun gotEvents(events: MutableList<Event>) {
|
val listItems = ArrayList<ListItem>(it.size)
|
||||||
val listItems = ArrayList<ListItem>(events.size)
|
val sorted = it.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { it.description }))
|
||||||
val sorted = events.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { it.description }))
|
|
||||||
val sublist = sorted.subList(0, Math.min(sorted.size, 100))
|
val sublist = sorted.subList(0, Math.min(sorted.size, 100))
|
||||||
var prevCode = ""
|
var prevCode = ""
|
||||||
sublist.forEach {
|
sublist.forEach {
|
||||||
|
@ -117,7 +114,6 @@ class EventListWidgetAdapter(val context: Context, val intent: Intent) : RemoteV
|
||||||
|
|
||||||
this@EventListWidgetAdapter.events = listItems
|
this@EventListWidgetAdapter.events = listItems
|
||||||
}
|
}
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hasStableIds() = true
|
override fun hasStableIds() = true
|
||||||
|
|
|
@ -32,7 +32,7 @@ import kotlinx.android.synthetic.main.top_navigation.view.*
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class DayFragment : Fragment(), DBHelper.EventUpdateListener, DBHelper.GetEventsListener, DeleteEventsListener {
|
class DayFragment : Fragment(), DBHelper.EventUpdateListener, DeleteEventsListener {
|
||||||
private var mTextColor = 0
|
private var mTextColor = 0
|
||||||
private var mDayCode = ""
|
private var mDayCode = ""
|
||||||
private var mListener: NavigationListener? = null
|
private var mListener: NavigationListener? = null
|
||||||
|
@ -112,7 +112,18 @@ class DayFragment : Fragment(), DBHelper.EventUpdateListener, DBHelper.GetEvents
|
||||||
fun checkEvents() {
|
fun checkEvents() {
|
||||||
val startTS = Formatter.getDayStartTS(mDayCode)
|
val startTS = Formatter.getDayStartTS(mDayCode)
|
||||||
val endTS = Formatter.getDayEndTS(mDayCode)
|
val endTS = Formatter.getDayEndTS(mDayCode)
|
||||||
DBHelper.newInstance(context, this).getEvents(startTS, endTS, this)
|
DBHelper.newInstance(context, this).getEvents(startTS, endTS) {
|
||||||
|
receivedEvents(it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun receivedEvents(events: List<Event>) {
|
||||||
|
val sorted = ArrayList<Event>(events.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { it.description })))
|
||||||
|
val filtered = context.getFilteredEvents(sorted)
|
||||||
|
|
||||||
|
activity?.runOnUiThread {
|
||||||
|
updateEvents(filtered)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateEvents(events: List<Event>) {
|
private fun updateEvents(events: List<Event>) {
|
||||||
|
@ -159,11 +170,6 @@ class DayFragment : Fragment(), DBHelper.EventUpdateListener, DBHelper.GetEvents
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun gotEvents(events: MutableList<Event>) {
|
override fun gotEvents(events: MutableList<Event>) {
|
||||||
val sorted = ArrayList<Event>(events.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { it.description })))
|
receivedEvents(events)
|
||||||
val filtered = context.getFilteredEvents(sorted)
|
|
||||||
|
|
||||||
activity?.runOnUiThread {
|
|
||||||
updateEvents(filtered)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ import kotlinx.android.synthetic.main.fragment_event_list.view.*
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class EventListFragment : Fragment(), DBHelper.GetEventsListener, DBHelper.EventUpdateListener, DeleteEventsListener {
|
class EventListFragment : Fragment(), DBHelper.EventUpdateListener, DeleteEventsListener {
|
||||||
private var mEvents: List<Event> = ArrayList()
|
private var mEvents: List<Event> = ArrayList()
|
||||||
private var prevEventsHash = 0
|
private var prevEventsHash = 0
|
||||||
lateinit var mView: View
|
lateinit var mView: View
|
||||||
|
@ -49,10 +49,16 @@ class EventListFragment : Fragment(), DBHelper.GetEventsListener, DBHelper.Event
|
||||||
private fun checkEvents() {
|
private fun checkEvents() {
|
||||||
val fromTS = DateTime().seconds()
|
val fromTS = DateTime().seconds()
|
||||||
val toTS = DateTime().plusYears(1).seconds()
|
val toTS = DateTime().plusYears(1).seconds()
|
||||||
context.dbHelper.getEvents(fromTS, toTS, this)
|
context.dbHelper.getEvents(fromTS, toTS) {
|
||||||
|
receivedEvents(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun gotEvents(events: MutableList<Event>) {
|
override fun gotEvents(events: MutableList<Event>) {
|
||||||
|
receivedEvents(events)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun receivedEvents(events: MutableList<Event>) {
|
||||||
if (context == null || activity == null)
|
if (context == null || activity == null)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -110,7 +116,7 @@ class EventListFragment : Fragment(), DBHelper.GetEventsListener, DBHelper.Event
|
||||||
|
|
||||||
override fun deleteEventOccurrences(parentIds: ArrayList<Int>, timestamps: ArrayList<Int>) {
|
override fun deleteEventOccurrences(parentIds: ArrayList<Int>, timestamps: ArrayList<Int>) {
|
||||||
parentIds.forEachIndexed { index, value ->
|
parentIds.forEachIndexed { index, value ->
|
||||||
context.dbHelper.deleteEventOccurrence(parentIds[index], timestamps[index])
|
context.dbHelper.deleteEventOccurrence(value, timestamps[index])
|
||||||
}
|
}
|
||||||
checkEvents()
|
checkEvents()
|
||||||
}
|
}
|
||||||
|
|
|
@ -353,13 +353,13 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEvents(fromTS: Int, toTS: Int, callback: GetEventsListener?) {
|
fun getEvents(fromTS: Int, toTS: Int, callback: (events: MutableList<Event>) -> Unit) {
|
||||||
Thread({
|
Thread({
|
||||||
getEventsInBackground(fromTS, toTS, callback)
|
getEventsInBackground(fromTS, toTS, callback)
|
||||||
}).start()
|
}).start()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getEventsInBackground(fromTS: Int, toTS: Int, callback: GetEventsListener?) {
|
fun getEventsInBackground(fromTS: Int, toTS: Int, callback: (events: MutableList<Event>) -> Unit) {
|
||||||
val events = ArrayList<Event>()
|
val events = ArrayList<Event>()
|
||||||
|
|
||||||
val selection = "$COL_START_TS <= ? AND $COL_END_TS >= ? AND $COL_REPEAT_INTERVAL IS NULL"
|
val selection = "$COL_START_TS <= ? AND $COL_END_TS >= ? AND $COL_REPEAT_INTERVAL IS NULL"
|
||||||
|
@ -370,7 +370,7 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
||||||
events.addAll(getRepeatableEventsFor(fromTS, toTS))
|
events.addAll(getRepeatableEventsFor(fromTS, toTS))
|
||||||
|
|
||||||
val filtered = events.filterNot { it.ignoreEventOccurrences.contains(it.startTS) } as MutableList<Event>
|
val filtered = events.filterNot { it.ignoreEventOccurrences.contains(it.startTS) } as MutableList<Event>
|
||||||
callback?.gotEvents(filtered)
|
callback(filtered)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getRepeatableEventsFor(fromTS: Int, toTS: Int, getRunningEvents: Boolean = false): List<Event> {
|
private fun getRepeatableEventsFor(fromTS: Int, toTS: Int, getRunningEvents: Boolean = false): List<Event> {
|
||||||
|
@ -541,8 +541,4 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont
|
||||||
|
|
||||||
fun gotEvents(events: MutableList<Event>)
|
fun gotEvents(events: MutableList<Event>)
|
||||||
}
|
}
|
||||||
|
|
||||||
interface GetEventsListener {
|
|
||||||
fun gotEvents(events: MutableList<Event>)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@ import com.simplemobiletools.calendar.models.Event
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context) : DBHelper.GetEventsListener {
|
class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context) {
|
||||||
private val DAYS_CNT = 42
|
private val DAYS_CNT = 42
|
||||||
private val YEAR_PATTERN = "YYYY"
|
private val YEAR_PATTERN = "YYYY"
|
||||||
|
|
||||||
|
@ -30,7 +30,9 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
||||||
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, this)
|
mContext.dbHelper.getEvents(startTS, endTS) {
|
||||||
|
gotEvents(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getPrevMonth() {
|
fun getPrevMonth() {
|
||||||
|
@ -116,7 +118,7 @@ class MonthlyCalendarImpl(val mCallback: MonthlyCalendar, val mContext: Context)
|
||||||
return month
|
return month
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun gotEvents(events: MutableList<Event>) {
|
fun gotEvents(events: MutableList<Event>) {
|
||||||
if (mFilterEventTypes)
|
if (mFilterEventTypes)
|
||||||
mEvents = mContext.getFilteredEvents(events)
|
mEvents = mContext.getFilteredEvents(events)
|
||||||
else
|
else
|
||||||
|
|
|
@ -6,7 +6,7 @@ import com.simplemobiletools.calendar.interfaces.WeeklyCalendar
|
||||||
import com.simplemobiletools.calendar.models.Event
|
import com.simplemobiletools.calendar.models.Event
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class WeeklyCalendarImpl(val mCallback: WeeklyCalendar, val mContext: Context) : DBHelper.GetEventsListener {
|
class WeeklyCalendarImpl(val mCallback: WeeklyCalendar, val mContext: Context) {
|
||||||
var mEvents: List<Event>
|
var mEvents: List<Event>
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
@ -16,11 +16,9 @@ class WeeklyCalendarImpl(val mCallback: WeeklyCalendar, val mContext: Context) :
|
||||||
fun updateWeeklyCalendar(weekStartTS: Int) {
|
fun updateWeeklyCalendar(weekStartTS: Int) {
|
||||||
val startTS = weekStartTS
|
val startTS = weekStartTS
|
||||||
val endTS = startTS + WEEK_SECONDS
|
val endTS = startTS + WEEK_SECONDS
|
||||||
mContext.dbHelper.getEvents(startTS, endTS, this)
|
mContext.dbHelper.getEvents(startTS, endTS) {
|
||||||
|
mEvents = it
|
||||||
|
mCallback.updateWeeklyCalendar(it)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun gotEvents(events: MutableList<Event>) {
|
|
||||||
mEvents = events
|
|
||||||
mCallback.updateWeeklyCalendar(events)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,16 +10,18 @@ import com.simplemobiletools.calendar.models.Event
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class YearlyCalendarImpl(val callback: YearlyCalendar, val context: Context, val year: Int) : DBHelper.GetEventsListener {
|
class YearlyCalendarImpl(val callback: YearlyCalendar, val context: Context, val year: Int) {
|
||||||
|
|
||||||
fun getEvents(year: Int) {
|
fun getEvents(year: Int) {
|
||||||
val startDateTime = DateTime().withTime(0, 0, 0, 0).withDate(year, 1, 1)
|
val startDateTime = DateTime().withTime(0, 0, 0, 0).withDate(year, 1, 1)
|
||||||
val startTS = startDateTime.seconds()
|
val startTS = startDateTime.seconds()
|
||||||
val endTS = startDateTime.plusYears(1).minusSeconds(1).seconds()
|
val endTS = startDateTime.plusYears(1).minusSeconds(1).seconds()
|
||||||
context.dbHelper.getEvents(startTS, endTS, this)
|
context.dbHelper.getEvents(startTS, endTS) {
|
||||||
|
gotEvents(it)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun gotEvents(events: MutableList<Event>) {
|
fun gotEvents(events: MutableList<Event>) {
|
||||||
val filtered = context.getFilteredEvents(events)
|
val filtered = context.getFilteredEvents(events)
|
||||||
val arr = SparseArray<ArrayList<Int>>(12)
|
val arr = SparseArray<ArrayList<Int>>(12)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue