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

Commit 033923a0 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[Provider Model] 1. Use the original string for Calls & SMS 2. Set...

Merge "[Provider Model] 1. Use the original string for Calls & SMS 2. Set preferred status in Call & SMS" into sc-dev
parents a97f011b 35dcb7c7
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -12592,13 +12592,15 @@
    <!-- Provider Model: SMS preference title -->
    <string name="sms_preference_title">SMS</string>
    <!-- Provider Model: Preferred status in summary for Calls & SMS -->
    <string name="calls_sms_preferred">Preferred for calls &amp; SMS</string>
    <string name="calls_sms_preferred">preferred</string>
    <!-- Provider Model: Calls Preferred status in summary for Calls & SMS -->
    <string name="calls_sms_calls_preferred">Preferred for calls</string>
    <string name="calls_sms_calls_preferred">preferred for calls</string>
    <!-- Provider Model: SMS Preferred status in summary for Calls & SMS -->
    <string name="calls_sms_sms_preferred">Preferred for SMS</string>
    <string name="calls_sms_sms_preferred">preferred for SMS</string>
    <!-- Provider Model: Unavailable status in summary for Calls & SMS -->
    <string name="calls_sms_unavailable">Temporarily unavailable</string>
    <string name="calls_sms_unavailable">unavailable</string>
    <!-- Provider Model: Temporarily unavailable status in summary for Calls & SMS -->
    <string name="calls_sms_temp_unavailable">Temporarily unavailable</string>
    <!-- Provider Model: No SIM status in summary for Calls & SMS -->
    <string name="calls_sms_no_sim">No SIM</string>
    <!-- Network & internet preferences title [CHAR LIMIT=NONE] -->
+20 −7
Original line number Diff line number Diff line
@@ -20,8 +20,10 @@ import static androidx.lifecycle.Lifecycle.Event;

import android.content.Context;
import android.os.UserManager;
import android.telephony.ServiceState;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;

import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.LifecycleObserver;
@@ -31,6 +33,7 @@ import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.Lifecycle;

@@ -45,7 +48,7 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
    private UserManager mUserManager;
    private SubscriptionManager mSubscriptionManager;
    private SubscriptionsChangeListener mSubscriptionsChangeListener;

    private TelephonyManager mTelephonyManager;
    private RestrictedPreference mPreference;

    /**
@@ -57,6 +60,7 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl

        mUserManager = context.getSystemService(UserManager.class);
        mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
        if (lifecycle != null) {
            mSubscriptionsChangeListener = new SubscriptionsChangeListener(context, this);
            lifecycle.addObserver(this);
@@ -91,16 +95,18 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
            final StringBuilder summary = new StringBuilder();
            for (SubscriptionInfo subInfo : subs) {
                int subsSize = subs.size();
                int subId = subInfo.getSubscriptionId();
                final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
                        subInfo, mContext);

                // Set displayName as summary if there is only one valid SIM.
                if (subsSize == 1
                        && SubscriptionManager.isValidSubscriptionId(subInfo.getSubscriptionId())) {
                        && SubscriptionManager.isValidSubscriptionId(subId)
                        && isInService(subId)) {
                    return displayName;
                }

                CharSequence status = getPreferredStatus(subInfo);
                CharSequence status = getPreferredStatus(subsSize, subId);
                if (status.toString().isEmpty()) {
                    // If there are 2 or more SIMs and one of these has no preferred status,
                    // set only its displayName as summary.
@@ -121,14 +127,14 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
    }

    @VisibleForTesting
    protected CharSequence getPreferredStatus(SubscriptionInfo subInfo) {
        final int subId = subInfo.getSubscriptionId();
    protected CharSequence getPreferredStatus(int subsSize, int subId) {
        String status = "";
        boolean isDataPreferred = subId == getDefaultVoiceSubscriptionId();
        boolean isSmsPreferred = subId == getDefaultSmsSubscriptionId();

        if (!SubscriptionManager.isValidSubscriptionId(subId)) {
            status = setSummaryResId(R.string.calls_sms_unavailable);
        if (!SubscriptionManager.isValidSubscriptionId(subId) || !isInService(subId)) {
            status = setSummaryResId(subsSize > 1 ? R.string.calls_sms_unavailable :
                    R.string.calls_sms_temp_unavailable);
        } else {
            if (isDataPreferred && isSmsPreferred) {
                status = setSummaryResId(R.string.calls_sms_preferred);
@@ -203,4 +209,11 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
        refreshSummary(mPreference);
        update();
    }

    @VisibleForTesting
    protected boolean isInService(int subId) {
        ServiceState serviceState =
                mTelephonyManager.createForSubscriptionId(subId).getServiceState();
        return Utils.isInService(serviceState);
    }
}
+11 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import android.content.Context;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;

import com.android.settings.Utils;

public class CallsDefaultSubscriptionController extends DefaultSubscriptionController {

    public CallsDefaultSubscriptionController(Context context, String preferenceKey) {
@@ -40,4 +42,13 @@ public class CallsDefaultSubscriptionController extends DefaultSubscriptionContr
    protected void setDefaultSubscription(int subscriptionId) {
        mManager.setDefaultVoiceSubscriptionId(subscriptionId);
    }

    @Override
    public CharSequence getSummary() {
        if (Utils.isProviderModelEnabled(mContext)) {
            return MobileNetworkUtils.getPreferredStatus(mContext, mManager, true);
        } else {
            return super.getSummary();
        }
    }
}
+76 −2
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ import com.android.internal.util.ArrayUtils;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.SubscriptionUtil;
import com.android.settings.network.ims.WifiCallingQueryImsState;
import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
import com.android.settingslib.development.DevelopmentSettingsEnabler;
@@ -600,8 +601,7 @@ public class MobileNetworkUtils {
        final Drawable networkDrawable =
                iconType == NO_CELL_DATA_TYPE_ICON
                        ? EMPTY_DRAWABLE
                        : context
                                .getResources().getDrawable(iconType, context.getTheme());
                        : context.getResources().getDrawable(iconType, context.getTheme());

        // Overlay the two drawables
        final Drawable[] layers = {networkDrawable, signalDrawable};
@@ -920,4 +920,78 @@ public class MobileNetworkUtils {
        }
        return isWifiCallingEnabled;
    }


    /**
     * Returns preferred status of Calls & SMS separately when Provider Model is enabled.
     */
    public static CharSequence getPreferredStatus(Context context,
            SubscriptionManager subscriptionManager, boolean isPreferredCallStatus) {
        final List<SubscriptionInfo> subs = SubscriptionUtil.getActiveSubscriptions(
                subscriptionManager);
        if (!subs.isEmpty()) {
            final StringBuilder summary = new StringBuilder();
            for (SubscriptionInfo subInfo : subs) {
                int subsSize = subs.size();
                final CharSequence displayName = SubscriptionUtil.getUniqueSubscriptionDisplayName(
                        subInfo, context);

                // Set displayName as summary if there is only one valid SIM.
                if (subsSize == 1
                        && SubscriptionManager.isValidSubscriptionId(subInfo.getSubscriptionId())) {
                    return displayName;
                }

                CharSequence status = isPreferredCallStatus
                        ? getPreferredCallStatus(context, subInfo)
                        : getPreferredSmsStatus(context, subInfo);
                if (status.toString().isEmpty()) {
                    // If there are 2 or more SIMs and one of these has no preferred status,
                    // set only its displayName as summary.
                    summary.append(displayName);
                } else {
                    summary.append(displayName)
                            .append(" (")
                            .append(status)
                            .append(")");
                }
                // Do not add ", " for the last subscription.
                if (subInfo != subs.get(subs.size() - 1)) {
                    summary.append(", ");
                }
            }
            return summary;
        } else {
            return "";
        }
    }

    private static CharSequence getPreferredCallStatus(Context context, SubscriptionInfo subInfo) {
        final int subId = subInfo.getSubscriptionId();
        String status = "";
        boolean isDataPreferred = subId == SubscriptionManager.getDefaultVoiceSubscriptionId();

        if (isDataPreferred) {
            status = setSummaryResId(context, R.string.calls_sms_preferred);
        }

        return status;
    }

    private static CharSequence getPreferredSmsStatus(Context context, SubscriptionInfo subInfo) {
        final int subId = subInfo.getSubscriptionId();
        String status = "";
        boolean isSmsPreferred = subId == SubscriptionManager.getDefaultSmsSubscriptionId();

        if (isSmsPreferred) {
            status = setSummaryResId(context, R.string.calls_sms_preferred);
        }

        return status;
    }

    private static String setSummaryResId(Context context, int resId) {
        return context.getResources().getString(resId);
    }

}
+11 −0
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import android.telecom.PhoneAccountHandle;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;

import com.android.settings.Utils;

public class SmsDefaultSubscriptionController extends DefaultSubscriptionController {

    private final boolean mIsAskEverytimeSupported;
@@ -56,4 +58,13 @@ public class SmsDefaultSubscriptionController extends DefaultSubscriptionControl
        // Not supporting calling account override by VoIP
        return null;
    }

    @Override
    public CharSequence getSummary() {
        if (Utils.isProviderModelEnabled(mContext)) {
            return MobileNetworkUtils.getPreferredStatus(mContext, mManager, false);
        } else {
            return super.getSummary();
        }
    }
}
Loading