Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7bc0b218 authored by moezbhatti's avatar moezbhatti
Browse files

#1341 - Fix UI glitches with widget

parent e610a373
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -18,6 +18,8 @@
 */
package com.moez.QKSMS.manager

import android.appwidget.AppWidgetManager
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import com.klinker.android.send_message.BroadcastUtils
@@ -29,4 +31,13 @@ class WidgetManagerImpl @Inject constructor(private val context: Context) : Widg
        BroadcastUtils.sendExplicitBroadcast(context, Intent(), WidgetManager.ACTION_NOTIFY_DATASET_CHANGED)
    }

    override fun updateTheme() {
        val ids = AppWidgetManager.getInstance(context)
                .getAppWidgetIds(ComponentName("com.moez.QKSMS", "com.moez.QKSMS.feature.widget.WidgetProvider"))

        val intent = Intent().putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, ids)

        BroadcastUtils.sendExplicitBroadcast(context, intent, AppWidgetManager.ACTION_APPWIDGET_UPDATE)
    }

}
 No newline at end of file
+5 −1
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.app.AlarmManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import com.moez.QKSMS.manager.WidgetManager
import com.moez.QKSMS.receiver.NightModeReceiver
import java.text.SimpleDateFormat
import java.util.*
@@ -32,7 +33,8 @@ import javax.inject.Singleton
@Singleton
class NightModeManager @Inject constructor(
        private val context: Context,
        private val prefs: Preferences) {
        private val prefs: Preferences,
        private val widgetManager: WidgetManager) {

    fun updateCurrentTheme() {
        // If night mode is not on auto, then there's nothing to do here
@@ -45,6 +47,7 @@ class NightModeManager @Inject constructor(

        // If the last nightStart was more recent than the last nightEnd, then it's night time
        prefs.night.set(nightStartTime > nightEndTime)
        widgetManager.updateTheme()
    }

    fun updateNightMode(mode: Int) {
@@ -53,6 +56,7 @@ class NightModeManager @Inject constructor(
        // If it's not on auto mode, set the appropriate night mode
        if (mode != Preferences.NIGHT_MODE_AUTO) {
            prefs.night.set(mode == Preferences.NIGHT_MODE_ON)
            widgetManager.updateTheme()
        }

        updateAlarms()
+2 −0
Original line number Diff line number Diff line
@@ -26,4 +26,6 @@ interface WidgetManager {

    fun updateUnreadCount()

    fun updateTheme()

}
 No newline at end of file
+0 −2
Original line number Diff line number Diff line
@@ -151,8 +151,6 @@
        <receiver android:name=".feature.widget.WidgetProvider">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>
            <intent-filter>
                <action android:name="com.moez.QKSMS.intent.action.ACTION_NOTIFY_DATASET_CHANGED" />
            </intent-filter>

+13 −3
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import com.moez.QKSMS.common.Navigator
import com.moez.QKSMS.common.base.QkPresenter
import com.moez.QKSMS.common.util.BillingManager
import com.moez.QKSMS.common.util.Colors
import com.moez.QKSMS.manager.WidgetManager
import com.moez.QKSMS.util.Preferences
import com.uber.autodispose.kotlin.autoDisposable
import io.reactivex.rxkotlin.Observables
@@ -31,11 +32,12 @@ import javax.inject.Inject
import javax.inject.Named

class ThemePickerPresenter @Inject constructor(
        @Named("threadId") threadId: Long,
        prefs: Preferences,
        @Named("threadId") private val threadId: Long,
        private val billingManager: BillingManager,
        private val colors: Colors,
        private val navigator: Navigator
        private val navigator: Navigator,
        private val widgetManager: WidgetManager
) : QkPresenter<ThemePickerView, ThemePickerState>(ThemePickerState(threadId = threadId)) {

    private val theme: Preference<Int> = prefs.theme(threadId)
@@ -50,7 +52,12 @@ class ThemePickerPresenter @Inject constructor(
        // Update the theme when a material theme is clicked
        view.themeSelected()
                .autoDisposable(view.scope())
                .subscribe { color -> theme.set(color) }
                .subscribe { color ->
                    theme.set(color)
                    if (threadId == 0L) {
                        widgetManager.updateTheme()
                    }
                }

        // Update the color of the apply button
        view.hsvThemeSelected()
@@ -73,6 +80,9 @@ class ThemePickerPresenter @Inject constructor(
                        view.showQksmsPlusSnackbar()
                    } else {
                        theme.set(color)
                        if (threadId == 0L) {
                            widgetManager.updateTheme()
                        }
                    }
                }
                .autoDisposable(view.scope())
Loading