Disable transparency for stacked widgets

Closes #687.
pull/733/head
Quentin Hibon 5 years ago committed by Alinson S. Xavier
parent 7a73f9c8c7
commit df30c7c764

@ -33,12 +33,13 @@ import org.isoron.uhabits.core.preferences.Preferences
import org.isoron.uhabits.core.preferences.WidgetPreferences import org.isoron.uhabits.core.preferences.WidgetPreferences
import org.isoron.uhabits.intents.PendingIntentFactory import org.isoron.uhabits.intents.PendingIntentFactory
abstract class BaseWidget(val context: Context, val id: Int) { abstract class BaseWidget(val context: Context, val id: Int, val stacked: Boolean) {
private val widgetPrefs: WidgetPreferences private val widgetPrefs: WidgetPreferences
protected val prefs: Preferences protected val prefs: Preferences
protected val pendingIntentFactory: PendingIntentFactory protected val pendingIntentFactory: PendingIntentFactory
protected val commandRunner: CommandRunner protected val commandRunner: CommandRunner
private var dimensions: WidgetDimensions private var dimensions: WidgetDimensions
fun delete() { fun delete() {
widgetPrefs.removeWidget(id) widgetPrefs.removeWidget(id)
} }
@ -144,7 +145,12 @@ abstract class BaseWidget(val context: Context, val id: Int) {
} }
protected val preferedBackgroundAlpha: Int protected val preferedBackgroundAlpha: Int
get() = prefs.widgetOpacity get() {
return if (stacked)
255
else
prefs.widgetOpacity
}
init { init {
val app = context.applicationContext as HabitsApplication val app = context.applicationContext as HabitsApplication

@ -34,7 +34,8 @@ open class CheckmarkWidget(
context: Context, context: Context,
widgetId: Int, widgetId: Int,
protected val habit: Habit, protected val habit: Habit,
) : BaseWidget(context, widgetId) { stacked: Boolean = false,
) : BaseWidget(context, widgetId, stacked) {
override val defaultHeight: Int = 125 override val defaultHeight: Int = 125
override val defaultWidth: Int = 125 override val defaultWidth: Int = 125

@ -27,7 +27,8 @@ import org.isoron.uhabits.widgets.views.EmptyWidgetView
class EmptyWidget( class EmptyWidget(
context: Context, context: Context,
widgetId: Int, widgetId: Int,
) : BaseWidget(context, widgetId) { stacked: Boolean = false,
) : BaseWidget(context, widgetId, stacked) {
override val defaultHeight: Int = 200 override val defaultHeight: Int = 200
override val defaultWidth: Int = 200 override val defaultWidth: Int = 200

@ -32,7 +32,8 @@ class FrequencyWidget(
widgetId: Int, widgetId: Int,
private val habit: Habit, private val habit: Habit,
private val firstWeekday: Int, private val firstWeekday: Int,
) : BaseWidget(context, widgetId) { stacked: Boolean = false,
) : BaseWidget(context, widgetId, stacked) {
override val defaultHeight: Int = 200 override val defaultHeight: Int = 200
override val defaultWidth: Int = 200 override val defaultWidth: Int = 200

@ -36,7 +36,8 @@ class HistoryWidget(
context: Context, context: Context,
id: Int, id: Int,
private val habit: Habit, private val habit: Habit,
) : BaseWidget(context, id) { stacked: Boolean = false,
) : BaseWidget(context, id, stacked) {
override val defaultHeight: Int = 250 override val defaultHeight: Int = 250
override val defaultWidth: Int = 250 override val defaultWidth: Int = 250

@ -32,7 +32,8 @@ class ScoreWidget(
context: Context, context: Context,
id: Int, id: Int,
private val habit: Habit, private val habit: Habit,
) : BaseWidget(context, id) { stacked: Boolean = false,
) : BaseWidget(context, id, stacked) {
override val defaultHeight: Int = 300 override val defaultHeight: Int = 300
override val defaultWidth: Int = 300 override val defaultWidth: Int = 300

@ -34,7 +34,8 @@ class StackWidget(
widgetId: Int, widgetId: Int,
private val widgetType: StackWidgetType, private val widgetType: StackWidgetType,
private val habits: List<Habit>, private val habits: List<Habit>,
) : BaseWidget(context, widgetId) { stacked: Boolean = true,
) : BaseWidget(context, widgetId, stacked) {
override val defaultHeight: Int = 0 override val defaultHeight: Int = 0
override val defaultWidth: Int = 0 override val defaultWidth: Int = 0
@ -51,7 +52,8 @@ class StackWidget(
override fun getRemoteViews(width: Int, height: Int): RemoteViews { override fun getRemoteViews(width: Int, height: Int): RemoteViews {
val manager = AppWidgetManager.getInstance(context) val manager = AppWidgetManager.getInstance(context)
val remoteViews = RemoteViews(context.packageName, StackWidgetType.getStackWidgetLayoutId(widgetType)) val remoteViews =
RemoteViews(context.packageName, StackWidgetType.getStackWidgetLayoutId(widgetType))
val serviceIntent = Intent(context, StackWidgetService::class.java) val serviceIntent = Intent(context, StackWidgetService::class.java)
val habitIds = StringUtils.joinLongs(habits.map { it.id!! }.toLongArray()) val habitIds = StringUtils.joinLongs(habits.map { it.id!! }.toLongArray())
@ -59,8 +61,14 @@ class StackWidget(
serviceIntent.putExtra(StackWidgetService.WIDGET_TYPE, widgetType.value) serviceIntent.putExtra(StackWidgetService.WIDGET_TYPE, widgetType.value)
serviceIntent.putExtra(StackWidgetService.HABIT_IDS, habitIds) serviceIntent.putExtra(StackWidgetService.HABIT_IDS, habitIds)
serviceIntent.data = Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)) serviceIntent.data = Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))
remoteViews.setRemoteAdapter(StackWidgetType.getStackWidgetAdapterViewId(widgetType), serviceIntent) remoteViews.setRemoteAdapter(
manager.notifyAppWidgetViewDataChanged(id, StackWidgetType.getStackWidgetAdapterViewId(widgetType)) StackWidgetType.getStackWidgetAdapterViewId(widgetType),
serviceIntent
)
manager.notifyAppWidgetViewDataChanged(
id,
StackWidgetType.getStackWidgetAdapterViewId(widgetType)
)
remoteViews.setEmptyView( remoteViews.setEmptyView(
StackWidgetType.getStackWidgetAdapterViewId(widgetType), StackWidgetType.getStackWidgetAdapterViewId(widgetType),
StackWidgetType.getStackWidgetEmptyViewId(widgetType) StackWidgetType.getStackWidgetEmptyViewId(widgetType)

@ -94,16 +94,17 @@ internal class StackRemoteViewsFactory(private val context: Context, intent: Int
prefs: Preferences prefs: Preferences
): BaseWidget { ): BaseWidget {
when (widgetType) { when (widgetType) {
StackWidgetType.CHECKMARK -> return CheckmarkWidget(context, widgetId, habit) StackWidgetType.CHECKMARK -> return CheckmarkWidget(context, widgetId, habit, true)
StackWidgetType.FREQUENCY -> return FrequencyWidget( StackWidgetType.FREQUENCY -> return FrequencyWidget(
context, context,
widgetId, widgetId,
habit, habit,
prefs.firstWeekdayInt prefs.firstWeekdayInt,
true
) )
StackWidgetType.SCORE -> return ScoreWidget(context, widgetId, habit) StackWidgetType.SCORE -> return ScoreWidget(context, widgetId, habit, true)
StackWidgetType.HISTORY -> return HistoryWidget(context, widgetId, habit) StackWidgetType.HISTORY -> return HistoryWidget(context, widgetId, habit, true)
StackWidgetType.STREAKS -> return StreakWidget(context, widgetId, habit) StackWidgetType.STREAKS -> return StreakWidget(context, widgetId, habit, true)
} }
throw IllegalStateException() throw IllegalStateException()
} }

@ -33,7 +33,8 @@ class StreakWidget(
context: Context, context: Context,
id: Int, id: Int,
private val habit: Habit, private val habit: Habit,
) : BaseWidget(context, id) { stacked: Boolean = false,
) : BaseWidget(context, id, stacked) {
override val defaultHeight: Int = 200 override val defaultHeight: Int = 200
override val defaultWidth: Int = 200 override val defaultWidth: Int = 200

@ -36,7 +36,8 @@ class TargetWidget(
context: Context, context: Context,
id: Int, id: Int,
private val habit: Habit, private val habit: Habit,
) : BaseWidget(context, id) { stacked: Boolean = false,
) : BaseWidget(context, id, stacked) {
override val defaultHeight: Int = 200 override val defaultHeight: Int = 200
override val defaultWidth: Int = 200 override val defaultWidth: Int = 200

Loading…
Cancel
Save