From b056c3a2b63e77a20ede5702f89d88f8f4546691 Mon Sep 17 00:00:00 2001 From: Jason Chiu Date: Thu, 21 Mar 2019 18:37:41 +0800 Subject: [PATCH] Show connecting and connected messages on the header subtext of Wi-Fi slice Fixes: 128631698 Test: robotest Change-Id: I1ea2a65d09eca9b3dd06f56c4ae69ef7f68ffd86 --- .../settings/wifi/slice/WifiSlice.java | 78 +++++++++++++------ 1 file changed, 56 insertions(+), 22 deletions(-) diff --git a/src/com/android/settings/wifi/slice/WifiSlice.java b/src/com/android/settings/wifi/slice/WifiSlice.java index 1c44204daf1..0c95a239ac2 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.ColorDrawable; 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 @@ public class WifiSlice implements CustomSliceable { 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 @@ public class WifiSlice implements CustomSliceable { 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 @@ public class WifiSlice implements CustomSliceable { 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 @@ public class WifiSlice implements CustomSliceable { } 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 @@ public class WifiSlice implements CustomSliceable { } } + 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 */,