Merge "Show connecting and connected messages on the header subtext of Wi-Fi slice"
diff --git a/src/com/android/settings/wifi/slice/WifiSlice.java b/src/com/android/settings/wifi/slice/WifiSlice.java
index 1c44204..0c95a23 100644
--- a/src/com/android/settings/wifi/slice/WifiSlice.java
+++ b/src/com/android/settings/wifi/slice/WifiSlice.java
@@ -33,6 +33,7 @@
import android.graphics.drawable.Drawable;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
+import android.net.NetworkInfo.DetailedState;
import android.net.Uri;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
@@ -93,26 +94,7 @@
mContext.getTheme().applyStyle(R.style.Theme_Settings_Home, true /* force */);
final boolean isWifiEnabled = isWifiEnabled();
-
- final IconCompat icon = IconCompat.createWithResource(mContext,
- R.drawable.ic_settings_wireless);
- final String title = mContext.getString(R.string.wifi_settings);
- final CharSequence summary = getSummary();
- final PendingIntent toggleAction = getBroadcastIntent(mContext);
- final PendingIntent primaryAction = getPrimaryAction();
- final SliceAction primarySliceAction = SliceAction.createDeeplink(primaryAction, icon,
- ListBuilder.ICON_IMAGE, title);
- final SliceAction toggleSliceAction = SliceAction.createToggle(toggleAction,
- null /* actionTitle */, isWifiEnabled);
-
- final ListBuilder listBuilder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY)
- .setAccentColor(COLOR_NOT_TINTED)
- .addRow(new ListBuilder.RowBuilder()
- .setTitle(title)
- .setSubtitle(summary)
- .addEndItem(toggleSliceAction)
- .setPrimaryAction(primarySliceAction));
-
+ ListBuilder listBuilder = getListBuilder(isWifiEnabled, null /* accessPoint */);
if (!isWifiEnabled) {
return listBuilder.build();
}
@@ -137,7 +119,12 @@
final CharSequence placeholder = mContext.getText(R.string.summary_placeholder);
for (int i = 0; i < DEFAULT_EXPANDED_ROW_COUNT; i++) {
if (i < apCount) {
- listBuilder.addRow(getAccessPointRow(results.get(i)));
+ final AccessPoint accessPoint = results.get(i);
+ if (accessPoint.isActive()) {
+ // update summary
+ listBuilder = getListBuilder(isWifiEnabled, accessPoint);
+ }
+ listBuilder.addRow(getAccessPointRow(accessPoint));
} else if (needLoadingRow) {
listBuilder.addRow(getLoadingRow());
needLoadingRow = false;
@@ -149,6 +136,27 @@
return listBuilder.build();
}
+ private ListBuilder getListBuilder(boolean isWifiEnabled, AccessPoint accessPoint) {
+ final IconCompat icon = IconCompat.createWithResource(mContext,
+ R.drawable.ic_settings_wireless);
+ final String title = mContext.getString(R.string.wifi_settings);
+ final CharSequence summary = getSummary(accessPoint);
+ final PendingIntent toggleAction = getBroadcastIntent(mContext);
+ final PendingIntent primaryAction = getPrimaryAction();
+ final SliceAction primarySliceAction = SliceAction.createDeeplink(primaryAction, icon,
+ ListBuilder.ICON_IMAGE, title);
+ final SliceAction toggleSliceAction = SliceAction.createToggle(toggleAction,
+ null /* actionTitle */, isWifiEnabled);
+
+ return new ListBuilder(mContext, getUri(), ListBuilder.INFINITY)
+ .setAccentColor(COLOR_NOT_TINTED)
+ .addRow(new ListBuilder.RowBuilder()
+ .setTitle(title)
+ .setSubtitle(summary)
+ .addEndItem(toggleSliceAction)
+ .setPrimaryAction(primarySliceAction));
+ }
+
private ListBuilder.RowBuilder getAccessPointRow(AccessPoint accessPoint) {
final CharSequence title = getAccessPointName(accessPoint);
final IconCompat levelIcon = getAccessPointLevelIcon(accessPoint);
@@ -167,7 +175,7 @@
}
private CharSequence getAccessPointName(AccessPoint accessPoint) {
- final CharSequence name = accessPoint.getConfigName();
+ final CharSequence name = accessPoint.getTitle();
final Spannable span = new SpannableString(name);
@ColorInt final int color = Utils.getColorAttrDefaultColor(mContext,
android.R.attr.textColorPrimary);
@@ -306,6 +314,32 @@
}
}
+ private CharSequence getSummary(AccessPoint accessPoint) {
+ if (accessPoint == null) {
+ return getSummary();
+ }
+
+ final NetworkInfo networkInfo = accessPoint.getNetworkInfo();
+ if (networkInfo == null) {
+ return getSummary();
+ }
+
+ final State state = networkInfo.getState();
+ DetailedState detailedState;
+ if (state == State.CONNECTING) {
+ detailedState = DetailedState.CONNECTING;
+ } else if (state == State.CONNECTED) {
+ detailedState = DetailedState.CONNECTED;
+ } else {
+ return getSummary();
+ }
+
+ final String[] formats = mContext.getResources().getStringArray(
+ R.array.wifi_status_with_ssid);
+ final int index = detailedState.ordinal();
+ return String.format(formats[index], accessPoint.getTitle());
+ }
+
private PendingIntent getPrimaryAction() {
final Intent intent = getIntent();
return PendingIntent.getActivity(mContext, 0 /* requestCode */,