Attempt to filter out inactive widgets

pull/2204/head
Alex Baker 3 years ago
parent 32eed65f04
commit 4b325c0133

@ -4,6 +4,7 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.content.res.AppCompatResources import androidx.appcompat.content.res.AppCompatResources
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.preference.Preference
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.tasks.R import org.tasks.R
@ -32,8 +33,16 @@ class Widgets : InjectingPreferenceFragment() {
lifecycleScope.launch { lifecycleScope.launch {
preferenceScreen.removeAll() preferenceScreen.removeAll()
appWidgetManager.widgetIds.forEach { appWidgetManager
val widgetPrefs = WidgetPreferences(context, preferences, it) .widgetIds
.filter { appWidgetManager.exists(it) }
.map { createPreference(it) }
.forEach { preferenceScreen.addPreference(it) }
}
}
private suspend fun createPreference(id: Int): Preference {
val widgetPrefs = WidgetPreferences(context, preferences, id)
val pref = IconPreference(requireContext()) val pref = IconPreference(requireContext())
tintColorPreference(pref, widgetPrefs.color) tintColorPreference(pref, widgetPrefs.color)
pref.drawable = AppCompatResources.getDrawable( pref.drawable = AppCompatResources.getDrawable(
@ -44,16 +53,14 @@ class Widgets : InjectingPreferenceFragment() {
pref.iconVisible = true pref.iconVisible = true
val filter = defaultFilterProvider.getFilterFromPreference(widgetPrefs.filterId) val filter = defaultFilterProvider.getFilterFromPreference(widgetPrefs.filterId)
pref.title = filter.listingTitle pref.title = filter.listingTitle
pref.summary = getString(R.string.widget_id, it) pref.summary = getString(R.string.widget_id, id)
val intent = Intent(context, WidgetConfigActivity::class.java) val intent = Intent(context, WidgetConfigActivity::class.java)
intent.putExtra(android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_ID, it) intent.putExtra(android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_ID, id)
intent.action = "widget_settings" intent.action = "widget_settings"
pref.setOnPreferenceClickListener { pref.setOnPreferenceClickListener {
startActivity(intent) startActivity(intent)
false false
} }
preferenceScreen.addPreference(pref) return pref
}
}
} }
} }

@ -32,4 +32,6 @@ class AppWidgetManager @Inject constructor(
fun updateWidgets() { fun updateWidgets() {
appWidgetManager?.notifyAppWidgetViewDataChanged(widgetIds, R.id.list_view) appWidgetManager?.notifyAppWidgetViewDataChanged(widgetIds, R.id.list_view)
} }
fun exists(id: Int) = appWidgetManager?.getAppWidgetInfo(id) != null
} }
Loading…
Cancel
Save