From 21a5c99315415ae23e7f24e4eed11849a407c915 Mon Sep 17 00:00:00 2001 From: tibbi Date: Mon, 19 Aug 2019 23:24:47 +0200 Subject: [PATCH] fix #269, allow using different colors per widget --- .../notes/pro/adapters/WidgetAdapter.kt | 5 +++-- .../notes/pro/helpers/MyWidgetProvider.kt | 20 ++++++++++--------- .../notes/pro/interfaces/WidgetsDao.kt | 3 +++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt index d8be1b15..8af6c80a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt @@ -11,6 +11,7 @@ import com.google.gson.reflect.TypeToken import com.simplemobiletools.commons.extensions.adjustAlpha import com.simplemobiletools.commons.extensions.setText import com.simplemobiletools.commons.extensions.setTextSize +import com.simplemobiletools.commons.helpers.WIDGET_TEXT_COLOR import com.simplemobiletools.notes.pro.R import com.simplemobiletools.notes.pro.R.id.checklist_title import com.simplemobiletools.notes.pro.R.id.widget_text_holder @@ -23,7 +24,7 @@ import com.simplemobiletools.notes.pro.models.Note class WidgetAdapter(val context: Context, val intent: Intent) : RemoteViewsService.RemoteViewsFactory { private val textIds = arrayOf(R.id.widget_text_left, R.id.widget_text_center, R.id.widget_text_right) - private var widgetTextColor = context.config.widgetTextColor + private var widgetTextColor = DEFAULT_WIDGET_TEXT_COLOR private var note: Note? = null private var checklistItems = ArrayList() @@ -87,7 +88,7 @@ class WidgetAdapter(val context: Context, val intent: Intent) : RemoteViewsServi override fun getItemId(position: Int) = position.toLong() override fun onDataSetChanged() { - widgetTextColor = context.config.widgetTextColor + widgetTextColor = intent.getIntExtra(WIDGET_TEXT_COLOR, DEFAULT_WIDGET_TEXT_COLOR) val noteId = intent.getLongExtra(NOTE_ID, 0L) note = context.notesDB.getNoteWithId(noteId) if (note?.type == TYPE_CHECKLIST) { diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/MyWidgetProvider.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/MyWidgetProvider.kt index a02969d7..bb72530f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/MyWidgetProvider.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/MyWidgetProvider.kt @@ -9,10 +9,10 @@ import android.net.Uri import android.widget.RemoteViews import com.simplemobiletools.commons.extensions.getLaunchIntent import com.simplemobiletools.commons.extensions.setBackgroundColor +import com.simplemobiletools.commons.helpers.WIDGET_TEXT_COLOR import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.notes.pro.R import com.simplemobiletools.notes.pro.activities.SplashActivity -import com.simplemobiletools.notes.pro.extensions.config import com.simplemobiletools.notes.pro.extensions.widgetsDB import com.simplemobiletools.notes.pro.models.Widget import com.simplemobiletools.notes.pro.services.WidgetService @@ -28,24 +28,26 @@ class MyWidgetProvider : AppWidgetProvider() { override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) { super.onUpdate(context, appWidgetManager, appWidgetIds) ensureBackgroundThread { - context.widgetsDB.getWidgets().forEach { + for (widgetId in appWidgetIds) { + val widget = context.widgetsDB.getWidgetWithWidgetId(widgetId) ?: continue val views = RemoteViews(context.packageName, R.layout.widget) - views.setBackgroundColor(R.id.notes_widget_holder, context.config.widgetBgColor) - setupAppOpenIntent(context, views, R.id.notes_widget_holder, it) + views.setBackgroundColor(R.id.notes_widget_holder, widget.widgetBgColor) + setupAppOpenIntent(context, views, R.id.notes_widget_holder, widget) Intent(context, WidgetService::class.java).apply { - putExtra(NOTE_ID, it.noteId) + putExtra(NOTE_ID, widget.noteId) + putExtra(WIDGET_TEXT_COLOR, widget.widgetTextColor) data = Uri.parse(this.toUri(Intent.URI_INTENT_SCHEME)) views.setRemoteAdapter(R.id.notes_widget_listview, this) } val startActivityIntent = context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java) - startActivityIntent.putExtra(OPEN_NOTE_ID, it.noteId) - val startActivityPendingIntent = PendingIntent.getActivity(context, it.widgetId, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT) + startActivityIntent.putExtra(OPEN_NOTE_ID, widget.noteId) + val startActivityPendingIntent = PendingIntent.getActivity(context, widgetId, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT) views.setPendingIntentTemplate(R.id.notes_widget_listview, startActivityPendingIntent) - appWidgetManager.updateAppWidget(it.widgetId, views) - appWidgetManager.notifyAppWidgetViewDataChanged(it.widgetId, R.id.notes_widget_listview) + appWidgetManager.updateAppWidget(widgetId, views) + appWidgetManager.notifyAppWidgetViewDataChanged(widgetId, R.id.notes_widget_listview) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/WidgetsDao.kt b/app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/WidgetsDao.kt index c3a6f9cc..8b7dbd30 100644 --- a/app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/WidgetsDao.kt +++ b/app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/WidgetsDao.kt @@ -11,6 +11,9 @@ interface WidgetsDao { @Query("SELECT * FROM widgets") fun getWidgets(): List + @Query("SELECT * FROM widgets WHERE widget_id = :widgetId") + fun getWidgetWithWidgetId(widgetId: Int): Widget? + @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertOrUpdate(widget: Widget): Long