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

Commit 9fb61cb1 authored by Danny Baumann's avatar Danny Baumann
Browse files

Hide unused msim icons on setting preference(2/2)



Added a listPreference through which no-sim icons can be hidden or displayed
as per the user's wish

Change-Id: Ice8f6150a9b969bd6b36f4d0f45746467b271a40
Signed-off-by: default avatarArvind Mukund <armu30@gmail.com>
parent 676a0c5d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -3379,6 +3379,14 @@ public final class Settings {
         */
        public static final String STATUS_BAR_SHOW_BATTERY_PERCENT = "status_bar_show_battery_percent";

        /**
         * Visibility of SIM icons of unpopulated SIM slots in MSIM mode
         * 0: Hide unpopulated SIM icons
         * 1: Show unpopulated SIM icons
         * @hide
         */
        public static final String STATUS_BAR_MSIM_SHOW_EMPTY_ICONS = "status_bar_show_empty_sims";

        /**
         * Enable statusbar double tap gesture on to put device to sleep
         * @hide
+13 −0
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ public class MSimSignalClusterView
    private int[] mMobileRoamId;
    private int[] mNoSimIconId;
    private boolean mIsAirplaneMode = false;
    private boolean mShowNoSimSlots = true;
    private int mAirplaneIconId = 0;
    private String mWifiDescription, mMobileTypeDescription;
    private String[] mMobileDescription;
@@ -219,6 +220,8 @@ public class MSimSignalClusterView
        mMobileCdma1x       = (ImageView) findViewById(R.id.mobile_signal_1x);
        mMobileCdma1xOnly   = (ImageView) findViewById(R.id.mobile_signal_1x_only);

        setShowEmptySimSlots(mShowNoSimSlots);

        for (int i = 0; i < mNumPhones; i++) {
            apply(i);
        }
@@ -354,6 +357,16 @@ public class MSimSignalClusterView
        }
    }

    @Override
    public void setShowEmptySimSlots(boolean show) {
        mShowNoSimSlots = show;
        if (mWifiGroup != null) {
            for (int i = 0; i < mNumPhones; i++) {
                mNoSimSlot[i].setVisibility(show ? View.VISIBLE : View.GONE);
            }
        }
    }

    @Override
    public boolean dispatchPopulateAccessibilityEvent(AccessibilityEvent event) {
        int defaultPhoneId = getDefaultPhoneId();
+4 −1
Original line number Diff line number Diff line
@@ -1093,7 +1093,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,

        if (isMSim()) {
            if (mMSimNetworkController == null) {
                mMSimNetworkController = new MSimNetworkControllerImpl(mContext);
                mMSimNetworkController = new MSimNetworkControllerImpl(mContext, mHandler);
            }
            MSimSignalClusterView signalCluster = (MSimSignalClusterView)
                    mStatusBarView.findViewById(R.id.msim_signal_cluster);
@@ -3702,6 +3702,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        if (mZenModeController != null) {
            mZenModeController.setUserId(mCurrentUserId);
        }
        if (mMSimNetworkController != null) {
            mMSimNetworkController.setUserId(mCurrentUserId);
        }
    }

    private void resetUserSetupObserver() {
+58 −2
Original line number Diff line number Diff line
@@ -18,16 +18,21 @@

package com.android.systemui.statusbar.policy;

import android.app.ActivityManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.ContentObserver;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.net.wimax.WimaxManagerConstants;
import android.os.Handler;
import android.os.Message;
import android.os.Messenger;
import android.os.SystemProperties;
import android.provider.Settings;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
@@ -56,6 +61,9 @@ public class MSimNetworkControllerImpl extends NetworkControllerImpl {
    static final boolean DEBUG = false;
    static final boolean CHATTY = true; // additional diagnostics, but not logspew

    private int mUserId;
    private SettingsObserver mSettingsObserver;

    // telephony
    boolean[] mMSimDataConnected;
    IccCardConstants.State[] mMSimState;
@@ -108,12 +116,13 @@ public class MSimNetworkControllerImpl extends NetworkControllerImpl {
                int phoneId, int noSimIcon);

        void setIsAirplaneMode(boolean is, int airplaneIcon);
        void setShowEmptySimSlots(boolean show);
    }

    /**
     * Construct this controller object and register for updates.
     */
    public MSimNetworkControllerImpl(Context context) {
    public MSimNetworkControllerImpl(Context context, Handler handler) {
        super(context);
        int numPhones = TelephonyManager.getDefault().getPhoneCount();
        Slog.d(TAG, "registerPhoneStateListener numPhones: " + numPhones);
@@ -200,6 +209,9 @@ public class MSimNetworkControllerImpl extends NetworkControllerImpl {
        mLastCombinedSignalIconId = mMSimLastCombinedSignalIconId[mDefaultPhoneId];
        mLastDataTypeIconId = mMSimLastDataTypeIconId[mDefaultPhoneId];
        mLastSimIconId = mMSimLastSimIconId[mDefaultPhoneId];

        mSettingsObserver = new SettingsObserver(handler);
        mSettingsObserver.register();
    }

    @Override
@@ -254,7 +266,6 @@ public class MSimNetworkControllerImpl extends NetworkControllerImpl {
        return phoneId;
    }


    private int getPhoneId(long subId) {
        int phoneId;
        phoneId = SubscriptionManager.getPhoneId(subId);
@@ -270,6 +281,11 @@ public class MSimNetworkControllerImpl extends NetworkControllerImpl {
        }
    }

    public void setUserId(int userId) {
        mUserId = userId;
        mSettingsObserver.register();
    }

    public void addSignalCluster(MSimSignalCluster cluster, int phoneId) {
        mSimSignalClusters.add(cluster);
        refreshSignalCluster(cluster, phoneId);
@@ -324,6 +340,7 @@ public class MSimNetworkControllerImpl extends NetworkControllerImpl {
                    mNoMSimIconId[phoneId]);
        }
        cluster.setIsAirplaneMode(mAirplaneMode, mAirplaneIconId);
        cluster.setShowEmptySimSlots(mSettingsObserver.showEmptySimIcons());

        if (DEBUG) {
            Slog.d(TAG, "refreshSignalCluster, mMSimPhoneSignalIconId[" + phoneId + "]="
@@ -1503,4 +1520,43 @@ public class MSimNetworkControllerImpl extends NetworkControllerImpl {
        pw.print(mLastCombinedLabel);
        pw.println("");
    }

    private final class SettingsObserver extends ContentObserver {
        private final ContentResolver mResolver;
        private boolean mRegistered;
        private final Uri EMPTY_ICONS_URI = Settings.System.getUriFor(
                Settings.System.STATUS_BAR_MSIM_SHOW_EMPTY_ICONS);

        public SettingsObserver(Handler handler) {
            super(handler);
            mResolver = mContext.getContentResolver();
        }

        public boolean showEmptySimIcons() {
            return Settings.System.getIntForUser(mResolver,
                    Settings.System.STATUS_BAR_MSIM_SHOW_EMPTY_ICONS, 1, mUserId) != 0;
        }

        public void register() {
            if (mRegistered) {
                mResolver.unregisterContentObserver(this);
            }
            mResolver.registerContentObserver(EMPTY_ICONS_URI, false, this, mUserId);
            updateSettings();
        }

        @Override
        public void onChange(boolean selfChange, Uri uri) {
            if (EMPTY_ICONS_URI.equals(uri)) {
                updateSettings();
            }
        }

        private void updateSettings() {
            boolean showEmptySlots = showEmptySimIcons();
            for (MSimSignalCluster cluster : mSimSignalClusters) {
                cluster.setShowEmptySimSlots(showEmptySlots);
            }
        }
    }
}