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

Commit cf00fe6f authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "StatusBar: Add support for CMCC DSDS feature"

parents 04da91a6 6cae4b6c
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
@@ -130,6 +130,24 @@
                android:layout_height="wrap_content"
                android:visibility="gone"
                />
            <LinearLayout
                android:id="@+id/mobile_data_voice"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:visibility="gone"
                >
                <ImageView
                    android:id="@+id/mobile_signal_data"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    />
                <ImageView
                    android:id="@+id/mobile_signal_voice"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    />
            </LinearLayout>
            <ImageView
                android:id="@+id/mobile_signal"
                android:layout_height="wrap_content"
@@ -192,6 +210,24 @@
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
            <LinearLayout
                android:id="@+id/mobile_data_voice_sub2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:visibility="gone"
                >
                <ImageView
                    android:id="@+id/mobile_signal_data_sub2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    />
                <ImageView
                    android:id="@+id/mobile_signal_voice_sub2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    />
            </LinearLayout>
            <ImageView
                android:id="@+id/mobile_signal_sub2"
                android:layout_height="wrap_content"
@@ -254,6 +290,24 @@
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            >
            <LinearLayout
                android:id="@+id/mobile_data_voice_sub3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:visibility="gone"
                >
                <ImageView
                    android:id="@+id/mobile_signal_data_sub3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    />
                <ImageView
                    android:id="@+id/mobile_signal_voice_sub3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    />
            </LinearLayout>
            <ImageView
                android:id="@+id/mobile_signal_sub3"
                android:layout_height="wrap_content"
+18 −0
Original line number Diff line number Diff line
@@ -124,6 +124,24 @@
                android:layout_height="wrap_content"
                android:visibility="gone"
            />
            <LinearLayout
                android:id="@+id/mobile_data_voice"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:visibility="gone"
                >
                <ImageView
                    android:id="@+id/mobile_signal_data"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    />
                <ImageView
                    android:id="@+id/mobile_signal_voice"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    />
            </LinearLayout>
            <ImageView
                android:id="@+id/mobile_signal"
                android:layout_height="wrap_content"
+116 −0
Original line number Diff line number Diff line
@@ -80,6 +80,13 @@ public class MSimSignalClusterView
    private ViewGroup mMobileCdmaGroup;
    private ImageView mMobileCdma3g, mMobileCdma1x, mMobileCdma1xOnly;

    //data & voice
    private boolean[] mMobileDataVoiceVisible;
    private int[] mMobileSignalDataId;
    private int[] mMobileSignalVoiceId;
    private ViewGroup[] mMobileDataVoiceGroup;
    private ImageView[] mMobileSignalData, mMobileSignalVoice;

    //data
    private boolean mDataVisible[];
    private int mDataActivityId[];
@@ -102,6 +109,12 @@ public class MSimSignalClusterView
                                        R.id.data_combo_sub3};
    private int[] mDataActResourceId = {R.id.data_inout, R.id.data_inout_sub2,
                                        R.id.data_inout_sub3};
    private int[] mMobileDataVoiceGroupResourceId = {R.id.mobile_data_voice,
            R.id.mobile_data_voice_sub2, R.id.mobile_data_voice_sub3};
    private int[] mMobileSignalDataResourceId = {R.id.mobile_signal_data,
            R.id.mobile_signal_data_sub2, R.id.mobile_signal_data_sub3};
    private int[] mMobileSignalVoiceResourceId = {R.id.mobile_signal_voice,
            R.id.mobile_signal_voice_sub2, R.id.mobile_signal_voice_sub3};
    private final int mNumPhones = MSimTelephonyManager.getDefault().getPhoneCount();

    public MSimSignalClusterView(Context context) {
@@ -128,11 +141,23 @@ public class MSimSignalClusterView
        mDataActivityId = new int[mNumPhones];
        mDataGroup = new ViewGroup[mNumPhones];
        mDataActivity = new ImageView[mNumPhones];
        mMobileDataVoiceVisible = new boolean[mNumPhones];
        mMobileSignalDataId = new int[mNumPhones];
        mMobileSignalVoiceId = new int[mNumPhones];
        mMobileDataVoiceGroup = new ViewGroup[mNumPhones];
        mMobileSignalData = new ImageView[mNumPhones];
        mMobileSignalVoice = new ImageView[mNumPhones];
        for(int i=0; i < mNumPhones; i++) {
            mMobileStrengthId[i] = 0;
            mMobileTypeId[i] = 0;
            mMobileActivityId[i] = 0;
            mNoSimIconId[i] = 0;

            mDataVisible[i] = false;
            mMobileDataVoiceVisible[i] = false;
            mDataActivityId[i] = 0;
            mMobileSignalDataId[i] = 0;
            mMobileSignalVoiceId[i] = 0;
        }

        mStyle = context.getResources().getInteger(R.integer.status_bar_style);
@@ -162,6 +187,13 @@ public class MSimSignalClusterView

            mDataGroup[i]      = (ViewGroup) findViewById(mDataGroupResourceId[i]);
            mDataActivity[i]   = (ImageView) findViewById(mDataActResourceId[i]);

            mMobileDataVoiceGroup[i] =
                    (ViewGroup) findViewById(mMobileDataVoiceGroupResourceId[i]);
            mMobileSignalData[i] =
                    (ImageView) findViewById(mMobileSignalDataResourceId[i]);
            mMobileSignalVoice[i] =
                    (ImageView) findViewById(mMobileSignalVoiceResourceId[i]);
        }

        mMobileCdmaGroup    = (ViewGroup) findViewById(R.id.mobile_signal_cdma);
@@ -187,6 +219,9 @@ public class MSimSignalClusterView
            mNoSimSlot[i]      = null;
            mDataGroup[i]      = null;
            mDataActivity[i]   = null;
            mMobileDataVoiceGroup[i] = null;
            mMobileSignalData[i] = null;
            mMobileSignalVoice[i] = null;
        }
        mMobileCdmaGroup    = null;
        mMobileCdma3g       = null;
@@ -247,9 +282,22 @@ public class MSimSignalClusterView
                mMobileCdmaVisible = false;
                mMobileCdma1xOnlyVisible = false;
            }
        } else if (mStyle == STATUS_BAR_STYLE_DATA_VOICE) {
            if (showBothDataAndVoice(subscription)
                    || getMobileVoiceId(strengthIcon) != 0) {
                mMobileStrengthId[subscription] = 0;
                mMobileDataVoiceVisible[subscription] = true;
                mMobileSignalDataId[subscription] = strengthIcon;
                mMobileSignalVoiceId[subscription]
                        = getMobileVoiceId(mMobileSignalDataId[subscription]);
            } else {
                mMobileDataVoiceVisible[subscription] = false;
            }
        } else {
            mMobileCdmaVisible = false;
            mMobileCdma1xOnlyVisible = false;

            mMobileDataVoiceVisible[subscription] = false;
        }

        applySubscription(subscription);
@@ -297,6 +345,7 @@ public class MSimSignalClusterView
            updateMobile(subscription);
            updateCdma();
            updateData(subscription);
            updateDataVoice(subscription);
            mMobileGroup[subscription].setVisibility(View.VISIBLE);
        } else {
            mMobileGroup[subscription].setVisibility(View.GONE);
@@ -376,6 +425,24 @@ public class MSimSignalClusterView
        }
    }

    private void updateDataVoice(int sub) {
        if (mMobileDataVoiceVisible[sub]) {
            mMobileSignalData[sub].setImageResource(mMobileSignalDataId[sub]);
            mMobileSignalVoice[sub].setImageResource(mMobileSignalVoiceId[sub]);
            mMobileDataVoiceGroup[sub].setVisibility(View.VISIBLE);
        } else {
            mMobileDataVoiceGroup[sub].setVisibility(View.GONE);
        }
    }

    private boolean showBothDataAndVoice(int sub) {
        return mStyle == STATUS_BAR_STYLE_DATA_VOICE
            &&((mMobileTypeId[sub] == R.drawable.stat_sys_data_connected_3g)
                || (mMobileTypeId[sub] == R.drawable.stat_sys_data_connected_4g)
                || (mMobileTypeId[sub] == R.drawable.stat_sys_data_fully_connected_3g)
                || (mMobileTypeId[sub] == R.drawable.stat_sys_data_fully_connected_4g));
    }

    private boolean showBoth3gAnd1x() {
        return mStyle == STATUS_BAR_STYLE_CDMA_1X_COMBINED
            &&((mMobileTypeId[0] == R.drawable.stat_sys_data_connected_3g)
@@ -397,6 +464,55 @@ public class MSimSignalClusterView
        return mMobileTypeId[0] == R.drawable.stat_sys_data_fully_connected_roam;
    }

    private int getMobileVoiceId(int icon) {
        int returnVal = 0;
        switch(icon){
            case R.drawable.stat_sys_signal_0_3g:
            case R.drawable.stat_sys_signal_0_4g:
                returnVal = R.drawable.stat_sys_signal_0_gsm;
                break;
            case R.drawable.stat_sys_signal_1_3g:
            case R.drawable.stat_sys_signal_1_4g:
                returnVal = R.drawable.stat_sys_signal_1_gsm;
                break;
            case R.drawable.stat_sys_signal_2_3g:
            case R.drawable.stat_sys_signal_2_4g:
                returnVal = R.drawable.stat_sys_signal_2_gsm;
                break;
            case R.drawable.stat_sys_signal_3_3g:
            case R.drawable.stat_sys_signal_3_4g:
                returnVal = R.drawable.stat_sys_signal_3_gsm;
                break;
            case R.drawable.stat_sys_signal_4_3g:
            case R.drawable.stat_sys_signal_4_4g:
                returnVal = R.drawable.stat_sys_signal_4_gsm;
                break;
            case R.drawable.stat_sys_signal_0_3g_fully:
            case R.drawable.stat_sys_signal_0_4g_fully:
                returnVal = R.drawable.stat_sys_signal_0_gsm_fully;
                break;
            case R.drawable.stat_sys_signal_1_3g_fully:
            case R.drawable.stat_sys_signal_1_4g_fully:
                returnVal = R.drawable.stat_sys_signal_1_gsm_fully;
                break;
            case R.drawable.stat_sys_signal_2_3g_fully:
            case R.drawable.stat_sys_signal_2_4g_fully:
                returnVal = R.drawable.stat_sys_signal_2_gsm_fully;
                break;
            case R.drawable.stat_sys_signal_3_3g_fully:
            case R.drawable.stat_sys_signal_3_4g_fully:
                returnVal = R.drawable.stat_sys_signal_3_gsm_fully;
                break;
            case R.drawable.stat_sys_signal_4_3g_fully:
            case R.drawable.stat_sys_signal_4_4g_fully:
                returnVal = R.drawable.stat_sys_signal_4_gsm_fully;
                break;
            default:
                break;
        }
        return returnVal;
    }

    private int getMobileCdma3gId(int icon){
        int returnVal = 0;
        switch(icon){
+95 −2
Original line number Diff line number Diff line
@@ -64,6 +64,13 @@ public class SignalClusterView
    private ViewGroup mMobileCdmaGroup;
    private ImageView mMobileCdma3g, mMobileCdma1x, mMobileCdma1xOnly;

    //data & voice
    private boolean mMobileDataVoiceVisible = false;
    private int mMobileSignalDataId = 0;
    private int mMobileSignalVoiceId = 0;
    private ViewGroup mMobileDataVoiceGroup;
    private ImageView mMobileSignalData, mMobileSignalVoice;

    //data
    private boolean mDataVisible = false;
    private int mDataActivityId = 0;
@@ -115,6 +122,11 @@ public class SignalClusterView
        mMobileCdma1x       = (ImageView) findViewById(R.id.mobile_signal_1x);
        mMobileCdma1xOnly   = (ImageView) findViewById(R.id.mobile_signal_1x_only);

        //data & voice
        mMobileDataVoiceGroup = (ViewGroup) findViewById(R.id.mobile_data_voice);
        mMobileSignalData     = (ImageView) findViewById(R.id.mobile_signal_data);
        mMobileSignalVoice    = (ImageView) findViewById(R.id.mobile_signal_voice);

        //data
        mDataGroup          = (ViewGroup) findViewById(R.id.data_combo);
        mDataActivity       = (ImageView) findViewById(R.id.data_inout);
@@ -145,6 +157,10 @@ public class SignalClusterView
        mAirplane           = null;
        mSpacer             = null;

        mMobileDataVoiceGroup = null;
        mMobileSignalData     = null;
        mMobileSignalVoice    = null;

        super.onDetachedFromWindow();
    }

@@ -188,8 +204,7 @@ public class SignalClusterView

                mMobileCdma1xId = strengthIcon;
                mMobileCdma3gId = getMobileCdma3gId(mMobileCdma1xId);
            } else if (mStyle == STATUS_BAR_STYLE_CDMA_1X_COMBINED
                    && (show1xOnly() || isRoaming())) {
            } else if (show1xOnly() || isRoaming()) {
                mMobileCdmaVisible = false;
                mMobileCdma1xOnlyVisible = true;
                mMobileStrengthId = 0;
@@ -199,9 +214,19 @@ public class SignalClusterView
                mMobileCdmaVisible = false;
                mMobileCdma1xOnlyVisible = false;
            }
        } else if (mStyle == STATUS_BAR_STYLE_DATA_VOICE) {
            if (showBothDataAndVoice() || getMobileVoiceId(strengthIcon) != 0) {
                mMobileStrengthId = 0;
                mMobileDataVoiceVisible = true;
                mMobileSignalDataId = strengthIcon;
                mMobileSignalVoiceId = getMobileVoiceId(mMobileSignalDataId);
            } else {
                mMobileDataVoiceVisible = false;
            }
        } else {
            mMobileCdmaVisible = false;
            mMobileCdma1xOnlyVisible = false;
            mMobileDataVoiceVisible = false;
        }

        apply();
@@ -272,6 +297,7 @@ public class SignalClusterView
            updateMobile();
            updateCdma();
            updateData();
            updateDataVoice();
            mMobileGroup.setVisibility(View.VISIBLE);
        } else {
            mMobileGroup.setVisibility(View.GONE);
@@ -347,6 +373,24 @@ public class SignalClusterView
        }
    }

    private void updateDataVoice() {
        if (mMobileDataVoiceVisible) {
            mMobileSignalData.setImageResource(mMobileSignalDataId);
            mMobileSignalVoice.setImageResource(mMobileSignalVoiceId);
            mMobileDataVoiceGroup.setVisibility(View.VISIBLE);
        } else {
            mMobileDataVoiceGroup.setVisibility(View.GONE);
        }
    }

    private boolean showBothDataAndVoice() {
        return mStyle == STATUS_BAR_STYLE_DATA_VOICE
            &&((mMobileTypeId == R.drawable.stat_sys_data_connected_3g)
                || (mMobileTypeId == R.drawable.stat_sys_data_connected_4g)
                || (mMobileTypeId == R.drawable.stat_sys_data_fully_connected_3g)
                || (mMobileTypeId == R.drawable.stat_sys_data_fully_connected_4g));
    }

    private boolean showBoth3gAnd1x() {
        return mStyle == STATUS_BAR_STYLE_CDMA_1X_COMBINED
            &&((mMobileTypeId == R.drawable.stat_sys_data_connected_3g)
@@ -368,6 +412,55 @@ public class SignalClusterView
        return mMobileTypeId == R.drawable.stat_sys_data_fully_connected_roam;
    }

    private int getMobileVoiceId(int icon) {
        int returnVal = 0;
        switch(icon){
            case R.drawable.stat_sys_signal_0_3g:
            case R.drawable.stat_sys_signal_0_4g:
                returnVal = R.drawable.stat_sys_signal_0_gsm;
                break;
            case R.drawable.stat_sys_signal_1_3g:
            case R.drawable.stat_sys_signal_1_4g:
                returnVal = R.drawable.stat_sys_signal_1_gsm;
                break;
            case R.drawable.stat_sys_signal_2_3g:
            case R.drawable.stat_sys_signal_2_4g:
                returnVal = R.drawable.stat_sys_signal_2_gsm;
                break;
            case R.drawable.stat_sys_signal_3_3g:
            case R.drawable.stat_sys_signal_3_4g:
                returnVal = R.drawable.stat_sys_signal_3_gsm;
                break;
            case R.drawable.stat_sys_signal_4_3g:
            case R.drawable.stat_sys_signal_4_4g:
                returnVal = R.drawable.stat_sys_signal_4_gsm;
                break;
            case R.drawable.stat_sys_signal_0_3g_fully:
            case R.drawable.stat_sys_signal_0_4g_fully:
                returnVal = R.drawable.stat_sys_signal_0_gsm_fully;
                break;
            case R.drawable.stat_sys_signal_1_3g_fully:
            case R.drawable.stat_sys_signal_1_4g_fully:
                returnVal = R.drawable.stat_sys_signal_1_gsm_fully;
                break;
            case R.drawable.stat_sys_signal_2_3g_fully:
            case R.drawable.stat_sys_signal_2_4g_fully:
                returnVal = R.drawable.stat_sys_signal_2_gsm_fully;
                break;
            case R.drawable.stat_sys_signal_3_3g_fully:
            case R.drawable.stat_sys_signal_3_4g_fully:
                returnVal = R.drawable.stat_sys_signal_3_gsm_fully;
                break;
            case R.drawable.stat_sys_signal_4_3g_fully:
            case R.drawable.stat_sys_signal_4_4g_fully:
                returnVal = R.drawable.stat_sys_signal_4_gsm_fully;
                break;
            default:
                break;
        }
        return returnVal;
    }

    private int getMobileCdma3gId(int icon){
        int returnVal = 0;
        switch(icon){