some cleanup around widgetProvider

This commit is contained in:
tibbi 2018-09-13 23:02:40 +02:00
parent ce7485fa85
commit 10a4695062

View File

@ -13,13 +13,14 @@ import com.simplemobiletools.notes.R
import com.simplemobiletools.notes.activities.SplashActivity import com.simplemobiletools.notes.activities.SplashActivity
import com.simplemobiletools.notes.extensions.config import com.simplemobiletools.notes.extensions.config
import com.simplemobiletools.notes.extensions.dbHelper import com.simplemobiletools.notes.extensions.dbHelper
import com.simplemobiletools.notes.models.Widget
import com.simplemobiletools.notes.services.WidgetService import com.simplemobiletools.notes.services.WidgetService
class MyWidgetProvider : AppWidgetProvider() { class MyWidgetProvider : AppWidgetProvider() {
private fun setupAppOpenIntent(context: Context, views: RemoteViews, id: Int, noteId: Int) { private fun setupAppOpenIntent(context: Context, views: RemoteViews, id: Int, widget: Widget) {
val intent = context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java) val intent = context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java)
intent.putExtra(OPEN_NOTE_ID, noteId) intent.putExtra(OPEN_NOTE_ID, widget.noteId)
val pendingIntent = PendingIntent.getActivity(context, noteId, intent, PendingIntent.FLAG_UPDATE_CURRENT) val pendingIntent = PendingIntent.getActivity(context, widget.widgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT)
views.setOnClickPendingIntent(id, pendingIntent) views.setOnClickPendingIntent(id, pendingIntent)
} }
@ -27,25 +28,23 @@ class MyWidgetProvider : AppWidgetProvider() {
super.onUpdate(context, appWidgetManager, appWidgetIds) super.onUpdate(context, appWidgetManager, appWidgetIds)
val widgets = context.dbHelper.getWidgets() val widgets = context.dbHelper.getWidgets()
widgets.forEach { widgets.forEach {
val widgetId = it.widgetId
val noteId = it.noteId
val views = RemoteViews(context.packageName, R.layout.widget) val views = RemoteViews(context.packageName, R.layout.widget)
views.setBackgroundColor(R.id.notes_widget_holder, context.config.widgetBgColor) views.setBackgroundColor(R.id.notes_widget_holder, context.config.widgetBgColor)
setupAppOpenIntent(context, views, R.id.notes_widget_holder, noteId) setupAppOpenIntent(context, views, R.id.notes_widget_holder, it)
Intent(context, WidgetService::class.java).apply { Intent(context, WidgetService::class.java).apply {
putExtra(NOTE_ID, noteId) putExtra(NOTE_ID, it.noteId)
data = Uri.parse(this.toUri(Intent.URI_INTENT_SCHEME)) data = Uri.parse(this.toUri(Intent.URI_INTENT_SCHEME))
views.setRemoteAdapter(R.id.notes_widget_listview, this) views.setRemoteAdapter(R.id.notes_widget_listview, this)
} }
val startActivityIntent = context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java) val startActivityIntent = context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java)
startActivityIntent.putExtra(OPEN_NOTE_ID, noteId) startActivityIntent.putExtra(OPEN_NOTE_ID, it.noteId)
val startActivityPendingIntent = PendingIntent.getActivity(context, widgetId, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT) val startActivityPendingIntent = PendingIntent.getActivity(context, it.widgetId, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT)
views.setPendingIntentTemplate(R.id.notes_widget_listview, startActivityPendingIntent) views.setPendingIntentTemplate(R.id.notes_widget_listview, startActivityPendingIntent)
appWidgetManager.updateAppWidget(widgetId, views) appWidgetManager.updateAppWidget(it.widgetId, views)
appWidgetManager.notifyAppWidgetViewDataChanged(widgetId, R.id.notes_widget_listview) appWidgetManager.notifyAppWidgetViewDataChanged(it.widgetId, R.id.notes_widget_listview)
} }
} }
} }