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