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

Commit 96127fe6 authored by Yanting Yang's avatar Yanting Yang
Browse files

Remove sub-text from slice builder

We would like to remove all sub-text from Settings Search. But slice
view does not support API to configure the sub-text visibility.
Therefore, the only way is to remove the sub-text from slices directly.

Since Settings slices are also invoked by other apps, we can not
directly remove the sub-text.

Finally, we decide to check the caller's uid. If it comes from Settings
Search, we will return the slice without the sub-text.

Bug: 143118037
Test: visual, robotests
Change-Id: Iac72f1683a2c930592634e0599058890d86f669d
parent 5c3f7185
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import android.net.LinkProperties;
import android.net.Network;
import android.net.wifi.WifiManager;
import android.os.BatteryManager;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
import android.os.IBinder;
@@ -1089,4 +1090,15 @@ public final class Utils extends com.android.settingslib.Utils {
        }
        return f;
    }

    /**
     * Returns true if current binder uid is Settings Intelligence.
     */
    public static boolean isSettingsIntelligence(Context context) {
        final int callingUid = Binder.getCallingUid();
        final String callingPackage = context.getPackageManager().getPackagesForUid(callingUid)[0];
        final boolean isSettingsIntelligence = TextUtils.equals(callingPackage,
                context.getString(R.string.config_settingsintelligence_package_name));
        return isSettingsIntelligence;
    }
}
+8 −5
Original line number Diff line number Diff line
@@ -96,15 +96,18 @@ public class MobileDataSlice implements CustomSliceable {
                ListBuilder.ICON_IMAGE, title);
        final SliceAction toggleSliceAction = SliceAction.createToggle(toggleAction,
                null /* actionTitle */, isMobileDataEnabled());
        final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder()
                .setTitle(title)
                .addEndItem(toggleSliceAction)
                .setPrimaryAction(primarySliceAction);
        if (!Utils.isSettingsIntelligence(mContext)) {
            rowBuilder.setSubtitle(summary);
        }

        final ListBuilder listBuilder = new ListBuilder(mContext, getUri(),
                ListBuilder.INFINITY)
                .setAccentColor(color)
                .addRow(new ListBuilder.RowBuilder()
                        .setTitle(title)
                        .setSubtitle(summary)
                        .addEndItem(toggleSliceAction)
                        .setPrimaryAction(primarySliceAction));
                .addRow(rowBuilder);
        return listBuilder.build();
    }

+8 −5
Original line number Diff line number Diff line
@@ -82,15 +82,18 @@ public class ZenModeSliceBuilder {
        final SliceAction toggleSliceAction = SliceAction.createToggle(toggleAction,
                null /* actionTitle */,
                isZenModeEnabled);
        final RowBuilder rowBuilder = new RowBuilder()
                .setTitle(title)
                .addEndItem(toggleSliceAction)
                .setPrimaryAction(primarySliceAction);
        if (!Utils.isSettingsIntelligence(context)) {
            rowBuilder.setSubtitle(subtitle);
        }

        return new ListBuilder(context, CustomSliceRegistry.ZEN_MODE_SLICE_URI,
                ListBuilder.INFINITY)
                .setAccentColor(color)
                .addRow(new RowBuilder()
                        .setTitle(title)
                        .setSubtitle(subtitle)
                        .addEndItem(toggleSliceAction)
                        .setPrimaryAction(primarySliceAction))
                .addRow(rowBuilder)
                .build();
    }

+39 −25
Original line number Diff line number Diff line
@@ -241,16 +241,19 @@ public class SliceBuilderUtils {
        final SliceAction sliceAction = getToggleAction(context, sliceData,
                toggleController.isChecked());
        final Set<String> keywords = buildSliceKeywords(sliceData);

        return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY)
                .setAccentColor(color)
                .addRow(new RowBuilder()
        final RowBuilder rowBuilder = new RowBuilder()
                .setTitle(sliceData.getTitle())
                        .setSubtitle(subtitleText)
                .setPrimaryAction(
                        SliceAction.createDeeplink(contentIntent, icon,
                                ListBuilder.ICON_IMAGE, sliceData.getTitle()))
                        .addEndItem(sliceAction))
                .addEndItem(sliceAction);
        if (!Utils.isSettingsIntelligence(context)) {
            rowBuilder.setSubtitle(subtitleText);
        }

        return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY)
                .setAccentColor(color)
                .addRow(rowBuilder)
                .setKeywords(keywords)
                .build();
    }
@@ -262,16 +265,19 @@ public class SliceBuilderUtils {
        final CharSequence subtitleText = getSubtitleText(context, controller, sliceData);
        @ColorInt final int color = Utils.getColorAccentDefaultColor(context);
        final Set<String> keywords = buildSliceKeywords(sliceData);

        return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY)
                .setAccentColor(color)
                .addRow(new RowBuilder()
        final RowBuilder rowBuilder = new RowBuilder()
                .setTitle(sliceData.getTitle())
                        .setSubtitle(subtitleText)
                .setPrimaryAction(
                        SliceAction.createDeeplink(contentIntent, icon,
                                ListBuilder.ICON_IMAGE,
                                        sliceData.getTitle())))
                                sliceData.getTitle()));
        if (!Utils.isSettingsIntelligence(context)) {
            rowBuilder.setSubtitle(subtitleText);
        }

        return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY)
                .setAccentColor(color)
                .addRow(rowBuilder)
                .setKeywords(keywords)
                .build();
    }
@@ -301,7 +307,6 @@ public class SliceBuilderUtils {
        }
        final InputRangeBuilder inputRangeBuilder = new InputRangeBuilder()
                .setTitle(sliceData.getTitle())
                .setSubtitle(subtitleText)
                .setPrimaryAction(primaryAction)
                .setMax(sliderController.getMax())
                .setMin(sliderController.getMin())
@@ -311,6 +316,9 @@ public class SliceBuilderUtils {
            inputRangeBuilder.setTitleItem(icon, ListBuilder.ICON_IMAGE);
            color = CustomSliceable.COLOR_NOT_TINTED;
        }
        if (!Utils.isSettingsIntelligence(context)) {
            inputRangeBuilder.setSubtitle(subtitleText);
        }

        return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY)
                .setAccentColor(color)
@@ -330,14 +338,17 @@ public class SliceBuilderUtils {
        final CharSequence subtitleText = getSubtitleText(context, controller, sliceData);
        @ColorInt final int color = Utils.getColorAccentDefaultColor(context);
        final Set<String> keywords = buildSliceKeywords(sliceData);
        final RowBuilder rowBuilder = new RowBuilder()
                .setTitle(sliceData.getTitle())
                .setPrimaryAction(primaryAction)
                .addEndItem(copyableAction);
        if (!Utils.isSettingsIntelligence(context)) {
            rowBuilder.setSubtitle(subtitleText);
        }

        return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY)
                .setAccentColor(color)
                .addRow(new RowBuilder()
                        .setTitle(sliceData.getTitle())
                        .setSubtitle(subtitleText)
                        .setPrimaryAction(primaryAction)
                        .addEndItem(copyableAction))
                .addRow(rowBuilder)
                .setKeywords(keywords)
                .build();
    }
@@ -418,14 +429,17 @@ public class SliceBuilderUtils {
        final SliceAction primaryAction = SliceAction.createDeeplink(
                getContentPendingIntent(context, data),
                icon, ListBuilder.ICON_IMAGE, title);
        final RowBuilder rowBuilder = new RowBuilder()
                .setTitle(title)
                .setTitleItem(icon, ListBuilder.ICON_IMAGE)
                .setPrimaryAction(primaryAction);
        if (!Utils.isSettingsIntelligence(context)) {
            rowBuilder.setSubtitle(subtitle);
        }

        return new ListBuilder(context, data.getUri(), ListBuilder.INFINITY)
                .setAccentColor(color)
                .addRow(new RowBuilder()
                        .setTitle(title)
                        .setTitleItem(icon, ListBuilder.ICON_IMAGE)
                        .setSubtitle(subtitle)
                        .setPrimaryAction(primaryAction))
                .addRow(rowBuilder)
                .setKeywords(keywords)
                .build();
    }
+15 −9
Original line number Diff line number Diff line
@@ -269,14 +269,17 @@ public class WifiCallingSliceHelper {
        // Top row shows information on current preference state
        final ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY)
                .setAccentColor(Utils.getColorAccentDefaultColor(mContext));
        listBuilder.setHeader(new ListBuilder.HeaderBuilder()
        final ListBuilder.HeaderBuilder headerBuilder = new ListBuilder.HeaderBuilder()
                .setTitle(res.getText(R.string.wifi_calling_mode_title))
                .setSubtitle(getWifiCallingPreferenceSummary(currentWfcPref, subId))
                .setPrimaryAction(SliceAction.createDeeplink(
                        getActivityIntent(ACTION_WIFI_CALLING_SETTINGS_ACTIVITY),
                        icon,
                        ListBuilder.ICON_IMAGE,
                        res.getText(R.string.wifi_calling_mode_title))));
                        res.getText(R.string.wifi_calling_mode_title)));
        if (!Utils.isSettingsIntelligence(mContext)) {
            headerBuilder.setSubtitle(getWifiCallingPreferenceSummary(currentWfcPref, subId));
        }
        listBuilder.setHeader(headerBuilder);

        if (isWifiOnlySupported) {
            listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
@@ -458,14 +461,17 @@ public class WifiCallingSliceHelper {
    private Slice getNonActionableWifiCallingSlice(CharSequence title, CharSequence subtitle,
            Uri sliceUri, PendingIntent primaryActionIntent) {
        final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal);
        return new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY)
                .setAccentColor(Utils.getColorAccentDefaultColor(mContext))
                .addRow(new RowBuilder()
        final RowBuilder rowBuilder = new RowBuilder()
                .setTitle(title)
                        .setSubtitle(subtitle)
                .setPrimaryAction(SliceAction.createDeeplink(
                        primaryActionIntent, icon, ListBuilder.SMALL_IMAGE,
                                title)))
                        title));
        if (!Utils.isSettingsIntelligence(mContext)) {
            rowBuilder.setSubtitle(subtitle);
        }
        return new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY)
                .setAccentColor(Utils.getColorAccentDefaultColor(mContext))
                .addRow(rowBuilder)
                .build();
    }

Loading