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

Commit ed208478 authored by Alon Albert's avatar Alon Albert
Browse files

Have Screensavers Listen to Alarm Changes

So they can update the "Next alarm..." display

Instead of listening to our own Alarms.NEXT_ALARM_TIME_SET, we observe
the system setting Settings.System.NEXT_ALARM_FORMATTED. This way we
respect 3rd party apps that use this API as well as ourselves.

Change-Id: Iaa90ba8335c38bd6b0ed4571e0784f4f8cb2d154
parent ca07725c
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -20,14 +20,20 @@ import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.TimeInterpolator;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.database.ContentObserver;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.provider.Settings;
import android.service.dreams.DreamService;
import android.util.Log;
import android.view.View;
@@ -49,6 +55,13 @@ public class Screensaver extends DreamService {

    private final ScreensaverMoveSaverRunnable mMoveSaverRunnable;

    private final ContentObserver mSettingsContentObserver = new ContentObserver(mHandler) {
        @Override
        public void onChange(boolean selfChange) {
            Utils.refreshAlarm(Screensaver.this, mContentView);
        }
    };

    public Screensaver() {
        if (DEBUG) Log.d(TAG, "Screensaver allocated");
        mMoveSaverRunnable = new ScreensaverMoveSaverRunnable(mHandler);
@@ -84,6 +97,10 @@ public class Screensaver extends DreamService {

        layoutClockSaver();

        getContentResolver().registerContentObserver(
                Settings.System.getUriFor(Settings.System.NEXT_ALARM_FORMATTED),
                false,
                mSettingsContentObserver);
        mHandler.post(mMoveSaverRunnable);
    }

@@ -93,6 +110,7 @@ public class Screensaver extends DreamService {
        super.onDetachedFromWindow();

        mHandler.removeCallbacks(mMoveSaverRunnable);
        getContentResolver().unregisterContentObserver(mSettingsContentObserver);
    }

    private void setClockStyle() {
+14 −0
Original line number Diff line number Diff line
@@ -24,8 +24,10 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Configuration;
import android.database.ContentObserver;
import android.os.BatteryManager;
import android.os.Handler;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.view.Window;
@@ -82,6 +84,13 @@ public class ScreensaverActivity extends Activity {
        }
    };

    private final ContentObserver mSettingsContentObserver = new ContentObserver(mHandler) {
        @Override
        public void onChange(boolean selfChange) {
            Utils.refreshAlarm(ScreensaverActivity.this, mContentView);
        }
    };

    public ScreensaverActivity() {
        if (DEBUG) Log.d(TAG, "Screensaver allocated");
        mMoveSaverRunnable = new ScreensaverMoveSaverRunnable(mHandler);
@@ -98,6 +107,10 @@ public class ScreensaverActivity extends Activity {
        filter.addAction(Intent.ACTION_TIME_CHANGED);
        filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
        registerReceiver(mIntentReceiver, filter);
        getContentResolver().registerContentObserver(
                Settings.System.getUriFor(Settings.System.NEXT_ALARM_FORMATTED),
                false,
                mSettingsContentObserver);
    }

    @Override
@@ -130,6 +143,7 @@ public class ScreensaverActivity extends Activity {

    @Override
    public void onStop() {
        getContentResolver().unregisterContentObserver(mSettingsContentObserver);
        unregisterReceiver(mIntentReceiver);
        super.onStop();
   }