mirror of
https://github.com/SimpleMobileTools/Simple-Calendar.git
synced 2025-06-05 21:59:17 +02:00
properly update the list widget when needed
This commit is contained in:
@ -12,7 +12,7 @@ import com.simplemobiletools.calendar.R
|
|||||||
import com.simplemobiletools.calendar.adapters.MyMonthPagerAdapter
|
import com.simplemobiletools.calendar.adapters.MyMonthPagerAdapter
|
||||||
import com.simplemobiletools.calendar.adapters.MyYearPagerAdapter
|
import com.simplemobiletools.calendar.adapters.MyYearPagerAdapter
|
||||||
import com.simplemobiletools.calendar.dialogs.ChangeViewDialog
|
import com.simplemobiletools.calendar.dialogs.ChangeViewDialog
|
||||||
import com.simplemobiletools.calendar.extensions.updateWidget
|
import com.simplemobiletools.calendar.extensions.updateWidgets
|
||||||
import com.simplemobiletools.calendar.fragments.EventListFragment
|
import com.simplemobiletools.calendar.fragments.EventListFragment
|
||||||
import com.simplemobiletools.calendar.helpers.*
|
import com.simplemobiletools.calendar.helpers.*
|
||||||
import com.simplemobiletools.calendar.helpers.Formatter
|
import com.simplemobiletools.calendar.helpers.Formatter
|
||||||
@ -39,7 +39,7 @@ class MainActivity : SimpleActivity(), EventListFragment.DeleteListener {
|
|||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
updateWidget()
|
updateWidgets()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
override fun onPause() {
|
||||||
|
@ -77,7 +77,6 @@ class EventListWidgetAdapter(val context: Context, val intent: Intent) : RemoteV
|
|||||||
override fun getViewTypeCount() = 2
|
override fun getViewTypeCount() = 2
|
||||||
|
|
||||||
override fun onCreate() {
|
override fun onCreate() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemId(position: Int) = position.toLong()
|
override fun getItemId(position: Int) = position.toLong()
|
||||||
|
@ -12,17 +12,30 @@ import com.simplemobiletools.calendar.helpers.*
|
|||||||
import com.simplemobiletools.calendar.models.Event
|
import com.simplemobiletools.calendar.models.Event
|
||||||
import com.simplemobiletools.calendar.receivers.NotificationReceiver
|
import com.simplemobiletools.calendar.receivers.NotificationReceiver
|
||||||
|
|
||||||
fun Context.updateWidget() {
|
fun Context.updateWidgets() {
|
||||||
val widgetsCnt = AppWidgetManager.getInstance(this).getAppWidgetIds(ComponentName(this, MyWidgetMonthlyProvider::class.java))
|
val widgetsCnt = AppWidgetManager.getInstance(this).getAppWidgetIds(ComponentName(this, MyWidgetMonthlyProvider::class.java))
|
||||||
if (widgetsCnt.isEmpty())
|
if (widgetsCnt.isNotEmpty()) {
|
||||||
return
|
|
||||||
|
|
||||||
val ids = intArrayOf(R.xml.widget_monthly_info)
|
val ids = intArrayOf(R.xml.widget_monthly_info)
|
||||||
Intent(this, MyWidgetMonthlyProvider::class.java).apply {
|
Intent(this, MyWidgetMonthlyProvider::class.java).apply {
|
||||||
action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
|
action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
|
||||||
putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids)
|
putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids)
|
||||||
sendBroadcast(this)
|
sendBroadcast(this)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
updateListWidget()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Context.updateListWidget() {
|
||||||
|
val widgetsCnt = AppWidgetManager.getInstance(this).getAppWidgetIds(ComponentName(this, MyWidgetListProvider::class.java))
|
||||||
|
if (widgetsCnt.isNotEmpty()) {
|
||||||
|
val ids = intArrayOf(R.xml.widget_list_info)
|
||||||
|
Intent(this, MyWidgetListProvider::class.java).apply {
|
||||||
|
action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
|
||||||
|
putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids)
|
||||||
|
sendBroadcast(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Context.scheduleNextEvent(event: Event) {
|
fun Context.scheduleNextEvent(event: Event) {
|
||||||
|
@ -9,7 +9,7 @@ import android.database.sqlite.SQLiteQueryBuilder
|
|||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import com.simplemobiletools.calendar.extensions.getIntValue
|
import com.simplemobiletools.calendar.extensions.getIntValue
|
||||||
import com.simplemobiletools.calendar.extensions.getStringValue
|
import com.simplemobiletools.calendar.extensions.getStringValue
|
||||||
import com.simplemobiletools.calendar.extensions.updateWidget
|
import com.simplemobiletools.calendar.extensions.updateWidgets
|
||||||
import com.simplemobiletools.calendar.models.Event
|
import com.simplemobiletools.calendar.models.Event
|
||||||
import org.joda.time.DateTime
|
import org.joda.time.DateTime
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -79,7 +79,7 @@ class DBHelper(context: Context) : SQLiteOpenHelper(context, DB_NAME, null, DB_V
|
|||||||
mDb.insert(META_TABLE_NAME, null, metaValues)
|
mDb.insert(META_TABLE_NAME, null, metaValues)
|
||||||
}
|
}
|
||||||
|
|
||||||
context?.updateWidget()
|
context?.updateWidgets()
|
||||||
mEventsListener?.eventInserted(event)
|
mEventsListener?.eventInserted(event)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ class DBHelper(context: Context) : SQLiteOpenHelper(context, DB_NAME, null, DB_V
|
|||||||
mDb.insertWithOnConflict(META_TABLE_NAME, null, metaValues, SQLiteDatabase.CONFLICT_REPLACE)
|
mDb.insertWithOnConflict(META_TABLE_NAME, null, metaValues, SQLiteDatabase.CONFLICT_REPLACE)
|
||||||
}
|
}
|
||||||
|
|
||||||
context?.updateWidget()
|
context?.updateWidgets()
|
||||||
mEventsListener?.eventUpdated(event)
|
mEventsListener?.eventUpdated(event)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ class DBHelper(context: Context) : SQLiteOpenHelper(context, DB_NAME, null, DB_V
|
|||||||
val metaSelection = "$COL_EVENT_ID IN ($args)"
|
val metaSelection = "$COL_EVENT_ID IN ($args)"
|
||||||
mDb.delete(META_TABLE_NAME, metaSelection, null)
|
mDb.delete(META_TABLE_NAME, metaSelection, null)
|
||||||
|
|
||||||
context?.updateWidget()
|
context?.updateWidgets()
|
||||||
mEventsListener?.eventsDeleted(ids.size)
|
mEventsListener?.eventsDeleted(ids.size)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@ import com.simplemobiletools.calendar.activities.EventActivity
|
|||||||
import com.simplemobiletools.calendar.extensions.adjustAlpha
|
import com.simplemobiletools.calendar.extensions.adjustAlpha
|
||||||
import com.simplemobiletools.calendar.services.WidgetService
|
import com.simplemobiletools.calendar.services.WidgetService
|
||||||
|
|
||||||
|
|
||||||
class MyWidgetListProvider : AppWidgetProvider() {
|
class MyWidgetListProvider : AppWidgetProvider() {
|
||||||
companion object {
|
companion object {
|
||||||
private var mTextColor = 0
|
private var mTextColor = 0
|
||||||
@ -48,16 +47,18 @@ class MyWidgetListProvider : AppWidgetProvider() {
|
|||||||
val bgColor = prefs.getInt(WIDGET_BG_COLOR, Color.BLACK)
|
val bgColor = prefs.getInt(WIDGET_BG_COLOR, Color.BLACK)
|
||||||
mRemoteViews.setInt(R.id.widget_event_list, "setBackgroundColor", bgColor)
|
mRemoteViews.setInt(R.id.widget_event_list, "setBackgroundColor", bgColor)
|
||||||
|
|
||||||
val intent = Intent(context, WidgetService::class.java)
|
Intent(context, WidgetService::class.java).apply {
|
||||||
intent.data = Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME))
|
data = Uri.parse(this.toUri(Intent.URI_INTENT_SCHEME))
|
||||||
mRemoteViews.setRemoteAdapter(R.id.widget_event_list, intent)
|
mRemoteViews.setRemoteAdapter(R.id.widget_event_list, this)
|
||||||
|
}
|
||||||
|
|
||||||
val startActivityIntent = Intent(context, EventActivity::class.java)
|
val startActivityIntent = Intent(context, EventActivity::class.java)
|
||||||
val startActivityPendingIntent = PendingIntent.getActivity(context, 0, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
val startActivityPendingIntent = PendingIntent.getActivity(context, 0, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||||
mRemoteViews.setPendingIntentTemplate(R.id.widget_event_list, startActivityPendingIntent)
|
mRemoteViews.setPendingIntentTemplate(R.id.widget_event_list, startActivityPendingIntent)
|
||||||
|
|
||||||
val thisWidget = ComponentName(mContext, MyWidgetListProvider::class.java)
|
val appWidgetIds = mWidgetManager.getAppWidgetIds(ComponentName(context, MyWidgetListProvider::class.java))
|
||||||
mWidgetManager.updateAppWidget(thisWidget, mRemoteViews)
|
mWidgetManager.updateAppWidget(appWidgetIds, mRemoteViews)
|
||||||
|
mWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.widget_event_list)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initPrefs(context: Context) = context.getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE)
|
private fun initPrefs(context: Context) = context.getSharedPreferences(PREFS_KEY, Context.MODE_PRIVATE)
|
||||||
|
@ -10,6 +10,7 @@ import android.media.RingtoneManager
|
|||||||
import com.simplemobiletools.calendar.R
|
import com.simplemobiletools.calendar.R
|
||||||
import com.simplemobiletools.calendar.activities.EventActivity
|
import com.simplemobiletools.calendar.activities.EventActivity
|
||||||
import com.simplemobiletools.calendar.extensions.scheduleNextEvent
|
import com.simplemobiletools.calendar.extensions.scheduleNextEvent
|
||||||
|
import com.simplemobiletools.calendar.extensions.updateListWidget
|
||||||
import com.simplemobiletools.calendar.helpers.Config
|
import com.simplemobiletools.calendar.helpers.Config
|
||||||
import com.simplemobiletools.calendar.helpers.DBHelper
|
import com.simplemobiletools.calendar.helpers.DBHelper
|
||||||
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
import com.simplemobiletools.calendar.helpers.EVENT_ID
|
||||||
@ -18,6 +19,7 @@ import com.simplemobiletools.calendar.models.Event
|
|||||||
|
|
||||||
class NotificationReceiver : BroadcastReceiver() {
|
class NotificationReceiver : BroadcastReceiver() {
|
||||||
override fun onReceive(context: Context, intent: Intent) {
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
|
context.updateListWidget()
|
||||||
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
|
||||||
val id = intent.getIntExtra(EVENT_ID, -1)
|
val id = intent.getIntExtra(EVENT_ID, -1)
|
||||||
if (id == -1)
|
if (id == -1)
|
||||||
|
@ -6,4 +6,4 @@
|
|||||||
android:minWidth="@dimen/min_widget_width"
|
android:minWidth="@dimen/min_widget_width"
|
||||||
android:previewImage="@mipmap/widget_preview"
|
android:previewImage="@mipmap/widget_preview"
|
||||||
android:resizeMode="horizontal|vertical"
|
android:resizeMode="horizontal|vertical"
|
||||||
android:updatePeriodMillis="150000"/>
|
android:updatePeriodMillis="600000"/>
|
||||||
|
Reference in New Issue
Block a user