mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
get the upcoming events for the list widget
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user