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

Commit 5294ff21 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic "setting-observer"

* changes:
  2/2 Remove GlobalSetting class
  1/2 Rename SecureSetting to SettingObserver
parents 821b4cdf fa0237c1
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -87,7 +87,7 @@ import com.android.systemui.animation.Interpolators;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.qs.SecureSetting;
import com.android.systemui.qs.SettingObserver;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.statusbar.events.PrivacyDotViewController;
import com.android.systemui.tuner.TunerService;
@@ -155,7 +155,7 @@ public class ScreenDecorations extends CoreStartable implements Tunable {
    private float mDensity;
    private WindowManager mWindowManager;
    private int mRotation;
    private SecureSetting mColorInversionSetting;
    private SettingObserver mColorInversionSetting;
    private DelayableExecutor mExecutor;
    private Handler mHandler;
    private boolean mPendingRotationChange;
@@ -346,7 +346,7 @@ public class ScreenDecorations extends CoreStartable implements Tunable {

            // Watch color inversion and invert the overlay as needed.
            if (mColorInversionSetting == null) {
                mColorInversionSetting = new SecureSetting(mSecureSettings, mHandler,
                mColorInversionSetting = new SettingObserver(mSecureSettings, mHandler,
                        Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED,
                        mUserTracker.getUserId()) {
                    @Override
+0 −61
Original line number Diff line number Diff line
/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.qs;

import android.content.Context;
import android.database.ContentObserver;
import android.os.Handler;
import android.provider.Settings.Global;

import com.android.systemui.statusbar.policy.Listenable;

/** Helper for managing a global setting. **/
public abstract class GlobalSetting extends ContentObserver implements Listenable {
    private final Context mContext;
    private final String mSettingName;

    protected abstract void handleValueChanged(int value);

    public GlobalSetting(Context context, Handler handler, String settingName) {
        super(handler);
        mContext = context;
        mSettingName = settingName;
    }

    public int getValue() {
        return Global.getInt(mContext.getContentResolver(), mSettingName, 0);
    }

    public void setValue(int value) {
        Global.putInt(mContext.getContentResolver(), mSettingName, value);
    }

    @Override
    public void setListening(boolean listening) {
        if (listening) {
            mContext.getContentResolver().registerContentObserver(
                    Global.getUriFor(mSettingName), false, this);
        } else {
            mContext.getContentResolver().unregisterContentObserver(this);
        }
    }

    @Override
    public void onChange(boolean selfChange) {
        handleValueChanged(getValue());
    }
}
+29 −14
Original line number Diff line number Diff line
@@ -21,11 +21,18 @@ import android.database.ContentObserver;
import android.os.Handler;

import com.android.systemui.statusbar.policy.Listenable;
import com.android.systemui.util.settings.GlobalSettings;
import com.android.systemui.util.settings.SecureSettings;
import com.android.systemui.util.settings.SettingsProxy;
import com.android.systemui.util.settings.SystemSettings;

/** Helper for managing a secure setting. **/
public abstract class SecureSetting extends ContentObserver implements Listenable {
    private final SecureSettings mSecureSettings;
/**
 * Helper for managing secure, global, and system settings through use of {@link SettingsProxy},
 * which is the common superclass of {@link SecureSettings}, {@link GlobalSettings}, and
 * {@link SystemSettings}.
 */
public abstract class SettingObserver extends ContentObserver implements Listenable {
    private final SettingsProxy mSettingsProxy;
    private final String mSettingName;
    private final int mDefaultValue;

@@ -35,19 +42,19 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl

    protected abstract void handleValueChanged(int value, boolean observedChange);

    public SecureSetting(SecureSettings secureSettings, Handler handler, String settingName,
    public SettingObserver(SettingsProxy settingsProxy, Handler handler, String settingName,
            int userId) {
        this(secureSettings, handler, settingName, userId, 0);
        this(settingsProxy, handler, settingName, userId, 0);
    }

    public SecureSetting(SecureSettings secureSetting, Handler handler, String settingName) {
        this(secureSetting, handler, settingName, ActivityManager.getCurrentUser());
    public SettingObserver(SettingsProxy settingsProxy, Handler handler, String settingName) {
        this(settingsProxy, handler, settingName, ActivityManager.getCurrentUser());
    }

    public SecureSetting(SecureSettings secureSettings, Handler handler, String settingName,
    public SettingObserver(SettingsProxy settingsProxy, Handler handler, String settingName,
            int userId, int defaultValue) {
        super(handler);
        mSecureSettings = secureSettings;
        mSettingsProxy = settingsProxy;
        mSettingName = settingName;
        mObservedValue = mDefaultValue = defaultValue;
        mUserId = userId;
@@ -57,12 +64,17 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl
        return mListening ? mObservedValue : getValueFromProvider();
    }

    /**
     * Set the value of the observed setting.
     *
     * @param value The new value for the setting.
     */
    public void setValue(int value) {
        mSecureSettings.putIntForUser(mSettingName, value, mUserId);
        mSettingsProxy.putIntForUser(mSettingName, value, mUserId);
    }

    private int getValueFromProvider() {
        return mSecureSettings.getIntForUser(mSettingName, mDefaultValue, mUserId);
        return mSettingsProxy.getIntForUser(mSettingName, mDefaultValue, mUserId);
    }

    @Override
@@ -71,10 +83,10 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl
        mListening = listening;
        if (listening) {
            mObservedValue = getValueFromProvider();
            mSecureSettings.registerContentObserverForUser(
                    mSecureSettings.getUriFor(mSettingName), false, this, mUserId);
            mSettingsProxy.registerContentObserverForUser(
                    mSettingsProxy.getUriFor(mSettingName), false, this, mUserId);
        } else {
            mSecureSettings.unregisterContentObserver(this);
            mSettingsProxy.unregisterContentObserver(this);
            mObservedValue = mDefaultValue;
        }
    }
@@ -87,6 +99,9 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl
        handleValueChanged(value, changed);
    }

    /**
     * Set user handle for which to observe the setting.
     */
    public void setUserId(int userId) {
        mUserId = userId;
        if (mListening) {
+7 −5
Original line number Diff line number Diff line
@@ -44,10 +44,11 @@ import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.qs.QSTile.BooleanState;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.qs.GlobalSetting;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.SettingObserver;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.util.settings.GlobalSettings;

import javax.inject.Inject;

@@ -56,7 +57,7 @@ import dagger.Lazy;
/** Quick settings tile: Airplane mode **/
public class AirplaneModeTile extends QSTileImpl<BooleanState> {
    private final Icon mIcon = ResourceIcon.get(com.android.internal.R.drawable.ic_qs_airplane);
    private final GlobalSetting mSetting;
    private final SettingObserver mSetting;
    private final BroadcastDispatcher mBroadcastDispatcher;
    private final Lazy<ConnectivityManager> mLazyConnectivityManager;

@@ -73,16 +74,17 @@ public class AirplaneModeTile extends QSTileImpl<BooleanState> {
            ActivityStarter activityStarter,
            QSLogger qsLogger,
            BroadcastDispatcher broadcastDispatcher,
            Lazy<ConnectivityManager> lazyConnectivityManager
            Lazy<ConnectivityManager> lazyConnectivityManager,
            GlobalSettings globalSettings
    ) {
        super(host, backgroundLooper, mainHandler, falsingManager, metricsLogger,
                statusBarStateController, activityStarter, qsLogger);
        mBroadcastDispatcher = broadcastDispatcher;
        mLazyConnectivityManager = lazyConnectivityManager;

        mSetting = new GlobalSetting(mContext, mHandler, Global.AIRPLANE_MODE_ON) {
        mSetting = new SettingObserver(globalSettings, mHandler, Global.AIRPLANE_MODE_ON) {
            @Override
            protected void handleValueChanged(int value) {
            protected void handleValueChanged(int value, boolean observedChange) {
                // mHandler is the background handler so calling this is OK
                handleRefreshState(value);
            }
+3 −3
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.qs.QSTile.BooleanState;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.SecureSetting;
import com.android.systemui.qs.SettingObserver;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.policy.BatteryController;
@@ -49,7 +49,7 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements

    private final BatteryController mBatteryController;
    @VisibleForTesting
    protected final SecureSetting mSetting;
    protected final SettingObserver mSetting;

    private int mLevel;
    private boolean mPowerSave;
@@ -76,7 +76,7 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements
        mBatteryController = batteryController;
        mBatteryController.observe(getLifecycle(), this);
        int currentUser = host.getUserContext().getUserId();
        mSetting = new SecureSetting(
        mSetting = new SettingObserver(
                secureSettings,
                mHandler,
                Secure.LOW_POWER_WARNING_ACKNOWLEDGED,
Loading