[Wi-Fi] Support WiFi detail page for OpenRoaming feature in AOSP setting.

Issue: Openroaming should have a specific detail page.
Solution: Apply the mock design to only reserve two preference items:
          1.Auto-connect
          2.Scription details

Bug: 146669261
Test: Add unit test case to test the new controller: WifiSubscriptionDetailPreferenceController2
Change-Id: Iba96500062f412f4cdcd1c8248544657770ab231
This commit is contained in:
govenliu
2020-02-19 22:22:47 +08:00
parent 9ab1bd2587
commit 824796d3b2
9 changed files with 198 additions and 14 deletions

View File

@@ -145,6 +145,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
static final String KEY_IPV6_CATEGORY = "ipv6_category";
@VisibleForTesting
static final String KEY_IPV6_ADDRESSES_PREF = "ipv6_addresses";
static final String KEY_IP_DETAILS_CATEGORY = "ip_details_category";
private final WifiEntry mWifiEntry;
private final ConnectivityManager mConnectivityManager;
@@ -164,6 +165,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
private ActionButtonsPreference mButtonsPref;
private EntityHeaderController mEntityHeaderController;
private Preference mSignalStrengthPref;
private PreferenceCategory mIpDetailsCategory;
private Preference mTxLinkSpeedPref;
private Preference mRxLinkSpeedPref;
private Preference mFrequencyPref;
@@ -194,7 +196,9 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
mLinkProperties = lp;
refreshEntityHeader();
refreshButtons();
refreshIpLayerInfo();
if (!mWifiEntry.canManageSubscription()) {
refreshIpLayerInfo();
}
}
}
@@ -234,7 +238,9 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
}
mNetworkCapabilities = nc;
refreshButtons();
refreshIpLayerInfo();
if (!mWifiEntry.canManageSubscription()) {
refreshIpLayerInfo();
}
}
}
@@ -329,6 +335,7 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
updateCaptivePortalButton();
mSignalStrengthPref = screen.findPreference(KEY_SIGNAL_STRENGTH_PREF);
mIpDetailsCategory = screen.findPreference(KEY_IP_DETAILS_CATEGORY);
mTxLinkSpeedPref = screen.findPreference(KEY_TX_LINK_SPEED);
mRxLinkSpeedPref = screen.findPreference(KEY_RX_LINK_SPEED);
mFrequencyPref = screen.findPreference(KEY_FREQUENCY_PREF);
@@ -344,6 +351,13 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
mIpv6Category = screen.findPreference(KEY_IPV6_CATEGORY);
mIpv6AddressPref = screen.findPreference(KEY_IPV6_ADDRESSES_PREF);
if (mWifiEntry.canManageSubscription()) {
mIpDetailsCategory.setVisible(false);
mIpv6Category.setVisible(false);
mSignalStrengthPref.setVisible(false);
mFrequencyPref.setVisible(false);
mSecurityPref.setVisible(false);
}
mSecurityPref.setSummary(mWifiEntry.getSecurityString(false /* concise */));
}
@@ -491,10 +505,16 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
// refresh header
refreshEntityHeader();
refreshEntityHeaderIcon();
// refresh Buttons
refreshButtons();
// When support manage subscription, there won't have any detail information, so don't
// need to update those detail UIs.
if (mWifiEntry.canManageSubscription()) {
return;
}
// Update Connection Header icon and Signal Strength Preference
refreshRssiViews();
// Frequency Pref
@@ -511,7 +531,11 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
refreshMacAddress();
}
private void refreshRssiViews() {
private void refreshEntityHeaderIcon() {
if (mEntityHeaderController == null) {
return;
}
int signalLevel = mWifiEntry.getLevel();
// Disappears signal view if not in range. e.g. for saved networks.
@@ -526,13 +550,23 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
}
mRssiSignalLevel = signalLevel;
Drawable wifiIcon = mIconInjector.getIcon(mRssiSignalLevel);
mEntityHeaderController
.setIcon(redrawIconForHeader(wifiIcon)).done(mFragment.getActivity(),
true /* rebind */);
}
if (mEntityHeaderController != null) {
mEntityHeaderController
.setIcon(redrawIconForHeader(wifiIcon)).done(mFragment.getActivity(),
true /* rebind */);
private void refreshRssiViews() {
int signalLevel = mWifiEntry.getLevel();
// Disappears signal view if not in range. e.g. for saved networks.
if (signalLevel == WifiEntry.WIFI_LEVEL_UNREACHABLE) {
mSignalStrengthPref.setVisible(false);
mRssiSignalLevel = -1;
return;
}
mRssiSignalLevel = signalLevel;
Drawable wifiIcon = mIconInjector.getIcon(mRssiSignalLevel);
Drawable wifiIconDark = wifiIcon.getConstantState().newDrawable().mutate();
wifiIconDark.setTintList(Utils.getColorAttr(mContext, android.R.attr.colorControlNormal));
mSignalStrengthPref.setIcon(wifiIconDark);