Pith - wedge_android
wedge_android/app/src/main/java/com/vgmlr/wedge/WedgeWidget.kt [2.9 kb]
Modified: 23:08:23 55 026 (13 May 026)
17 Days Ago
package com.vgmlr.wedge

import android.app.PendingIntent
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.widget.RemoteViews
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.flow.firstOrNull
import androidx.core.graphics.toColorInt
import androidx.core.net.toUri

class NoteWidgetProvider : AppWidgetProvider() {

    override fun onUpdate(
        context: Context,
        appWidgetManager: AppWidgetManager,
        appWidgetIds: IntArray
    ) {
        val prefs = PreferenceManager(context)

        CoroutineScope(Dispatchers.IO).launch {
            val bgColor = prefs.widgetBgColor.firstOrNull() ?: "#000000"

            for (appWidgetId in appWidgetIds) {
                val views = RemoteViews(context.packageName, R.layout.widget_layout)

                val serviceIntent = Intent(context, WedgeWidgetService::class.java).apply {
                    putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId)
                    data = this.toUri(Intent.URI_INTENT_SCHEME).toUri()
                }

                @Suppress("DEPRECATION")
                views.setRemoteAdapter(R.id.widget_list, serviceIntent)

                val clickIntent = Intent(context, MainActivity::class.java)
                val clickPI = PendingIntent.getActivity(
                    context, 0, clickIntent,
                    PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_MUTABLE
                )
                views.setPendingIntentTemplate(R.id.widget_list, clickPI)

                try {
                    views.setInt(R.id.widget_root, "setBackgroundColor", bgColor.toColorInt())
                } catch (_: Exception) {
                    views.setInt(R.id.widget_root, "setBackgroundColor", "#000000".toColorInt())
                }

                @Suppress("DEPRECATION")
                appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetId, R.id.widget_list)

                appWidgetManager.updateAppWidget(appWidgetId, views)
            }
        }
    }

    companion object {
        fun triggerUpdate(context: Context) {
            val appWidgetManager = AppWidgetManager.getInstance(context)
            val componentName = ComponentName(context, NoteWidgetProvider::class.java)
            val ids = appWidgetManager.getAppWidgetIds(componentName)

            for (id in ids) {
                @Suppress("DEPRECATION")
                appWidgetManager.notifyAppWidgetViewDataChanged(id, R.id.widget_list)
            }

            val intent = Intent(context, NoteWidgetProvider::class.java).apply {
                action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
                putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids)
            }
            context.sendBroadcast(intent)
        }
    }
}
Updates
Shim - Android 70.026.1
Wedge - Linux 68.026.1
Wedge - Android 68.026.1
Taper - Linux 64.026.1
Ayh Extension - Chrome 63.026.1
Dev
TVShow (227) 'CSA'
TVShow (228) 'APT'
TVProgram (83) 'BXT'
Miter Update(s)
Shim (Dictation)

Menu
Calendar
Project Tin (024/029)
Miter
RSS Feed
User Avatar
@vgmlr
=SUM(parts)