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

Commit a3abfa9a authored by kaiyiz's avatar kaiyiz Committed by Kaiyi Zhang
Browse files

SystemUI: Fix data tile doesn't change with default data card issue

By current design, the data tile can control all cards data, and it
refresh its state according to the first card.
Dds tile also refresh its state according to the first card.
When data on/off, the changed URI is Settings.Global.MOBILE_DATA + 0/1,
but not Settings.Global.MOBILE_DATA.

The data tile should just control the default data card and refresh
according to it.
Change the URI to watch for data changes and dds switch.

CRs-Fixed: 755171

Change-Id: I73ab6b40f4ef28fccb3046b6dbc63b754356ea91
parent 697e762e
Loading
Loading
Loading
Loading
+20 −11
Original line number Diff line number Diff line
@@ -80,18 +80,13 @@ public class DataTile extends QSTile<QSTile.BooleanState> {
                Settings.Global.AIRPLANE_MODE_ON, 0) != 0 || !hasIccCard()) {
            return;
        }
        int phoneCount = mTelephonyManager.getPhoneCount();
        for (int i = 0; i < phoneCount; i++) {
            Settings.Global.putInt(mContext.getContentResolver(),
                    Settings.Global.MOBILE_DATA + i, (enabled) ? 1 : 0);
            long[] subId = SubscriptionManager.getSubId(i);
            mTelephonyManager.setDataEnabledUsingSubId(subId[0], enabled);
        }
        mTelephonyManager.setDataEnabledUsingSubId(
                SubscriptionManager.getDefaultDataSubId(), enabled);
    }

    @Override
    protected void handleUpdateState(BooleanState state, Object arg) {
        final boolean dataOn = mTelephonyManager.getDataEnabled()
        final boolean dataOn = isDefaultDataEnabled()
                && !isAirplaneModeOn() && hasIccCard();
        state.value = dataOn;
        state.visible = true;
@@ -107,6 +102,11 @@ public class DataTile extends QSTile<QSTile.BooleanState> {
        }
    }

    private boolean isDefaultDataEnabled() {
        return Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.MOBILE_DATA + SubscriptionManager.getDefaultDataPhoneId(), 0) != 0;
    }

    public void setListening(boolean listening) {
        if (mListening == listening) return;
        mListening = listening;
@@ -130,9 +130,18 @@ public class DataTile extends QSTile<QSTile.BooleanState> {
        }

        public void startObserving() {
            int phoneCount = mTelephonyManager.getPhoneCount();
            for (int i = 0; i < phoneCount; i++) {
                mContext.getContentResolver().registerContentObserver(
                        Settings.Global.getUriFor(Settings.Global.MOBILE_DATA + i),
                        false, this);
            }
            if (mTelephonyManager.isMultiSimEnabled()) {
                mContext.getContentResolver().registerContentObserver(
                    Settings.Global.getUriFor(Settings.Global.MOBILE_DATA),
                        Settings.Global.getUriFor(
                        Settings.Global.MULTI_SIM_DATA_CALL_SUBSCRIPTION),
                        false, this);
            }
            mContext.getContentResolver().registerContentObserver(
                    Settings.Global.getUriFor(Settings.Global.AIRPLANE_MODE_ON),
                    false, this);
+12 −6
Original line number Diff line number Diff line
@@ -84,9 +84,7 @@ public class DdsTile extends QSTile<QSTile.State> {
                    SubscriptionManager.getDefaultDataSubId());
        }

        ConnectivityManager cm =
                (ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (cm != null && cm.getMobileDataEnabled() && !isAirplaneModeOn()) {
        if (isDefaultDataEnabled() && !isAirplaneModeOn()) {
            if (DEBUG) Log.d(TAG, "mobile data is on.");
            switch(dataPhoneId) {
                case PhoneConstants.SUB1:
@@ -122,6 +120,11 @@ public class DdsTile extends QSTile<QSTile.State> {
        }
    }

    private boolean isDefaultDataEnabled() {
        return Settings.Global.getInt(mContext.getContentResolver(),
                Settings.Global.MOBILE_DATA + SubscriptionManager.getDefaultDataPhoneId(), 0) != 0;
    }

    public void setListening(boolean listening) {
        if (mListening == listening) return;
        mListening = listening;
@@ -160,9 +163,12 @@ public class DdsTile extends QSTile<QSTile.State> {
        }

        public void startObserving() {
            int phoneCount = TelephonyManager.getDefault().getPhoneCount();
            for (int i = 0; i < phoneCount; i++) {
                mContext.getContentResolver().registerContentObserver(
                    Settings.Global.getUriFor(Settings.Global.MOBILE_DATA),
                        Settings.Global.getUriFor(Settings.Global.MOBILE_DATA + i),
                        false, this);
            }
            mContext.getContentResolver().registerContentObserver(
                    Settings.Global.getUriFor(
                    Settings.Global.MULTI_SIM_DATA_CALL_SUBSCRIPTION),