[Passpointv2] Implement DataUsage header for Wi-Fi detail fragment

Change header to a data usage chart of the specified Wi-Fi network.

Bug: 124700353
Test: make RunSettingsRoboTests -j32 ROBOTEST_FILTER=com.android.settings
Change-Id: Ide08ffd5e97ced5fe54707562690155414598dac
This commit is contained in:
cosmohsieh
2019-03-07 11:51:39 +08:00
parent 3d5ef5ec60
commit 976995fa36
14 changed files with 176 additions and 34 deletions

View File

@@ -67,6 +67,7 @@ import com.android.settings.widget.SummaryUpdater.OnSummaryChangeListener;
import com.android.settings.widget.SwitchBarController;
import com.android.settings.wifi.details.WifiNetworkDetailsFragment;
import com.android.settings.wifi.dpp.WifiDppUtils;
import com.android.settings.wifi.savedaccesspoints.SavedAccessPointsWifiSettings;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.search.SearchIndexable;
@@ -968,8 +969,13 @@ public class WifiSettings extends RestrictedSettingsFragment
}
private void launchNetworkDetailsFragment(ConnectedAccessPointPreference pref) {
final AccessPoint accessPoint = pref.getAccessPoint();
final Context context = getContext();
final CharSequence title = SavedAccessPointsWifiSettings.usingDetailsFragment(context) ?
accessPoint.getTitle() : context.getText(R.string.pref_title_network_details);
new SubSettingLauncher(getContext())
.setTitleRes(R.string.pref_title_network_details)
.setTitleText(title)
.setDestination(WifiNetworkDetailsFragment.class.getName())
.setArguments(pref.getExtras())
.setSourceMetricsCategory(getMetricsCategory())

View File

@@ -42,6 +42,7 @@ import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Handler;
import android.text.TextUtils;
import android.util.FeatureFlagUtils;
import android.util.Log;
import android.widget.ImageView;
import android.widget.Toast;
@@ -51,12 +52,14 @@ import androidx.core.text.BidiFormatter;
import androidx.fragment.app.Fragment;
import androidx.preference.Preference;
import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.FeatureFlags;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.datausage.WifiDataUsageSummaryPreferenceController;
import com.android.settings.development.featureflags.FeatureFlagPersistent;
import com.android.settings.widget.EntityHeaderController;
import com.android.settings.wifi.WifiDialog;
@@ -150,6 +153,9 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
private Preference mDnsPref;
private PreferenceCategory mIpv6Category;
private Preference mIpv6AddressPref;
private Lifecycle mLifecycle;
Preference mDataUsageSummaryPref;
WifiDataUsageSummaryPreferenceController mSummaryHeaderController;
private final IconInjector mIconInjector;
private final IntentFilter mFilter;
@@ -262,6 +268,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
mFilter.addAction(WifiManager.RSSI_CHANGED_ACTION);
mFilter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION);
mLifecycle = lifecycle;
lifecycle.addObserver(this);
}
@@ -313,6 +320,17 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
private void setupEntityHeader(PreferenceScreen screen) {
LayoutPreference headerPref = screen.findPreference(KEY_HEADER);
if (usingDataUsageHeader(mContext)) {
headerPref.setVisible(false);
mDataUsageSummaryPref = screen.findPreference("status_header");
mDataUsageSummaryPref.setVisible(true);
mSummaryHeaderController =
new WifiDataUsageSummaryPreferenceController(mFragment.getActivity(),
mLifecycle, (PreferenceFragmentCompat) mFragment, mAccessPoint.getSsid());
return;
}
mEntityHeaderController =
EntityHeaderController.newInstance(
mFragment.getActivity(), mFragment,
@@ -326,6 +344,15 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
mEntityHeaderController.setLabel(mAccessPoint.getTitle());
}
private void refreshEntityHeader() {
if (usingDataUsageHeader(mContext)) {
mSummaryHeaderController.updateState(mDataUsageSummaryPref);
} else {
mEntityHeaderController.setSummary(mAccessPoint.getSettingsSummary())
.done(mFragment.getActivity(), true /* rebind */);
}
}
@Override
public void onResume() {
// Ensure mNetwork is set before any callbacks above are delivered, since our
@@ -360,9 +387,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
// MAC Address Pref
mMacAddressPref.setSummary(mWifiConfig.getRandomizedMacAddress().toString());
// TODO(b/124700353): Change header to data usage chart
mEntityHeaderController.setSummary(mAccessPoint.getSettingsSummary())
.done(mFragment.getActivity(), true /* rebind */);
refreshEntityHeader();
updateIpLayerInfo();
@@ -429,8 +454,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
private void refreshNetworkState() {
mAccessPoint.update(mWifiConfig, mWifiInfo, mNetworkInfo);
mEntityHeaderController.setSummary(mAccessPoint.getSettingsSummary())
.done(mFragment.getActivity(), true /* rebind */);
refreshEntityHeader();
}
private void refreshRssiViews() {
@@ -443,7 +467,10 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
Drawable wifiIcon = mIconInjector.getIcon(mRssiSignalLevel);
wifiIcon.setTintList(Utils.getColorAccent(mContext));
mEntityHeaderController.setIcon(wifiIcon).done(mFragment.getActivity(), true /* rebind */);
if (mEntityHeaderController != null) {
mEntityHeaderController.setIcon(wifiIcon).done(mFragment.getActivity(),
true /* rebind */);
}
Drawable wifiIconDark = wifiIcon.getConstantState().newDrawable().mutate();
wifiIconDark.setTintList(Utils.getColorAttr(mContext, android.R.attr.colorControlNormal));
@@ -670,4 +697,8 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
return mContext.getDrawable(Utils.getWifiIconResource(level)).mutate();
}
}
private boolean usingDataUsageHeader(Context context) {
return FeatureFlagUtils.isEnabled(context, FeatureFlags.WIFI_DETAILS_DATAUSAGE_HEADER);
}
}

View File

@@ -153,11 +153,11 @@ public class WifiNetworkDetailsFragment extends DashboardFragment {
controllers.add(mWifiDetailPreferenceController);
controllers.add(new WifiMeteredPreferenceController(context, mAccessPoint.getConfig()));
WifiPrivacyPreferenceController preferenceController = new WifiPrivacyPreferenceController(
WifiPrivacyPreferenceController privacyController = new WifiPrivacyPreferenceController(
context);
preferenceController.setWifiConfiguration(mAccessPoint.getConfig());
preferenceController.setIsEphemeral(mAccessPoint.isEphemeral());
controllers.add(preferenceController);
privacyController.setWifiConfiguration(mAccessPoint.getConfig());
privacyController.setIsEphemeral(mAccessPoint.isEphemeral());
controllers.add(privacyController);
return controllers;
}

View File

@@ -199,11 +199,7 @@ public class SavedAccessPointsWifiSettings extends DashboardFragment
* Checks if showing WifiNetworkDetailsFragment when clicking saved network item.
*/
public static boolean usingDetailsFragment(Context context) {
if (FeatureFlagUtils.isEnabled(context, FeatureFlags.MOBILE_NETWORK_V2)
&& FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) {
return false; // TODO(b/124695272): mark true when UI is ready.
}
return false;
return FeatureFlagUtils.isEnabled(context, FeatureFlags.WIFI_DETAILS_SAVED_SCREEN);
}
boolean isSubscriptionsFeatureEnabled() {