[Settings] Fix RTL issue of Calls and SMS

Screenshot: https://screenshot.googleplex.com/9BqEh99vz7xp2g4.png

Bug: 189300799
Test: make
Change-Id: I022253efbe0ea25f11d5ac6c2b3b0fcd1d9f54aa
(cherry picked from commit 54bd206fbc)
Merged-In: I022253efbe0ea25f11d5ac6c2b3b0fcd1d9f54aa
This commit is contained in:
Zoey Chen
2021-07-12 23:43:41 +08:00
parent c97269a900
commit 95bcd7cb23
5 changed files with 27 additions and 5 deletions

View File

@@ -24,6 +24,7 @@ import android.telephony.ServiceState;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.view.View;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.LifecycleObserver;
@@ -44,12 +45,14 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
private static final String TAG = "NetworkProviderCallsSmsController"; private static final String TAG = "NetworkProviderCallsSmsController";
private static final String KEY = "calls_and_sms"; private static final String KEY = "calls_and_sms";
private static final String RTL_MARK = "\u200F";
private UserManager mUserManager; private UserManager mUserManager;
private SubscriptionManager mSubscriptionManager; private SubscriptionManager mSubscriptionManager;
private SubscriptionsChangeListener mSubscriptionsChangeListener; private SubscriptionsChangeListener mSubscriptionsChangeListener;
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
private RestrictedPreference mPreference; private RestrictedPreference mPreference;
private boolean mIsRtlMode;
/** /**
* The summary text and click behavior of the "Calls & SMS" item on the * The summary text and click behavior of the "Calls & SMS" item on the
@@ -61,6 +64,8 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
mUserManager = context.getSystemService(UserManager.class); mUserManager = context.getSystemService(UserManager.class);
mSubscriptionManager = context.getSystemService(SubscriptionManager.class); mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
mTelephonyManager = mContext.getSystemService(TelephonyManager.class); mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
mIsRtlMode = context.getResources().getConfiguration().getLayoutDirection()
== View.LAYOUT_DIRECTION_RTL;
if (lifecycle != null) { if (lifecycle != null) {
mSubscriptionsChangeListener = new SubscriptionsChangeListener(context, this); mSubscriptionsChangeListener = new SubscriptionsChangeListener(context, this);
lifecycle.addObserver(this); lifecycle.addObserver(this);
@@ -121,6 +126,10 @@ public class NetworkProviderCallsSmsController extends AbstractPreferenceControl
if (subInfo != subs.get(subs.size() - 1)) { if (subInfo != subs.get(subs.size() - 1)) {
summary.append(", "); summary.append(", ");
} }
if (mIsRtlMode) {
summary.insert(0, RTL_MARK).insert(summary.length(), RTL_MARK);
}
} }
return summary; return summary;
} }

View File

@@ -46,7 +46,7 @@ public class CallsDefaultSubscriptionController extends DefaultSubscriptionContr
@Override @Override
public CharSequence getSummary() { public CharSequence getSummary() {
if (Utils.isProviderModelEnabled(mContext)) { if (Utils.isProviderModelEnabled(mContext)) {
return MobileNetworkUtils.getPreferredStatus(mContext, mManager, true); return MobileNetworkUtils.getPreferredStatus(isRtlMode(), mContext, mManager, true);
} else { } else {
return super.getSummary(); return super.getSummary();
} }

View File

@@ -26,6 +26,7 @@ import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager; import android.telecom.TelecomManager;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.view.View;
import androidx.lifecycle.Lifecycle; import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.LifecycleObserver;
@@ -62,11 +63,14 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
private static final ComponentName PSTN_CONNECTION_SERVICE_COMPONENT = private static final ComponentName PSTN_CONNECTION_SERVICE_COMPONENT =
new ComponentName("com.android.phone", new ComponentName("com.android.phone",
"com.android.services.telephony.TelephonyConnectionService"); "com.android.services.telephony.TelephonyConnectionService");
private boolean mIsRtlMode;
public DefaultSubscriptionController(Context context, String preferenceKey) { public DefaultSubscriptionController(Context context, String preferenceKey) {
super(context, preferenceKey); super(context, preferenceKey);
mManager = context.getSystemService(SubscriptionManager.class); mManager = context.getSystemService(SubscriptionManager.class);
mChangeListener = new SubscriptionsChangeListener(context, this); mChangeListener = new SubscriptionsChangeListener(context, this);
mIsRtlMode = context.getResources().getConfiguration().getLayoutDirection()
== View.LAYOUT_DIRECTION_RTL;
} }
public void init(Lifecycle lifecycle) { public void init(Lifecycle lifecycle) {
@@ -285,4 +289,8 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
refreshSummary(mPreference); refreshSummary(mPreference);
} }
} }
boolean isRtlMode() {
return mIsRtlMode;
}
} }

View File

@@ -99,6 +99,7 @@ public class MobileNetworkUtils {
"esim.enable_esim_system_ui_by_default"; "esim.enable_esim_system_ui_by_default";
private static final String LEGACY_ACTION_CONFIGURE_PHONE_ACCOUNT = private static final String LEGACY_ACTION_CONFIGURE_PHONE_ACCOUNT =
"android.telecom.action.CONNECTION_SERVICE_CONFIGURE"; "android.telecom.action.CONNECTION_SERVICE_CONFIGURE";
private static final String RTL_MARK = "\u200F";
// The following constants are used to draw signal icon. // The following constants are used to draw signal icon.
public static final int NO_CELL_DATA_TYPE_ICON = 0; public static final int NO_CELL_DATA_TYPE_ICON = 0;
@@ -922,7 +923,7 @@ public class MobileNetworkUtils {
/** /**
* Returns preferred status of Calls & SMS separately when Provider Model is enabled. * Returns preferred status of Calls & SMS separately when Provider Model is enabled.
*/ */
public static CharSequence getPreferredStatus(Context context, public static CharSequence getPreferredStatus(boolean isRtlMode, Context context,
SubscriptionManager subscriptionManager, boolean isPreferredCallStatus) { SubscriptionManager subscriptionManager, boolean isPreferredCallStatus) {
final List<SubscriptionInfo> subs = SubscriptionUtil.getActiveSubscriptions( final List<SubscriptionInfo> subs = SubscriptionUtil.getActiveSubscriptions(
subscriptionManager); subscriptionManager);
@@ -956,6 +957,10 @@ public class MobileNetworkUtils {
if (subInfo != subs.get(subs.size() - 1)) { if (subInfo != subs.get(subs.size() - 1)) {
summary.append(", "); summary.append(", ");
} }
if (isRtlMode) {
summary.insert(0, RTL_MARK).insert(summary.length(), RTL_MARK);
}
} }
return summary; return summary;
} else { } else {

View File

@@ -62,7 +62,7 @@ public class SmsDefaultSubscriptionController extends DefaultSubscriptionControl
@Override @Override
public CharSequence getSummary() { public CharSequence getSummary() {
if (Utils.isProviderModelEnabled(mContext)) { if (Utils.isProviderModelEnabled(mContext)) {
return MobileNetworkUtils.getPreferredStatus(mContext, mManager, false); return MobileNetworkUtils.getPreferredStatus(isRtlMode(), mContext, mManager, false);
} else { } else {
return super.getSummary(); return super.getSummary();
} }