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

Commit cbf35131 authored by Dave Mankoff's avatar Dave Mankoff
Browse files

4/N Move Tunable to OperatorNameViewController

Bug: 196625757
Test: manual
Change-Id: I8f154b4ffbf76b7139c96e9272a89bb74d811a1a
parent c0777560
Loading
Loading
Loading
Loading
+4 −33
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@
package com.android.systemui.statusbar;

import android.content.Context;
import android.os.Bundle;
import android.telephony.ServiceState;
import android.telephony.SubscriptionInfo;
import android.telephony.TelephonyManager;
@@ -27,17 +26,11 @@ import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.settingslib.WirelessUtils;
import com.android.systemui.Dependency;
import com.android.systemui.demomode.DemoModeCommandReceiver;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService.Tunable;

import java.util.List;

/** Shows the operator name */
public class OperatorNameView extends TextView implements DemoModeCommandReceiver, Tunable {

    private static final String KEY_SHOW_OPERATOR_NAME = "show_operator_name";

public class OperatorNameView extends TextView {
    private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
    private boolean mDemoMode;

@@ -64,44 +57,22 @@ public class OperatorNameView extends TextView implements DemoModeCommandReceive
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        mKeyguardUpdateMonitor = Dependency.get(KeyguardUpdateMonitor.class);
        mKeyguardUpdateMonitor.registerCallback(mCallback);
        Dependency.get(TunerService.class).addTunable(this, KEY_SHOW_OPERATOR_NAME);
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        mKeyguardUpdateMonitor.removeCallback(mCallback);
        Dependency.get(TunerService.class).removeTunable(this);
    }

    @Override
    public void onTuningChanged(String key, String newValue) {
        update();
    }

    @Override
    public void dispatchDemoCommand(String command, Bundle args) {
        setText(args.getString("name"));
    }

    @Override
    public void onDemoModeStarted() {
        mDemoMode = true;
    }

    @Override
    public void onDemoModeFinished() {
        mDemoMode = false;
        update();
    void setDemoMode(boolean demoMode) {
        mDemoMode = demoMode;
    }

    void update() {
        boolean showOperatorName = Dependency.get(TunerService.class)
                .getValue(KEY_SHOW_OPERATOR_NAME, 1) != 0;
    void update(boolean showOperatorName, boolean hasMobile) {
        setVisibility(showOperatorName ? VISIBLE : GONE);

        boolean hasMobile = mContext.getSystemService(TelephonyManager.class).isDataCapable();
        boolean airplaneMode = WirelessUtils.isAirplaneModeOn(mContext);
        if (!hasMobile || airplaneMode) {
            setText(null);
+52 −5
Original line number Diff line number Diff line
@@ -16,53 +16,78 @@

package com.android.systemui.statusbar;

import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.view.View;

import com.android.systemui.demomode.DemoModeCommandReceiver;
import com.android.systemui.plugins.DarkIconDispatcher;
import com.android.systemui.statusbar.policy.NetworkController;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.util.ViewController;

import javax.inject.Inject;

/** Controller for {@link OperatorNameView}. */
public class OperatorNameViewController extends ViewController<OperatorNameView> {
    private static final String KEY_SHOW_OPERATOR_NAME = "show_operator_name";

    private final DarkIconDispatcher mDarkIconDispatcher;
    private final NetworkController mNetworkController;
    private final TunerService mTunerService;
    private final TelephonyManager mTelephonyManager;

    private OperatorNameViewController(OperatorNameView view,
            DarkIconDispatcher darkIconDispatcher,
            NetworkController networkController) {
            NetworkController networkController,
            TunerService tunerService,
            TelephonyManager telephonyManager) {
        super(view);
        mDarkIconDispatcher = darkIconDispatcher;
        mNetworkController = networkController;
        mTunerService = tunerService;
        mTelephonyManager = telephonyManager;
    }

    @Override
    protected void onViewAttached() {
        mDarkIconDispatcher.addDarkReceiver(mDarkReceiver);
        mNetworkController.addCallback(mSignalCallback);
        mTunerService.addTunable(mTunable, KEY_SHOW_OPERATOR_NAME);
    }

    @Override
    protected void onViewDetached() {
        mDarkIconDispatcher.removeDarkReceiver(mDarkReceiver);
        mNetworkController.addCallback(mSignalCallback);
        mNetworkController.removeCallback(mSignalCallback);
        mTunerService.removeTunable(mTunable);
    }

    private void update() {
        mView.update(mTunerService.getValue(KEY_SHOW_OPERATOR_NAME, 1) != 0,
                mTelephonyManager.isDataCapable());
    }

    /** Factory for constructing an {@link OperatorNameViewController}. */
    public static class Factory {
        private final DarkIconDispatcher mDarkIconDispatcher;
        private final NetworkController mNetworkController;
        private final TunerService mTunerService;
        private final TelephonyManager mTelephonyManager;

        @Inject
        public Factory(DarkIconDispatcher darkIconDispatcher, NetworkController networkController) {
        public Factory(DarkIconDispatcher darkIconDispatcher, NetworkController networkController,
                TunerService tunerService, TelephonyManager telephonyManager) {
            mDarkIconDispatcher = darkIconDispatcher;
            mNetworkController = networkController;
            mTunerService = tunerService;
            mTelephonyManager = telephonyManager;
        }

        /** Create an {@link OperatorNameViewController}. */
        public OperatorNameViewController create(OperatorNameView view) {
            return new OperatorNameViewController(view, mDarkIconDispatcher, mNetworkController);
            return new OperatorNameViewController(view, mDarkIconDispatcher, mNetworkController,
                    mTunerService, mTelephonyManager);
        }
    }

@@ -78,11 +103,33 @@ public class OperatorNameViewController extends ViewController<OperatorNameView>
    private final DarkIconDispatcher.DarkReceiver mDarkReceiver =
            (area, darkIntensity, tint) ->
                    mView.setTextColor(DarkIconDispatcher.getTint(area, mView, tint));

    private final NetworkController.SignalCallback mSignalCallback =
            new NetworkController.SignalCallback() {
        @Override
        public void setIsAirplaneMode(NetworkController.IconState icon) {
            mView.update();
            update();
        }
    };

    private final TunerService.Tunable mTunable = (key, newValue) -> update();

    // TODO: do we even register this anywhere?
    private final DemoModeCommandReceiver mDemoModeCommandReceiver = new DemoModeCommandReceiver() {
        @Override
        public void onDemoModeStarted() {
            mView.setDemoMode(true);
        }

        @Override
        public void onDemoModeFinished() {
            mView.setDemoMode(false);
            update();
        }

        @Override
        public void dispatchDemoCommand(String command, Bundle args) {
            mView.setText(args.getString("name"));
        }
    };
}