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

Commit 70c7b24a authored by cretin45's avatar cretin45
Browse files

SetupWizard: Give radio a 10 second chance to come up

Change-Id: Iadd817b200106783dd67edbc5ad03928ce2baa6b
parent cb09e29e
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -21,6 +21,13 @@

    <include layout="@layout/header" />

    <ProgressBar
        android:id="@+id/progress"
        style="?android:attr/progressBarStyleHorizontal"
        android:indeterminateOnly="true"
        android:layout_width="match_parent"
        android:layout_height="8dp" />

    <FrameLayout android:id="@+id/page"
                 android:layout_width="match_parent"
                 android:layout_height="0dp"
@@ -35,7 +42,8 @@
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                style="@style/PageContent">
                style="@style/PageContent"
                android:visibility="gone">

                <TextView
                    android:layout_width="match_parent"
+10 −1
Original line number Diff line number Diff line
@@ -21,6 +21,13 @@

    <include layout="@layout/header" />

    <ProgressBar
        android:id="@+id/progress"
        style="?android:attr/progressBarStyleHorizontal"
        android:indeterminateOnly="true"
        android:layout_width="match_parent"
        android:layout_height="8dp" />

    <FrameLayout android:id="@+id/page"
                 android:layout_width="match_parent"
                 android:layout_height="0dp"
@@ -31,10 +38,12 @@
                    android:fillViewport="true">

            <LinearLayout
                android:id="@+id/page_view"
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                style="@style/PageContent">
                style="@style/PageContent"
                android:visibility="gone">

                <TextView
                    android:id="@+id/mobile_data_summary"
+26 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.app.Application;
import android.app.StatusBarManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.os.Handler;
import android.provider.Settings;

import com.cyanogenmod.setupwizard.util.SetupWizardUtils;
@@ -59,8 +60,21 @@ public class SetupWizardApp extends Application {
    public static final int REQUEST_CODE_SETUP_CYANOGEN= 3;
    public static final int REQUEST_CODE_SETUP_CAPTIVE_PORTAL= 4;

    public static final int RADIO_READY_TIMEOUT = 10 * 1000;

    private boolean mIsRadioReady = false;

    private StatusBarManager mStatusBarManager;

    private final Handler mHandler = new Handler();

    private final Runnable mRadioTimeoutRunnable = new Runnable() {
        @Override
        public void run() {
            mIsRadioReady = true;
        }
    };

    @Override
    public void onCreate() {
        super.onCreate();
@@ -84,6 +98,18 @@ public class SetupWizardApp extends Application {
            // Continue with setup
            disableCaptivePortalDetection();
        }
        mHandler.postDelayed(mRadioTimeoutRunnable, SetupWizardApp.RADIO_READY_TIMEOUT);
    }

    public boolean isRadioReady() {
        return mIsRadioReady;
    }

    public void setRadioReady(boolean radioReady) {
        if (!mIsRadioReady && radioReady) {
            mHandler.removeCallbacks(mRadioTimeoutRunnable);
        }
        mIsRadioReady = radioReady;
    }

    public void disableStatusBar() {
+26 −17
Original line number Diff line number Diff line
@@ -44,10 +44,12 @@ public class CMSetupWizardData extends AbstractSetupData {
        pages.add(new WelcomePage(mContext, this));
        pages.add(new WifiSetupPage(mContext, this));
        if (SetupWizardUtils.hasTelephony(mContext)) {
            pages.add(new SimCardMissingPage(mContext, this).setHidden(isSimInserted()));
            pages.add(new SimCardMissingPage(mContext, this)
                    .setHidden(isSimInserted()));
        }
        if (SetupWizardUtils.isMultiSimDevice(mContext)) {
            pages.add(new ChooseDataSimPage(mContext, this).setHidden(!allSimsInserted()));
            pages.add(new ChooseDataSimPage(mContext, this)
                    .setHidden(!allSimsInserted()));
        }
        if (SetupWizardUtils.hasTelephony(mContext)) {
            pages.add(new MobileDataPage(mContext, this)
@@ -68,19 +70,8 @@ public class CMSetupWizardData extends AbstractSetupData {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(TelephonyIntents.ACTION_SIM_STATE_CHANGED)) {
            ChooseDataSimPage chooseDataSimPage =
                    (ChooseDataSimPage) getPage(ChooseDataSimPage.TAG);
            if (chooseDataSimPage != null) {
                chooseDataSimPage.setHidden(!allSimsInserted());
            }
            SimCardMissingPage simCardMissingPage =
                    (SimCardMissingPage) getPage(SimCardMissingPage.TAG);
            if (simCardMissingPage != null) {
                simCardMissingPage.setHidden(isSimInserted());
                if (isCurrentPage(simCardMissingPage)) {
                    onNextPage();
                }
            }
            showHideDataSimPage();
            showHideSimMissingPage();
            showHideMobileDataPage();
        } else if (intent.getAction()
                .equals(ConnectivityManager.CONNECTIVITY_ACTION) ||
@@ -116,12 +107,30 @@ public class CMSetupWizardData extends AbstractSetupData {
        }
    }

    private void showHideSimMissingPage() {
        SimCardMissingPage simCardMissingPage =
                (SimCardMissingPage) getPage(SimCardMissingPage.TAG);
        if (simCardMissingPage != null && isSimInserted()) {
            simCardMissingPage.setHidden(true);
            if (isCurrentPage(simCardMissingPage)) {
                onNextPage();
            }
        }
    }

    private void showHideDataSimPage() {
        ChooseDataSimPage chooseDataSimPage =
                (ChooseDataSimPage) getPage(ChooseDataSimPage.TAG);
        if (chooseDataSimPage != null) {
            chooseDataSimPage.setHidden(!isSimInserted());
        }
    }

    private void showHideMobileDataPage() {
        MobileDataPage mobileDataPage =
                (MobileDataPage) getPage(MobileDataPage.TAG);
        if (mobileDataPage != null) {
            mobileDataPage.setHidden(!isSimInserted() ||
                    SetupWizardUtils.isMobileDataEnabled(mContext));
            mobileDataPage.setHidden(!isSimInserted());
        }
    }

+43 −5
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.telephony.PhoneStateListener;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
@@ -31,13 +32,17 @@ import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.cyanogenmod.setupwizard.R;
import com.cyanogenmod.setupwizard.SetupWizardApp;
import com.cyanogenmod.setupwizard.cmstats.SetupStats;
import com.cyanogenmod.setupwizard.ui.SetupPageFragment;
import com.cyanogenmod.setupwizard.util.SetupWizardUtils;

import java.util.List;

@@ -76,6 +81,7 @@ public class ChooseDataSimPage extends SetupPage {
    public static class ChooseDataSimFragment extends SetupPageFragment {

        private ViewGroup mPageView;
        private ProgressBar mProgressBar;
        private SparseArray<TextView> mNameViews;
        private SparseArray<ImageView> mSignalViews;
        private SparseArray<CheckBox> mCheckBoxes;
@@ -88,6 +94,17 @@ public class ChooseDataSimPage extends SetupPage {

        private boolean mIsAttached = false;

        private Context mContext;

        private final Handler mHandler = new Handler();

        private final Runnable mRadioReadyRunnable = new Runnable() {
            @Override
            public void run() {
                hideWaitForRadio();
            }
        };

        private View.OnClickListener mSetDataSimClickListener = new View.OnClickListener() {
            @Override
            public void onClick(View view) {
@@ -102,6 +119,7 @@ public class ChooseDataSimPage extends SetupPage {
        @Override
        protected void initializePage() {
            mPageView = (ViewGroup)mRootView.findViewById(R.id.page_view);
            mProgressBar = (ProgressBar) mRootView.findViewById(R.id.progress);
            List<SubInfoRecord> subInfoRecords =  SubscriptionManager.getActiveSubInfoList();
            int simCount = subInfoRecords.size();
            mSubInfoRecords = new SparseArray<SubInfoRecord>(simCount);
@@ -141,6 +159,7 @@ public class ChooseDataSimPage extends SetupPage {
        public void onResume() {
            super.onResume();
            mIsAttached = true;
            mContext = getActivity().getApplicationContext();
            mPhone = (TelephonyManager)getActivity().getSystemService(Context.TELEPHONY_SERVICE);
            for (int i = 0; i < mPhoneStateListeners.size(); i++) {
                mPhone.listen(mPhoneStateListeners.get(i),
@@ -149,6 +168,12 @@ public class ChooseDataSimPage extends SetupPage {
            }
            updateSignalStrengths();
            updateCurrentDataSub();
            if (SetupWizardUtils.isRadioReady(mContext, null)) {
                hideWaitForRadio();
            } else if (mTitleView != null) {
                mTitleView.setText(R.string.loading);
                mHandler.postDelayed(mRadioReadyRunnable, SetupWizardApp.RADIO_READY_TIMEOUT);
            }
        }

        @Override
@@ -165,22 +190,35 @@ public class ChooseDataSimPage extends SetupPage {

                @Override
                public void onSignalStrengthsChanged(SignalStrength signalStrength) {
                    if (mIsAttached) {
                        mSignalStrengths.put(subInfoRecord.slotId, signalStrength);
                        updateSignalStrength(subInfoRecord);
                    }

                }

                @Override
                public void onServiceStateChanged(ServiceState state) {
                    if (mIsAttached) {
                    if (SetupWizardUtils.isRadioReady(mContext, state)) {
                        hideWaitForRadio();
                    }
                    mServiceStates.put(subInfoRecord.slotId, state);
                    updateSignalStrength(subInfoRecord);
                }
                }
            };
        }

        private void hideWaitForRadio() {
            if (getUserVisibleHint() && mProgressBar.isShown()) {
                mHandler.removeCallbacks(mRadioReadyRunnable);
                if (mTitleView != null) {
                    mTitleView.setText(mPage.getTitleResId());
                }
                mProgressBar.setVisibility(View.GONE);
                mPageView.setVisibility(View.VISIBLE);
                mPageView.startAnimation(
                        AnimationUtils.loadAnimation(getActivity(), R.anim.translucent_enter));
            }
        }

        private void updateSignalStrengths() {
            if (mIsAttached) {
                for (int i = 0; i < mSubInfoRecords.size(); i++) {
Loading