Skip to content

Commit 21a5c99

Browse files
committed
fix #269, allow using different colors per widget
1 parent 93c6079 commit 21a5c99

File tree

3 files changed

+17
-11
lines changed

3 files changed

+17
-11
lines changed

app/src/main/kotlin/com/simplemobiletools/notes/pro/adapters/WidgetAdapter.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import com.google.gson.reflect.TypeToken
1111
import com.simplemobiletools.commons.extensions.adjustAlpha
1212
import com.simplemobiletools.commons.extensions.setText
1313
import com.simplemobiletools.commons.extensions.setTextSize
14+
import com.simplemobiletools.commons.helpers.WIDGET_TEXT_COLOR
1415
import com.simplemobiletools.notes.pro.R
1516
import com.simplemobiletools.notes.pro.R.id.checklist_title
1617
import com.simplemobiletools.notes.pro.R.id.widget_text_holder
@@ -23,7 +24,7 @@ import com.simplemobiletools.notes.pro.models.Note
2324

2425
class WidgetAdapter(val context: Context, val intent: Intent) : RemoteViewsService.RemoteViewsFactory {
2526
private val textIds = arrayOf(R.id.widget_text_left, R.id.widget_text_center, R.id.widget_text_right)
26-
private var widgetTextColor = context.config.widgetTextColor
27+
private var widgetTextColor = DEFAULT_WIDGET_TEXT_COLOR
2728
private var note: Note? = null
2829
private var checklistItems = ArrayList<ChecklistItem>()
2930

@@ -87,7 +88,7 @@ class WidgetAdapter(val context: Context, val intent: Intent) : RemoteViewsServi
8788
override fun getItemId(position: Int) = position.toLong()
8889

8990
override fun onDataSetChanged() {
90-
widgetTextColor = context.config.widgetTextColor
91+
widgetTextColor = intent.getIntExtra(WIDGET_TEXT_COLOR, DEFAULT_WIDGET_TEXT_COLOR)
9192
val noteId = intent.getLongExtra(NOTE_ID, 0L)
9293
note = context.notesDB.getNoteWithId(noteId)
9394
if (note?.type == TYPE_CHECKLIST) {

app/src/main/kotlin/com/simplemobiletools/notes/pro/helpers/MyWidgetProvider.kt

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import android.net.Uri
99
import android.widget.RemoteViews
1010
import com.simplemobiletools.commons.extensions.getLaunchIntent
1111
import com.simplemobiletools.commons.extensions.setBackgroundColor
12+
import com.simplemobiletools.commons.helpers.WIDGET_TEXT_COLOR
1213
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
1314
import com.simplemobiletools.notes.pro.R
1415
import com.simplemobiletools.notes.pro.activities.SplashActivity
15-
import com.simplemobiletools.notes.pro.extensions.config
1616
import com.simplemobiletools.notes.pro.extensions.widgetsDB
1717
import com.simplemobiletools.notes.pro.models.Widget
1818
import com.simplemobiletools.notes.pro.services.WidgetService
@@ -28,24 +28,26 @@ class MyWidgetProvider : AppWidgetProvider() {
2828
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
2929
super.onUpdate(context, appWidgetManager, appWidgetIds)
3030
ensureBackgroundThread {
31-
context.widgetsDB.getWidgets().forEach {
31+
for (widgetId in appWidgetIds) {
32+
val widget = context.widgetsDB.getWidgetWithWidgetId(widgetId) ?: continue
3233
val views = RemoteViews(context.packageName, R.layout.widget)
33-
views.setBackgroundColor(R.id.notes_widget_holder, context.config.widgetBgColor)
34-
setupAppOpenIntent(context, views, R.id.notes_widget_holder, it)
34+
views.setBackgroundColor(R.id.notes_widget_holder, widget.widgetBgColor)
35+
setupAppOpenIntent(context, views, R.id.notes_widget_holder, widget)
3536

3637
Intent(context, WidgetService::class.java).apply {
37-
putExtra(NOTE_ID, it.noteId)
38+
putExtra(NOTE_ID, widget.noteId)
39+
putExtra(WIDGET_TEXT_COLOR, widget.widgetTextColor)
3840
data = Uri.parse(this.toUri(Intent.URI_INTENT_SCHEME))
3941
views.setRemoteAdapter(R.id.notes_widget_listview, this)
4042
}
4143

4244
val startActivityIntent = context.getLaunchIntent() ?: Intent(context, SplashActivity::class.java)
43-
startActivityIntent.putExtra(OPEN_NOTE_ID, it.noteId)
44-
val startActivityPendingIntent = PendingIntent.getActivity(context, it.widgetId, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT)
45+
startActivityIntent.putExtra(OPEN_NOTE_ID, widget.noteId)
46+
val startActivityPendingIntent = PendingIntent.getActivity(context, widgetId, startActivityIntent, PendingIntent.FLAG_UPDATE_CURRENT)
4547
views.setPendingIntentTemplate(R.id.notes_widget_listview, startActivityPendingIntent)
4648

47-
appWidgetManager.updateAppWidget(it.widgetId, views)
48-
appWidgetManager.notifyAppWidgetViewDataChanged(it.widgetId, R.id.notes_widget_listview)
49+
appWidgetManager.updateAppWidget(widgetId, views)
50+
appWidgetManager.notifyAppWidgetViewDataChanged(widgetId, R.id.notes_widget_listview)
4951
}
5052
}
5153
}

app/src/main/kotlin/com/simplemobiletools/notes/pro/interfaces/WidgetsDao.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ interface WidgetsDao {
1111
@Query("SELECT * FROM widgets")
1212
fun getWidgets(): List<Widget>
1313

14+
@Query("SELECT * FROM widgets WHERE widget_id = :widgetId")
15+
fun getWidgetWithWidgetId(widgetId: Int): Widget?
16+
1417
@Insert(onConflict = OnConflictStrategy.REPLACE)
1518
fun insertOrUpdate(widget: Widget): Long
1619

0 commit comments

Comments
 (0)