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

Commit e51d9185 authored by Pavel Zhamaitsiak's avatar Pavel Zhamaitsiak
Browse files

When Wi-Fi calling is available display SPN as SPN+" Wi-Fi"

Bug:19681794
Change-Id: I2859d4d26c3103d9900befc6f5fe4aa50c6eadb7
parent 90dc5475
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -180,6 +180,7 @@ public abstract class ServiceStateTracker extends Handler {
    protected static final int EVENT_CHANGE_IMS_STATE                  = 45;
    protected static final int EVENT_IMS_STATE_CHANGED                 = 46;
    protected static final int EVENT_IMS_STATE_DONE                    = 47;
    protected static final int EVENT_IMS_CAPABILITY_CHANGED            = 48;

    protected static final String TIMEZONE_PROPERTY = "persist.sys.timezone";

@@ -638,6 +639,7 @@ public abstract class ServiceStateTracker extends Handler {
    public abstract boolean isConcurrentVoiceAndDataAllowed();

    public abstract void setImsRegistrationState(boolean registered);
    public void onImsCapabilityChanged() {}
    public abstract void pollState();

    /**
+21 −2
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ import android.telephony.SubscriptionManager;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.telephony.dataconnection.DcTrackerBase;
import com.android.internal.telephony.imsphone.ImsPhone;
import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState;
import com.android.internal.telephony.uicc.IccRecords;
import com.android.internal.telephony.uicc.SIMRecords;
@@ -504,6 +505,11 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
                setPowerStateToDesired();
                break;

            case EVENT_IMS_CAPABILITY_CHANGED:
                if (DBG) log("EVENT_IMS_CAPABILITY_CHANGED");
                updateSpnDisplay();
                break;

            default:
                super.handleMessage(msg);
            break;
@@ -634,9 +640,18 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
                && ((rule & SIMRecords.SPN_RULE_SHOW_SPN)
                        == SIMRecords.SPN_RULE_SHOW_SPN);

        // airplane mode or spn equals plmn, do not show spn
        if (mSS.getVoiceRegState() == ServiceState.STATE_POWER_OFF
        if (!TextUtils.isEmpty(spn)
                && mPhone.getImsPhone() != null
                && ((ImsPhone) mPhone.getImsPhone()).isVowifiEnabled()) {
            // In Wi-Fi Calling mode show SPN+WiFi
            String format = mPhone.getContext().getText(
                    com.android.internal.R.string.wfcSpnFormat).toString();
            showPlmn = false;
            showSpn = true;
            spn = String.format(format, spn);
        } else if (mSS.getVoiceRegState() == ServiceState.STATE_POWER_OFF
                || (showPlmn && TextUtils.equals(spn, plmn))) {
            // airplane mode or spn equals plmn, do not show spn
            spn = null;
            showSpn = false;
        }
@@ -2156,6 +2171,10 @@ final class GsmServiceStateTracker extends ServiceStateTracker {
        mImsRegistrationOnOff = registered;
    }

    public void onImsCapabilityChanged() {
        sendMessage(obtainMessage(EVENT_IMS_CAPABILITY_CHANGED));
    }

    public void onSetPhoneRCDone(ArrayList<RadioAccessFamily> phoneRcs) {
        int INVALID = -1;
        int size = 0;
+5 −0
Original line number Diff line number Diff line
@@ -83,6 +83,7 @@ import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneBase;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.PhoneNotifier;
import com.android.internal.telephony.ServiceStateTracker;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.telephony.cdma.CDMAPhone;
@@ -1244,6 +1245,10 @@ public class ImsPhone extends ImsPhoneBase {
        mEcmExitRespRegistrant.clear();
    }

    public void onFeatureCapabilityChanged() {
        mDefaultPhone.getServiceStateTracker().onImsCapabilityChanged();
    }

    public boolean isVolteEnabled() {
        return mCT.isVolteEnabled();
    }
+2 −0
Original line number Diff line number Diff line
@@ -1355,6 +1355,8 @@ public final class ImsPhoneCallTracker extends CallTracker {
                for (ImsPhoneConnection connection : mConnections) {
                    connection.updateWifiState();
                }

                mPhone.onFeatureCapabilityChanged();
            }

            if (DBG) log("onFeatureCapabilityChanged: mImsFeatureEnabled=" +  mImsFeatureEnabled);