Merge "[Settings] Expand scrollable area of Wifi calling UI" into tm-dev am: 69c13dd49b
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/18335865 Change-Id: I97a8fa29785afb776db60ce8954be297d4decd25 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -21,12 +21,6 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<com.android.settings.widget.SettingsMainSwitchBar
|
|
||||||
android:id="@+id/switch_bar"
|
|
||||||
android:title="@string/wifi_calling_main_switch_title"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_width="match_parent" />
|
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@android:id/tabcontent"
|
android:id="@android:id/tabcontent"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
@@ -19,6 +19,10 @@
|
|||||||
android:key="wifi_calling_settings"
|
android:key="wifi_calling_settings"
|
||||||
android:title="@string/wifi_calling_settings_title">
|
android:title="@string/wifi_calling_settings_title">
|
||||||
|
|
||||||
|
<com.android.settings.widget.SettingsMainSwitchPreference
|
||||||
|
android:key="wifi_calling_switch_bar"
|
||||||
|
android:title="@string/wifi_calling_main_switch_title" />
|
||||||
|
|
||||||
<com.android.settings.wifi.calling.ListWithEntrySummaryPreference
|
<com.android.settings.wifi.calling.ListWithEntrySummaryPreference
|
||||||
android:key="wifi_calling_mode"
|
android:key="wifi_calling_mode"
|
||||||
isPreferenceVisible="false"
|
isPreferenceVisible="false"
|
||||||
|
@@ -30,13 +30,12 @@ import android.view.ViewGroup;
|
|||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
|
||||||
import androidx.fragment.app.FragmentManager;
|
import androidx.fragment.app.FragmentManager;
|
||||||
import androidx.fragment.app.FragmentPagerAdapter;
|
import androidx.fragment.app.FragmentPagerAdapter;
|
||||||
|
|
||||||
import com.android.internal.util.CollectionUtils;
|
import com.android.internal.util.CollectionUtils;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.InstrumentedFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
import com.android.settings.network.ActiveSubscriptionsListener;
|
import com.android.settings.network.ActiveSubscriptionsListener;
|
||||||
import com.android.settings.network.SubscriptionUtil;
|
import com.android.settings.network.SubscriptionUtil;
|
||||||
import com.android.settings.network.ims.WifiCallingQueryImsState;
|
import com.android.settings.network.ims.WifiCallingQueryImsState;
|
||||||
@@ -54,7 +53,8 @@ import java.util.List;
|
|||||||
* "Wi-Fi Calling settings" screen. This is the container fragment which holds
|
* "Wi-Fi Calling settings" screen. This is the container fragment which holds
|
||||||
* {@link WifiCallingSettingsForSub} fragments.
|
* {@link WifiCallingSettingsForSub} fragments.
|
||||||
*/
|
*/
|
||||||
public class WifiCallingSettings extends InstrumentedFragment implements HelpResourceProvider {
|
public class WifiCallingSettings extends SettingsPreferenceFragment
|
||||||
|
implements HelpResourceProvider {
|
||||||
private static final String TAG = "WifiCallingSettings";
|
private static final String TAG = "WifiCallingSettings";
|
||||||
private int mConstructionSubId;
|
private int mConstructionSubId;
|
||||||
private List<SubscriptionInfo> mSil;
|
private List<SubscriptionInfo> mSil;
|
||||||
@@ -317,17 +317,7 @@ public class WifiCallingSettings extends InstrumentedFragment implements HelpRes
|
|||||||
}
|
}
|
||||||
|
|
||||||
// close this fragment
|
// close this fragment
|
||||||
finish();
|
finishFragment();
|
||||||
}
|
|
||||||
|
|
||||||
protected void finish() {
|
|
||||||
FragmentActivity activity = getActivity();
|
|
||||||
if (activity == null) return;
|
|
||||||
if (getFragmentManager().getBackStackEntryCount() > 0) {
|
|
||||||
getFragmentManager().popBackStack();
|
|
||||||
} else {
|
|
||||||
activity.finish();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected int [] subscriptionIdList(List<SubscriptionInfo> subInfoList) {
|
protected int [] subscriptionIdList(List<SubscriptionInfo> subInfoList) {
|
||||||
|
@@ -27,7 +27,6 @@ import android.content.res.Resources;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.PersistableBundle;
|
import android.os.PersistableBundle;
|
||||||
import android.telephony.CarrierConfigManager;
|
import android.telephony.CarrierConfigManager;
|
||||||
import android.telephony.PhoneStateListener;
|
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyCallback;
|
import android.telephony.TelephonyCallback;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
@@ -40,7 +39,6 @@ import android.view.LayoutInflater;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Switch;
|
import android.widget.Switch;
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
@@ -56,8 +54,7 @@ import com.android.settings.SettingsPreferenceFragment;
|
|||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.network.ims.WifiCallingQueryImsState;
|
import com.android.settings.network.ims.WifiCallingQueryImsState;
|
||||||
import com.android.settings.widget.SettingsMainSwitchBar;
|
import com.android.settings.widget.SettingsMainSwitchPreference;
|
||||||
import com.android.settings.wifi.calling.LinkifyDescriptionPreference;
|
|
||||||
import com.android.settingslib.widget.OnMainSwitchChangeListener;
|
import com.android.settingslib.widget.OnMainSwitchChangeListener;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -72,6 +69,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
private static final String TAG = "WifiCallingForSub";
|
private static final String TAG = "WifiCallingForSub";
|
||||||
|
|
||||||
//String keys for preference lookup
|
//String keys for preference lookup
|
||||||
|
private static final String SWITCH_BAR = "wifi_calling_switch_bar";
|
||||||
private static final String BUTTON_WFC_MODE = "wifi_calling_mode";
|
private static final String BUTTON_WFC_MODE = "wifi_calling_mode";
|
||||||
private static final String BUTTON_WFC_ROAMING_MODE = "wifi_calling_roaming_mode";
|
private static final String BUTTON_WFC_ROAMING_MODE = "wifi_calling_roaming_mode";
|
||||||
private static final String PREFERENCE_EMERGENCY_ADDRESS = "emergency_address_key";
|
private static final String PREFERENCE_EMERGENCY_ADDRESS = "emergency_address_key";
|
||||||
@@ -91,7 +89,7 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
public static final int LAUCH_APP_UPDATE = 1;
|
public static final int LAUCH_APP_UPDATE = 1;
|
||||||
|
|
||||||
//UI objects
|
//UI objects
|
||||||
private SettingsMainSwitchBar mSwitchBar;
|
private SettingsMainSwitchPreference mSwitchBar;
|
||||||
private ListWithEntrySummaryPreference mButtonWfcMode;
|
private ListWithEntrySummaryPreference mButtonWfcMode;
|
||||||
private ListWithEntrySummaryPreference mButtonWfcRoamingMode;
|
private ListWithEntrySummaryPreference mButtonWfcRoamingMode;
|
||||||
private Preference mUpdateAddress;
|
private Preference mUpdateAddress;
|
||||||
@@ -119,41 +117,57 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
@Override
|
@Override
|
||||||
public void onCallStateChanged(int state) {
|
public void onCallStateChanged(int state) {
|
||||||
final SettingsActivity activity = (SettingsActivity) getActivity();
|
final SettingsActivity activity = (SettingsActivity) getActivity();
|
||||||
final boolean isNonTtyOrTtyOnVolteEnabled =
|
|
||||||
queryImsState(WifiCallingSettingsForSub.this.mSubId).isAllowUserControl();
|
boolean isWfcEnabled = false;
|
||||||
final boolean isWfcEnabled = mSwitchBar.isChecked()
|
boolean isCallStateIdle = false;
|
||||||
&& isNonTtyOrTtyOnVolteEnabled;
|
|
||||||
boolean isCallStateIdle = getTelephonyManagerForSub(
|
final SettingsMainSwitchPreference prefSwitch = (SettingsMainSwitchPreference)
|
||||||
WifiCallingSettingsForSub.this.mSubId).getCallState()
|
getPreferenceScreen().findPreference(SWITCH_BAR);
|
||||||
== TelephonyManager.CALL_STATE_IDLE;
|
if (prefSwitch != null) {
|
||||||
mSwitchBar.setEnabled(isCallStateIdle
|
isWfcEnabled = prefSwitch.isChecked();
|
||||||
&& isNonTtyOrTtyOnVolteEnabled);
|
isCallStateIdle = getTelephonyManagerForSub(
|
||||||
|
WifiCallingSettingsForSub.this.mSubId).getCallState()
|
||||||
|
== TelephonyManager.CALL_STATE_IDLE;
|
||||||
|
|
||||||
|
boolean isNonTtyOrTtyOnVolteEnabled = true;
|
||||||
|
if (isWfcEnabled || isCallStateIdle) {
|
||||||
|
isNonTtyOrTtyOnVolteEnabled =
|
||||||
|
queryImsState(WifiCallingSettingsForSub.this.mSubId)
|
||||||
|
.isAllowUserControl();
|
||||||
|
}
|
||||||
|
|
||||||
|
isWfcEnabled = isWfcEnabled && isNonTtyOrTtyOnVolteEnabled;
|
||||||
|
prefSwitch.setEnabled(isCallStateIdle && isNonTtyOrTtyOnVolteEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
boolean isWfcModeEditable = true;
|
boolean isWfcModeEditable = true;
|
||||||
boolean isWfcRoamingModeEditable = false;
|
boolean isWfcRoamingModeEditable = false;
|
||||||
final CarrierConfigManager configManager = (CarrierConfigManager)
|
if (isWfcEnabled && isCallStateIdle) {
|
||||||
activity.getSystemService(Context.CARRIER_CONFIG_SERVICE);
|
final CarrierConfigManager configManager = (CarrierConfigManager)
|
||||||
if (configManager != null) {
|
activity.getSystemService(Context.CARRIER_CONFIG_SERVICE);
|
||||||
PersistableBundle b =
|
if (configManager != null) {
|
||||||
configManager.getConfigForSubId(WifiCallingSettingsForSub.this.mSubId);
|
PersistableBundle b = configManager.getConfigForSubId(
|
||||||
if (b != null) {
|
WifiCallingSettingsForSub.this.mSubId);
|
||||||
isWfcModeEditable = b.getBoolean(
|
if (b != null) {
|
||||||
CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL);
|
isWfcModeEditable = b.getBoolean(
|
||||||
isWfcRoamingModeEditable = b.getBoolean(
|
CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL);
|
||||||
CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL);
|
isWfcRoamingModeEditable = b.getBoolean(
|
||||||
|
CarrierConfigManager.KEY_EDITABLE_WFC_ROAMING_MODE_BOOL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
isWfcModeEditable = false;
|
||||||
|
isWfcRoamingModeEditable = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
final Preference pref = getPreferenceScreen().findPreference(BUTTON_WFC_MODE);
|
final Preference pref = getPreferenceScreen().findPreference(BUTTON_WFC_MODE);
|
||||||
if (pref != null) {
|
if (pref != null) {
|
||||||
pref.setEnabled(isWfcEnabled && isWfcModeEditable
|
pref.setEnabled(isWfcModeEditable);
|
||||||
&& isCallStateIdle);
|
|
||||||
}
|
}
|
||||||
final Preference pref_roam =
|
final Preference pref_roam =
|
||||||
getPreferenceScreen().findPreference(BUTTON_WFC_ROAMING_MODE);
|
getPreferenceScreen().findPreference(BUTTON_WFC_ROAMING_MODE);
|
||||||
if (pref_roam != null) {
|
if (pref_roam != null) {
|
||||||
pref_roam.setEnabled(isWfcEnabled && isWfcRoamingModeEditable
|
pref_roam.setEnabled(isWfcRoamingModeEditable);
|
||||||
&& isCallStateIdle);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -184,20 +198,6 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onActivityCreated(Bundle savedInstanceState) {
|
|
||||||
super.onActivityCreated(savedInstanceState);
|
|
||||||
|
|
||||||
mSwitchBar = getView().findViewById(R.id.switch_bar);
|
|
||||||
mSwitchBar.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDestroyView() {
|
|
||||||
super.onDestroyView();
|
|
||||||
mSwitchBar.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
void showAlert(Intent intent) {
|
void showAlert(Intent intent) {
|
||||||
final Context context = getActivity();
|
final Context context = getActivity();
|
||||||
@@ -292,6 +292,8 @@ public class WifiCallingSettingsForSub extends SettingsPreferenceFragment
|
|||||||
mProvisioningManager = getImsProvisioningManager();
|
mProvisioningManager = getImsProvisioningManager();
|
||||||
mImsMmTelManager = getImsMmTelManager();
|
mImsMmTelManager = getImsMmTelManager();
|
||||||
|
|
||||||
|
mSwitchBar = (SettingsMainSwitchPreference) findPreference(SWITCH_BAR);
|
||||||
|
|
||||||
mButtonWfcMode = findPreference(BUTTON_WFC_MODE);
|
mButtonWfcMode = findPreference(BUTTON_WFC_MODE);
|
||||||
mButtonWfcMode.setOnPreferenceChangeListener(this);
|
mButtonWfcMode.setOnPreferenceChangeListener(this);
|
||||||
|
|
||||||
|
@@ -55,6 +55,7 @@ import com.android.settings.network.ims.MockWifiCallingQueryImsState;
|
|||||||
import com.android.settings.network.ims.WifiCallingQueryImsState;
|
import com.android.settings.network.ims.WifiCallingQueryImsState;
|
||||||
import com.android.settings.testutils.shadow.ShadowFragment;
|
import com.android.settings.testutils.shadow.ShadowFragment;
|
||||||
import com.android.settings.widget.SettingsMainSwitchBar;
|
import com.android.settings.widget.SettingsMainSwitchBar;
|
||||||
|
import com.android.settings.widget.SettingsMainSwitchPreference;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
@@ -72,6 +73,7 @@ import org.robolectric.util.ReflectionHelpers;
|
|||||||
public class WifiCallingSettingsForSubTest {
|
public class WifiCallingSettingsForSubTest {
|
||||||
private static final int SUB_ID = 2;
|
private static final int SUB_ID = 2;
|
||||||
|
|
||||||
|
private static final String SWITCH_BAR = "wifi_calling_switch_bar";
|
||||||
private static final String BUTTON_WFC_MODE = "wifi_calling_mode";
|
private static final String BUTTON_WFC_MODE = "wifi_calling_mode";
|
||||||
private static final String BUTTON_WFC_ROAMING_MODE = "wifi_calling_roaming_mode";
|
private static final String BUTTON_WFC_ROAMING_MODE = "wifi_calling_roaming_mode";
|
||||||
private static final String PREFERENCE_NO_OPTIONS_DESC = "no_options_description";
|
private static final String PREFERENCE_NO_OPTIONS_DESC = "no_options_description";
|
||||||
@@ -100,6 +102,8 @@ public class WifiCallingSettingsForSubTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private View mView;
|
private View mView;
|
||||||
@Mock
|
@Mock
|
||||||
|
private SettingsMainSwitchPreference mSwitchBarPreference;
|
||||||
|
@Mock
|
||||||
private LinkifyDescriptionPreference mDescriptionView;
|
private LinkifyDescriptionPreference mDescriptionView;
|
||||||
@Mock
|
@Mock
|
||||||
private ListWithEntrySummaryPreference mButtonWfcMode;
|
private ListWithEntrySummaryPreference mButtonWfcMode;
|
||||||
@@ -116,6 +120,7 @@ public class WifiCallingSettingsForSubTest {
|
|||||||
doReturn(mContext.getTheme()).when(mActivity).getTheme();
|
doReturn(mContext.getTheme()).when(mActivity).getTheme();
|
||||||
|
|
||||||
mFragment = spy(new TestFragment());
|
mFragment = spy(new TestFragment());
|
||||||
|
mFragment.setSwitchBar(mSwitchBarPreference);
|
||||||
doReturn(mActivity).when(mFragment).getActivity();
|
doReturn(mActivity).when(mFragment).getActivity();
|
||||||
doReturn(mContext).when(mFragment).getContext();
|
doReturn(mContext).when(mFragment).getContext();
|
||||||
doReturn(mock(Intent.class)).when(mActivity).getIntent();
|
doReturn(mock(Intent.class)).when(mActivity).getIntent();
|
||||||
@@ -125,10 +130,6 @@ public class WifiCallingSettingsForSubTest {
|
|||||||
final Bundle bundle = new Bundle();
|
final Bundle bundle = new Bundle();
|
||||||
when(mFragment.getArguments()).thenReturn(bundle);
|
when(mFragment.getArguments()).thenReturn(bundle);
|
||||||
doNothing().when(mFragment).addPreferencesFromResource(anyInt());
|
doNothing().when(mFragment).addPreferencesFromResource(anyInt());
|
||||||
doReturn(mock(ListWithEntrySummaryPreference.class)).when(mFragment).findPreference(any());
|
|
||||||
doReturn(mButtonWfcMode).when(mFragment).findPreference(BUTTON_WFC_MODE);
|
|
||||||
doReturn(mButtonWfcRoamingMode).when(mFragment).findPreference(BUTTON_WFC_ROAMING_MODE);
|
|
||||||
doReturn(mDescriptionView).when(mFragment).findPreference(PREFERENCE_NO_OPTIONS_DESC);
|
|
||||||
doNothing().when(mFragment).finish();
|
doNothing().when(mFragment).finish();
|
||||||
doReturn(mView).when(mFragment).getView();
|
doReturn(mView).when(mFragment).getView();
|
||||||
|
|
||||||
@@ -344,6 +345,29 @@ public class WifiCallingSettingsForSubTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected class TestFragment extends WifiCallingSettingsForSub {
|
protected class TestFragment extends WifiCallingSettingsForSub {
|
||||||
|
private SettingsMainSwitchPreference mSwitchPref;
|
||||||
|
|
||||||
|
protected void setSwitchBar(SettingsMainSwitchPreference switchPref) {
|
||||||
|
mSwitchPref = switchPref;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T extends Preference> T findPreference(CharSequence key) {
|
||||||
|
if (SWITCH_BAR.equals(key)) {
|
||||||
|
return (T) mSwitchPref;
|
||||||
|
}
|
||||||
|
if (BUTTON_WFC_MODE.equals(key)) {
|
||||||
|
return (T) mButtonWfcMode;
|
||||||
|
}
|
||||||
|
if (BUTTON_WFC_ROAMING_MODE.equals(key)) {
|
||||||
|
return (T) mButtonWfcRoamingMode;
|
||||||
|
}
|
||||||
|
if (PREFERENCE_NO_OPTIONS_DESC.equals(key)) {
|
||||||
|
return (T) mDescriptionView;
|
||||||
|
}
|
||||||
|
return (T) mock(ListWithEntrySummaryPreference.class);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Object getSystemService(final String name) {
|
protected Object getSystemService(final String name) {
|
||||||
switch (name) {
|
switch (name) {
|
||||||
|
Reference in New Issue
Block a user