get the upcoming events for the list widget

This commit is contained in:
tibbi
2016-11-28 22:33:54 +01:00
parent cc53dd0c12
commit 42747a5914

View File

@@ -11,10 +11,17 @@ import android.graphics.Color
import android.widget.RemoteViews import android.widget.RemoteViews
import com.simplemobiletools.calendar.R import com.simplemobiletools.calendar.R
import com.simplemobiletools.calendar.activities.DayActivity import com.simplemobiletools.calendar.activities.DayActivity
import com.simplemobiletools.calendar.adapters.EventListWidgetAdapter
import com.simplemobiletools.calendar.extensions.adjustAlpha import com.simplemobiletools.calendar.extensions.adjustAlpha
import com.simplemobiletools.calendar.models.Day import com.simplemobiletools.calendar.models.Event
import com.simplemobiletools.calendar.models.ListEvent
import com.simplemobiletools.calendar.models.ListItem
import com.simplemobiletools.calendar.models.ListSection
import org.joda.time.DateTime
import java.util.*
import kotlin.comparisons.compareBy
class MyWidgetListProvider : AppWidgetProvider() { class MyWidgetListProvider : AppWidgetProvider(), DBHelper.GetEventsListener {
companion object { companion object {
private var mTextColor = 0 private var mTextColor = 0
@@ -51,12 +58,10 @@ class MyWidgetListProvider : AppWidgetProvider() {
private fun updateWidget() { private fun updateWidget() {
val thisWidget = ComponentName(mContext, MyWidgetListProvider::class.java) val thisWidget = ComponentName(mContext, MyWidgetListProvider::class.java)
AppWidgetManager.getInstance(mContext).updateAppWidget(thisWidget, mRemoteViews) AppWidgetManager.getInstance(mContext).updateAppWidget(thisWidget, mRemoteViews)
}
private fun setupIntent(action: String, id: Int) { val fromTS = (DateTime().millis / 1000).toInt()
mIntent.action = action val toTS = (DateTime().plusMonths(6).millis / 1000).toInt()
val pendingIntent = PendingIntent.getBroadcast(mContext, 0, mIntent, 0) DBHelper(mContext).getEvents(fromTS, toTS, this)
mRemoteViews.setOnClickPendingIntent(id, pendingIntent)
} }
private fun setupDayOpenIntent(id: Int, dayCode: String) { private fun setupDayOpenIntent(id: Int, dayCode: String) {
@@ -69,9 +74,20 @@ class MyWidgetListProvider : AppWidgetProvider() {
private fun initPrefs(context: Context) = context.getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE) private fun initPrefs(context: Context) = context.getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE)
fun updateDays(days: List<Day>) { override fun gotEvents(events: MutableList<Event>) {
val displayWeekNumbers = Config.newInstance(mContext).displayWeekNumbers val listItems = ArrayList<ListItem>(events.size)
val len = days.size val sorted = events.sortedWith(compareBy({ it.startTS }, { it.endTS }, { it.title }, { it.description }))
val packageName = mContext.packageName var prevCode = ""
sorted.forEach {
val code = Formatter.getDayCodeFromTS(it.startTS)
if (code != prevCode) {
val day = Formatter.getDayTitle(mContext, code)
listItems.add(ListSection(day))
prevCode = code
}
listItems.add(ListEvent(it.id, it.startTS, it.endTS, it.title, it.description))
}
val eventsAdapter = EventListWidgetAdapter(mContext, listItems)
} }
} }