fix some threading issues related to widgets
This commit is contained in:
parent
7fc10d74d4
commit
069d991fac
1 changed files with 16 additions and 20 deletions
|
@ -3,16 +3,12 @@ package com.simplemobiletools.gallery.pro.helpers
|
|||
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.os.Handler
|
||||
import android.os.Looper
|
||||
import android.widget.RemoteViews
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
import com.bumptech.glide.request.target.AppWidgetTarget
|
||||
import com.simplemobiletools.commons.extensions.setBackgroundColor
|
||||
import com.simplemobiletools.commons.extensions.setText
|
||||
import com.simplemobiletools.commons.extensions.setVisibleIf
|
||||
|
@ -34,11 +30,13 @@ class MyWidgetProvider : AppWidgetProvider() {
|
|||
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
|
||||
super.onUpdate(context, appWidgetManager, appWidgetIds)
|
||||
Thread {
|
||||
context.widgetsDB.getWidgets().forEach {
|
||||
val widgets = context.widgetsDB.getWidgets()
|
||||
val config = context.config
|
||||
widgets.forEach {
|
||||
val views = RemoteViews(context.packageName, R.layout.widget).apply {
|
||||
setBackgroundColor(R.id.widget_holder, context.config.widgetBgColor)
|
||||
setVisibleIf(R.id.widget_folder_name, context.config.showWidgetFolderName)
|
||||
setTextColor(R.id.widget_folder_name, context.config.widgetTextColor)
|
||||
setBackgroundColor(R.id.widget_holder, config.widgetBgColor)
|
||||
setVisibleIf(R.id.widget_folder_name, config.showWidgetFolderName)
|
||||
setTextColor(R.id.widget_folder_name, config.widgetTextColor)
|
||||
setText(R.id.widget_folder_name, context.getFolderNameFromPath(it.folderPath))
|
||||
}
|
||||
|
||||
|
@ -48,21 +46,19 @@ class MyWidgetProvider : AppWidgetProvider() {
|
|||
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
||||
if (context.config.cropThumbnails) options.centerCrop() else options.fitCenter()
|
||||
|
||||
Handler(Looper.getMainLooper()).post {
|
||||
val widgetSize = context.resources.getDimension(R.dimen.widget_initial_size).toInt()
|
||||
val componentName = ComponentName(context, MyWidgetProvider::class.java)
|
||||
val appWidgetTarget = object : AppWidgetTarget(context, widgetSize, widgetSize, R.id.widget_imageview, views, componentName) {}
|
||||
|
||||
Glide.with(context)
|
||||
val image = Glide.with(context)
|
||||
.asBitmap()
|
||||
.load(path)
|
||||
.apply(options)
|
||||
.into(appWidgetTarget)
|
||||
.submit(widgetSize, widgetSize)
|
||||
.get()
|
||||
|
||||
views.setImageViewBitmap(R.id.widget_imageview, image)
|
||||
|
||||
setupAppOpenIntent(context, views, R.id.widget_holder, it)
|
||||
appWidgetManager.updateAppWidget(it.widgetId, views)
|
||||
}
|
||||
}
|
||||
}.start()
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue