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

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

Merge "Add keywords to Slices" into pi-dev

parents 681353f7 47a44e8f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -19,8 +19,7 @@
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settings="http://schemas.android.com/apk/res-auto"
    android:key="auto_brightness_detail"
    android:title="@string/auto_brightness_title"
    settings:keywords="@string/keywords_display_auto_brightness">
    android:title="@string/auto_brightness_title">

    <com.android.settings.widget.VideoPreference
        android:key="auto_brightness_video"
@@ -31,6 +30,7 @@
    <com.android.settingslib.RestrictedSwitchPreference
        android:key="auto_brightness"
        android:title="@string/auto_brightness_title"
        settings:keywords="@string/keywords_display_auto_brightness"
        settings:controller="com.android.settings.display.AutoBrightnessPreferenceController"
        settings:useAdminDisabledSummary="true"
        settings:userRestriction="no_config_brightness" />
+9 −0
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ public class PreferenceXmlParserUtils {
        int FLAG_NEED_PREF_SUMMARY = 1 << 5;
        int FLAG_NEED_PREF_ICON = 1 << 6;
        int FLAG_NEED_PLATFORM_SLICE_FLAG = 1 << 7;
        int FLAG_NEED_KEYWORDS = 1 << 8;
    }

    public static final String METADATA_PREF_TYPE = "type";
@@ -86,6 +87,7 @@ public class PreferenceXmlParserUtils {
    public static final String METADATA_SUMMARY = "summary";
    public static final String METADATA_ICON = "icon";
    public static final String METADATA_PLATFORM_SLICE_FLAG = "platform_slice";
    public static final String METADATA_KEYWORDS = "keywords";

    private static final String ENTRIES_SEPARATOR = "|";

@@ -226,6 +228,9 @@ public class PreferenceXmlParserUtils {
                preferenceMetadata.putBoolean(METADATA_PLATFORM_SLICE_FLAG,
                        getPlatformSlice(preferenceAttributes));
            }
            if (hasFlag(flags, MetadataFlag.FLAG_NEED_KEYWORDS)) {
                preferenceMetadata.putString(METADATA_KEYWORDS, getKeywords(preferenceAttributes));
            }
            metadata.add(preferenceMetadata);

            preferenceAttributes.recycle();
@@ -305,4 +310,8 @@ public class PreferenceXmlParserUtils {
    private static boolean getPlatformSlice(TypedArray styledAttributes) {
        return styledAttributes.getBoolean(R.styleable.Preference_platform_slice, false /* def */);
    }

    private static String getKeywords(TypedArray styleAttributes) {
        return styleAttributes.getString(R.styleable.Preference_keywords);
    }
}
+21 −0
Original line number Diff line number Diff line
@@ -47,6 +47,10 @@ import com.android.settingslib.core.AbstractPreferenceController;

import android.support.v4.graphics.drawable.IconCompat;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import androidx.slice.Slice;
import androidx.slice.builders.ListBuilder;
import androidx.slice.builders.SliceAction;
@@ -231,6 +235,7 @@ public class SliceBuilderUtils {
                (TogglePreferenceController) controller;
        final SliceAction sliceAction = getToggleAction(context, sliceData,
                toggleController.isChecked());
        final List<String> keywords = buildSliceKeywords(sliceData.getKeywords());

        return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS)
                .addRow(rowBuilder -> rowBuilder
@@ -239,6 +244,7 @@ public class SliceBuilderUtils {
                        .setPrimaryAction(
                                new SliceAction(contentIntent, icon, sliceData.getTitle()))
                        .addEndItem(sliceAction))
                .setKeywords(keywords)
                .build();
    }

@@ -247,6 +253,7 @@ public class SliceBuilderUtils {
        final PendingIntent contentIntent = getContentPendingIntent(context, sliceData);
        final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource());
        final CharSequence subtitleText = getSubtitleText(context, controller, sliceData);
        final List<String> keywords = buildSliceKeywords(sliceData.getKeywords());

        return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS)
                .addRow(rowBuilder -> rowBuilder
@@ -254,6 +261,7 @@ public class SliceBuilderUtils {
                        .setSubtitle(subtitleText)
                        .setPrimaryAction(
                                new SliceAction(contentIntent, icon, sliceData.getTitle())))
                .setKeywords(keywords)
                .build();
    }

@@ -265,6 +273,7 @@ public class SliceBuilderUtils {
        final IconCompat icon = IconCompat.createWithResource(context, sliceData.getIconResource());
        final SliceAction primaryAction = new SliceAction(contentIntent, icon,
                sliceData.getTitle());
        final List<String> keywords = buildSliceKeywords(sliceData.getKeywords());

        return new ListBuilder(context, sliceData.getUri(), SLICE_TTL_MILLIS)
                .addInputRange(builder -> builder
@@ -273,6 +282,7 @@ public class SliceBuilderUtils {
                        .setValue(sliderController.getSliderPosition())
                        .setInputAction(actionIntent)
                        .setPrimaryAction(primaryAction))
                .setKeywords(keywords)
                .build();
    }

@@ -311,9 +321,19 @@ public class SliceBuilderUtils {
                || TextUtils.equals(summary, doublePlaceHolder));
    }

    private static List<String> buildSliceKeywords(String keywordString) {
        if (keywordString == null) {
            return new ArrayList<>();
        }

        final String[] keywords = keywordString.split(",");
        return Arrays.asList(keywords);
    }

    private static Slice buildUnavailableSlice(Context context, SliceData data,
            BasePreferenceController controller) {
        final String title = data.getTitle();
        final List<String> keywords = buildSliceKeywords(data.getKeywords());
        final String summary;
        final SliceAction primaryAction;
        final IconCompat icon = IconCompat.createWithResource(context, data.getIconResource());
@@ -344,6 +364,7 @@ public class SliceBuilderUtils {
                        .setTitle(title)
                        .setSubtitle(summary)
                        .setPrimaryAction(primaryAction))
                .setKeywords(keywords)
                .build();
    }
}
+15 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.text.TextUtils;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.List;

/**
 * Data class representing a slice stored by {@link SlicesIndexer}.
@@ -59,6 +60,8 @@ public class SliceData {

    private final CharSequence mScreenTitle;

    private final String mKeywords;

    private final int mIconResource;

    private final String mFragmentClassName;
@@ -88,6 +91,10 @@ public class SliceData {
        return mScreenTitle;
    }

    public String getKeywords() {
        return mKeywords;
    }

    public int getIconResource() {
        return mIconResource;
    }
@@ -117,6 +124,7 @@ public class SliceData {
        mTitle = builder.mTitle;
        mSummary = builder.mSummary;
        mScreenTitle = builder.mScreenTitle;
        mKeywords = builder.mKeywords;
        mIconResource = builder.mIconResource;
        mFragmentClassName = builder.mFragmentClassName;
        mUri = builder.mUri;
@@ -148,6 +156,8 @@ public class SliceData {

        private CharSequence mScreenTitle;

        private String mKeywords;

        private int mIconResource;

        private String mFragmentClassName;
@@ -180,6 +190,11 @@ public class SliceData {
            return this;
        }

        public Builder setKeywords(String keywords) {
            mKeywords = keywords;
            return this;
        }

        public Builder setIcon(int iconResource) {
            mIconResource = iconResource;
            return this;
+4 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.slices;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_CONTROLLER;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_ICON;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_KEY;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_KEYWORDS;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_PLATFORM_SLICE_FLAG;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_SUMMARY;
import static com.android.settings.core.PreferenceXmlParserUtils.METADATA_TITLE;
@@ -184,6 +185,7 @@ class SliceDataConverter {
                            | MetadataFlag.FLAG_NEED_PREF_TITLE
                            | MetadataFlag.FLAG_NEED_PREF_ICON
                            | MetadataFlag.FLAG_NEED_PREF_SUMMARY
                            | MetadataFlag.FLAG_NEED_KEYWORDS
                            | MetadataFlag.FLAG_NEED_PLATFORM_SLICE_FLAG);

            for (Bundle bundle : metadata) {
@@ -196,6 +198,7 @@ class SliceDataConverter {
                final String key = bundle.getString(METADATA_KEY);
                final String title = bundle.getString(METADATA_TITLE);
                final String summary = bundle.getString(METADATA_SUMMARY);
                final String keywords = bundle.getString(METADATA_KEYWORDS);
                final int iconResId = bundle.getInt(METADATA_ICON);
                final int sliceType = SliceBuilderUtils.getSliceType(mContext, controllerClassName,
                        key);
@@ -207,6 +210,7 @@ class SliceDataConverter {
                        .setSummary(summary)
                        .setIcon(iconResId)
                        .setScreenTitle(screenTitle)
                        .setKeywords(keywords)
                        .setPreferenceControllerClassName(controllerClassName)
                        .setFragmentName(fragmentName)
                        .setSliceType(sliceType)
Loading