Show connecting and connected messages on the header subtext of Wi-Fi slice

Fixes: 128631698
Test: robotest
Change-Id: I1ea2a65d09eca9b3dd06f56c4ae69ef7f68ffd86
This commit is contained in:
Jason Chiu
2019-03-21 18:37:41 +08:00
parent 5c68865a88
commit b056c3a2b6

View File

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