[Settings] Code refactor - NetworkModePreference
Code refactor for improving readibility. Bug: 223461708 Test: unit test EnabledNetworkModePreferenceControllerTest Change-Id: I3b3157cbc76f104d63062fda495a7391ecc18ada
This commit is contained in:
@@ -39,11 +39,14 @@ import com.android.settings.R;
|
||||
import com.android.settings.network.AllowedNetworkTypesListener;
|
||||
import com.android.settings.network.CarrierConfigCache;
|
||||
import com.android.settings.network.SubscriptionsChangeListener;
|
||||
import com.android.settings.network.telephony.NetworkModeChoicesProto.EnabledNetworks;
|
||||
import com.android.settings.network.telephony.NetworkModeChoicesProto.UiOptions;
|
||||
import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.IntStream;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
@@ -187,21 +190,6 @@ public class EnabledNetworkModePreferenceController extends
|
||||
}
|
||||
}
|
||||
|
||||
enum EnabledNetworks {
|
||||
ENABLED_NETWORKS_UNKNOWN,
|
||||
ENABLED_NETWORKS_CDMA_CHOICES,
|
||||
ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES,
|
||||
ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES,
|
||||
ENABLED_NETWORKS_TDSCDMA_CHOICES,
|
||||
ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES,
|
||||
ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES,
|
||||
ENABLED_NETWORKS_EXCEPT_GSM_CHOICES,
|
||||
ENABLED_NETWORKS_EXCEPT_LTE_CHOICES,
|
||||
ENABLED_NETWORKS_4G_CHOICES,
|
||||
ENABLED_NETWORKS_CHOICES,
|
||||
PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE
|
||||
}
|
||||
|
||||
private final class PreferenceEntriesBuilder {
|
||||
private CarrierConfigCache mCarrierConfigCache;
|
||||
private Context mContext;
|
||||
@@ -256,163 +244,144 @@ public class EnabledNetworkModePreferenceController extends
|
||||
final boolean display2gOptions = carrierConfig
|
||||
.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL);
|
||||
clearAllEntries();
|
||||
String[] entryValues;
|
||||
int[] entryValuesInt;
|
||||
switch (getEnabledNetworkType()) {
|
||||
UiOptions.Builder uiOptions = UiOptions.newBuilder();
|
||||
uiOptions.setType(getEnabledNetworkType());
|
||||
switch (uiOptions.getType()) {
|
||||
case ENABLED_NETWORKS_CDMA_CHOICES:
|
||||
entryValues = getResourcesForSubId().getStringArray(
|
||||
R.array.enabled_networks_cdma_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 4) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_CDMA_CHOICES index error.");
|
||||
}
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[0]));
|
||||
addLteEntry(entryValuesInt[0]);
|
||||
add3gEntry(entryValuesInt[1]);
|
||||
if (display2gOptions) {
|
||||
add1xEntry(entryValuesInt[2]);
|
||||
}
|
||||
addGlobalEntry(entryValuesInt[3]);
|
||||
uiOptions = uiOptions
|
||||
.setChoices(R.array.enabled_networks_cdma_values)
|
||||
.addFormat(UiOptions.PresentFormat.add5gAndLteEntry)
|
||||
.addFormat(UiOptions.PresentFormat.add3gEntry)
|
||||
.addFormat(UiOptions.PresentFormat.add1xEntry)
|
||||
.addFormat(UiOptions.PresentFormat.addGlobalEntry);
|
||||
break;
|
||||
case ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES:
|
||||
entryValues = getResourcesForSubId().getStringArray(
|
||||
R.array.enabled_networks_cdma_no_lte_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 2) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_CDMA_NO_LTE_CHOICES index error.");
|
||||
}
|
||||
add3gEntry(entryValuesInt[0]);
|
||||
if (display2gOptions) {
|
||||
add1xEntry(entryValuesInt[1]);
|
||||
}
|
||||
uiOptions = uiOptions
|
||||
.setChoices(R.array.enabled_networks_cdma_no_lte_values)
|
||||
.addFormat(UiOptions.PresentFormat.add3gEntry)
|
||||
.addFormat(UiOptions.PresentFormat.add1xEntry);
|
||||
break;
|
||||
case ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES:
|
||||
entryValues = getResourcesForSubId().getStringArray(
|
||||
R.array.enabled_networks_cdma_only_lte_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 2) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_CDMA_ONLY_LTE_CHOICES index error.");
|
||||
}
|
||||
addLteEntry(entryValuesInt[0]);
|
||||
addGlobalEntry(entryValuesInt[1]);
|
||||
uiOptions = uiOptions
|
||||
.setChoices(R.array.enabled_networks_cdma_only_lte_values)
|
||||
.addFormat(UiOptions.PresentFormat.addLteEntry)
|
||||
.addFormat(UiOptions.PresentFormat.addGlobalEntry);
|
||||
break;
|
||||
case ENABLED_NETWORKS_TDSCDMA_CHOICES:
|
||||
entryValues = getResourcesForSubId().getStringArray(
|
||||
R.array.enabled_networks_tdscdma_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 3) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_TDSCDMA_CHOICES index error.");
|
||||
}
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[0]));
|
||||
addLteEntry(entryValuesInt[0]);
|
||||
add3gEntry(entryValuesInt[1]);
|
||||
if (display2gOptions) {
|
||||
add2gEntry(entryValuesInt[2]);
|
||||
}
|
||||
uiOptions = uiOptions
|
||||
.setChoices(R.array.enabled_networks_tdscdma_values)
|
||||
.addFormat(UiOptions.PresentFormat.add5gAndLteEntry)
|
||||
.addFormat(UiOptions.PresentFormat.add3gEntry)
|
||||
.addFormat(UiOptions.PresentFormat.add2gEntry);
|
||||
break;
|
||||
case ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES:
|
||||
entryValues = getResourcesForSubId().getStringArray(
|
||||
R.array.enabled_networks_except_gsm_lte_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 1) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_EXCEPT_GSM_LTE_CHOICES index error.");
|
||||
}
|
||||
add3gEntry(entryValuesInt[0]);
|
||||
uiOptions = uiOptions
|
||||
.setChoices(R.array.enabled_networks_except_gsm_lte_values)
|
||||
.addFormat(UiOptions.PresentFormat.add3gEntry);
|
||||
break;
|
||||
case ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES:
|
||||
entryValues = getResourcesForSubId().getStringArray(
|
||||
R.array.enabled_networks_except_gsm_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 2) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_EXCEPT_GSM_4G_CHOICES index error.");
|
||||
}
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[0]));
|
||||
add4gEntry(entryValuesInt[0]);
|
||||
add3gEntry(entryValuesInt[1]);
|
||||
uiOptions = uiOptions
|
||||
.setChoices(R.array.enabled_networks_except_gsm_values)
|
||||
.addFormat(UiOptions.PresentFormat.add5gAnd4gEntry)
|
||||
.addFormat(UiOptions.PresentFormat.add3gEntry);
|
||||
break;
|
||||
case ENABLED_NETWORKS_EXCEPT_GSM_CHOICES:
|
||||
entryValues = getResourcesForSubId().getStringArray(
|
||||
R.array.enabled_networks_except_gsm_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 2) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_EXCEPT_GSM_CHOICES index error.");
|
||||
}
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[0]));
|
||||
addLteEntry(entryValuesInt[0]);
|
||||
add3gEntry(entryValuesInt[1]);
|
||||
uiOptions = uiOptions
|
||||
.setChoices(R.array.enabled_networks_except_gsm_values)
|
||||
.addFormat(UiOptions.PresentFormat.add5gAndLteEntry)
|
||||
.addFormat(UiOptions.PresentFormat.add3gEntry);
|
||||
break;
|
||||
case ENABLED_NETWORKS_EXCEPT_LTE_CHOICES:
|
||||
entryValues = getResourcesForSubId().getStringArray(
|
||||
R.array.enabled_networks_except_lte_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 2) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_EXCEPT_LTE_CHOICES index error.");
|
||||
}
|
||||
add3gEntry(entryValuesInt[0]);
|
||||
if (carrierConfig.getBoolean(CarrierConfigManager.KEY_PREFER_2G_BOOL)) {
|
||||
add2gEntry(entryValuesInt[1]);
|
||||
}
|
||||
uiOptions = uiOptions
|
||||
.setChoices(R.array.enabled_networks_except_lte_values)
|
||||
.addFormat(UiOptions.PresentFormat.add3gEntry)
|
||||
.addFormat(UiOptions.PresentFormat.add2gEntry);
|
||||
break;
|
||||
case ENABLED_NETWORKS_4G_CHOICES:
|
||||
entryValues = getResourcesForSubId().getStringArray(
|
||||
R.array.enabled_networks_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 3) {
|
||||
throw new IllegalArgumentException(
|
||||
"ENABLED_NETWORKS_4G_CHOICES index error.");
|
||||
}
|
||||
add5gEntry(addNrToLteNetworkType(
|
||||
entryValuesInt[0]));
|
||||
add4gEntry(entryValuesInt[0]);
|
||||
add3gEntry(entryValuesInt[1]);
|
||||
if (display2gOptions) {
|
||||
add2gEntry(entryValuesInt[2]);
|
||||
}
|
||||
uiOptions = uiOptions
|
||||
.setChoices(R.array.enabled_networks_values)
|
||||
.addFormat(UiOptions.PresentFormat.add5gAnd4gEntry)
|
||||
.addFormat(UiOptions.PresentFormat.add3gEntry)
|
||||
.addFormat(UiOptions.PresentFormat.add2gEntry);
|
||||
break;
|
||||
case ENABLED_NETWORKS_CHOICES:
|
||||
entryValues = getResourcesForSubId().getStringArray(
|
||||
R.array.enabled_networks_values);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 3) {
|
||||
throw new IllegalArgumentException("ENABLED_NETWORKS_CHOICES index error.");
|
||||
}
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[0]));
|
||||
addLteEntry(entryValuesInt[0]);
|
||||
add3gEntry(entryValuesInt[1]);
|
||||
if (display2gOptions) {
|
||||
add2gEntry(entryValuesInt[2]);
|
||||
}
|
||||
uiOptions = uiOptions
|
||||
.setChoices(R.array.enabled_networks_values)
|
||||
.addFormat(UiOptions.PresentFormat.add5gAndLteEntry)
|
||||
.addFormat(UiOptions.PresentFormat.add3gEntry)
|
||||
.addFormat(UiOptions.PresentFormat.add2gEntry);
|
||||
break;
|
||||
case PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE:
|
||||
entryValues = getResourcesForSubId().getStringArray(
|
||||
R.array.preferred_network_mode_values_world_mode);
|
||||
entryValuesInt = Stream.of(entryValues).mapToInt(Integer::parseInt).toArray();
|
||||
if (entryValuesInt.length < 3) {
|
||||
throw new IllegalArgumentException(
|
||||
"PREFERRED_NETWORK_MODE_CHOICES_WORLD_MODE index error.");
|
||||
}
|
||||
addGlobalEntry(entryValuesInt[0]);
|
||||
|
||||
addCustomEntry(
|
||||
getResourcesForSubId().getString(
|
||||
R.string.network_world_mode_cdma_lte),
|
||||
entryValuesInt[1]);
|
||||
addCustomEntry(
|
||||
getResourcesForSubId().getString(
|
||||
R.string.network_world_mode_gsm_lte),
|
||||
entryValuesInt[2]);
|
||||
uiOptions = uiOptions
|
||||
.setChoices(R.array.preferred_network_mode_values_world_mode)
|
||||
.addFormat(UiOptions.PresentFormat.addGlobalEntry)
|
||||
.addFormat(UiOptions.PresentFormat.addWorldModeCdmaEntry)
|
||||
.addFormat(UiOptions.PresentFormat.addWorldModeGsmEntry);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Not supported enabled network types.");
|
||||
}
|
||||
|
||||
String[] entryValues = getResourcesForSubId().getStringArray(uiOptions.getChoices());
|
||||
final int[] entryValuesInt = Stream.of(entryValues)
|
||||
.mapToInt(Integer::parseInt).toArray();
|
||||
final List<UiOptions.PresentFormat> formatList = uiOptions.getFormatList();
|
||||
if (entryValuesInt.length < formatList.size()) {
|
||||
throw new IllegalArgumentException(
|
||||
uiOptions.getType().name() + " index error.");
|
||||
}
|
||||
// Compose options based on given values and formats.
|
||||
IntStream.range(0, formatList.size()).forEach(entryIndex -> {
|
||||
switch (formatList.get(entryIndex)) {
|
||||
case add1xEntry:
|
||||
if (display2gOptions) {
|
||||
add1xEntry(entryValuesInt[entryIndex]);
|
||||
}
|
||||
break;
|
||||
case add2gEntry:
|
||||
if (display2gOptions) {
|
||||
add2gEntry(entryValuesInt[entryIndex]);
|
||||
}
|
||||
break;
|
||||
case add3gEntry:
|
||||
add3gEntry(entryValuesInt[entryIndex]);
|
||||
break;
|
||||
case addGlobalEntry:
|
||||
addGlobalEntry(entryValuesInt[entryIndex]);
|
||||
break;
|
||||
case addWorldModeCdmaEntry:
|
||||
addCustomEntry(
|
||||
getResourcesForSubId().getString(
|
||||
R.string.network_world_mode_cdma_lte),
|
||||
entryValuesInt[entryIndex]);
|
||||
break;
|
||||
case addWorldModeGsmEntry:
|
||||
addCustomEntry(
|
||||
getResourcesForSubId().getString(
|
||||
R.string.network_world_mode_gsm_lte),
|
||||
entryValuesInt[entryIndex]);
|
||||
break;
|
||||
case add4gEntry:
|
||||
add4gEntry(entryValuesInt[entryIndex]);
|
||||
break;
|
||||
case addLteEntry:
|
||||
addLteEntry(entryValuesInt[entryIndex]);
|
||||
break;
|
||||
case add5gEntry:
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex]));
|
||||
break;
|
||||
case add5gAnd4gEntry:
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex]));
|
||||
add4gEntry(entryValuesInt[entryIndex]);
|
||||
break;
|
||||
case add5gAndLteEntry:
|
||||
add5gEntry(addNrToLteNetworkType(entryValuesInt[entryIndex]));
|
||||
addLteEntry(entryValuesInt[entryIndex]);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Not supported ui options format.");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private int getPreferredNetworkMode() {
|
||||
|
Reference in New Issue
Block a user