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 */,