Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b4ae464e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

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

parents e57cd247 b056c3a2
Loading
Loading
Loading
Loading
+56 −22
Original line number Diff line number Diff line
@@ -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 */,