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

Commit 1c5fa0f3 authored by Satish Sampath's avatar Satish Sampath
Browse files

Adds UI support for custom search widget item backgrounds.

- A new column was added to SearchManager cursors to specify background color (optional)
- Two new colour references added to the theme for normal and search widget corpus items (we need both to be opaque for the items to render properly)
- SuggestionAdapter was updated to choose the right theme colour for each item
parent 27a2b50d
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -1359,6 +1359,15 @@ public class SearchManager
     */
    public final static String SUGGEST_COLUMN_SHORTCUT_ID = "suggest_shortcut_id";

    /**
     * Column name for suggestions cursor. <i>Optional.</i>  This column is used to specify the
     * cursor item's background color if it needs a non-default background color. A non-zero value
     * indicates a valid background color to override the default.
     *
     * @hide For internal use, not part of the public API.
     */
    public final static String SUGGEST_COLUMN_BACKGROUND_COLOR = "suggest_background_color";

    /**
     * Column value for suggestion column {@link #SUGGEST_COLUMN_SHORTCUT_ID} when a suggestion
     * should not be stored as a shortcut in global search.
+55 −35
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.server.search.SearchableInfo;
import android.text.Html;
import android.text.TextUtils;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
@@ -62,6 +63,10 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
    private int mText2Col;
    private int mIconName1Col;
    private int mIconName2Col;
    private int mBackgroundColorCol;

    // Cached item background color.
    private int mDefaultBackgroundColor;

    // This value is stored in SuggestionsAdapter by the SearchDialog to indicate whether
    // a particular list item should be selected upon the next call to notifyDataSetChanged.
@@ -91,6 +96,11 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
        Context activityContext = mSearchable.getActivityContext(mContext);
        mProviderContext = mSearchable.getProviderContext(mContext, activityContext);

        TypedValue colorValue = new TypedValue();
        mProviderContext.getTheme().resolveAttribute(
                com.android.internal.R.attr.searchWidgetItemBackground, colorValue, true);
        mDefaultBackgroundColor = mProviderContext.getResources().getColor(colorValue.resourceId);

        mOutsideDrawablesCache = outsideDrawablesCache;
        mGlobalSearchMode = globalSearchMode;
    }
@@ -139,6 +149,7 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
            mText2Col = c.getColumnIndex(SearchManager.SUGGEST_COLUMN_TEXT_2);
            mIconName1Col = c.getColumnIndex(SearchManager.SUGGEST_COLUMN_ICON_1);
            mIconName2Col = c.getColumnIndex(SearchManager.SUGGEST_COLUMN_ICON_2);
            mBackgroundColorCol = c.getColumnIndex(SearchManager.SUGGEST_COLUMN_BACKGROUND_COLOR);
        }
    }

@@ -254,6 +265,15 @@ class SuggestionsAdapter extends ResourceCursorAdapter {
            mDisplayNotifyPos = NONE;  // only notify the first time
        }

        int backgroundColor = 0;
        if (mBackgroundColorCol != -1) {
            backgroundColor = cursor.getInt(mBackgroundColorCol);
        }
        if (backgroundColor == 0) {
            backgroundColor = mDefaultBackgroundColor;
        }
        view.setBackgroundColor(backgroundColor);

        final boolean isHtml = mFormatCol > 0 && "html".equals(cursor.getString(mFormatCol));
        setViewText(cursor, views.mText1, mText1Col, isHtml);
        setViewText(cursor, views.mText2, mText2Col, isHtml);
+4 −0
Original line number Diff line number Diff line
@@ -82,6 +82,10 @@

        <!-- Text color for urls in search suggestions, used by things like global search and the browser. @hide -->
        <attr name="textColorSearchUrl" format="reference|color" />
        <!-- Search widget result item background. -->
        <attr name="searchWidgetItemBackground" format="reference|color" />
        <!-- Search widget expandable result item background. -->
        <attr name="searchWidgetCorpusItemBackground" format="reference|color" />

        <!-- Text color, typeface, size, and style for "large" text. Defaults to primary text color. -->
        <attr name="textAppearanceLarge" format="reference" />
+2 −0
Original line number Diff line number Diff line
@@ -75,6 +75,8 @@
    
    <!-- For search-related UIs -->
    <color name="search_url_text">#7fa87f</color>
    <color name="search_widget_item_background">@android:color/white</color>
    <color name="search_widget_corpus_item_background">@android:color/lighter_gray</color>

</resources>
+4 −0
Original line number Diff line number Diff line
@@ -183,6 +183,10 @@
        <item name="editTextPreferenceStyle">@android:style/Preference.DialogPreference.EditTextPreference</item>
        <item name="ringtonePreferenceStyle">@android:style/Preference.RingtonePreference</item>
        <item name="preferenceLayoutChild">@android:layout/preference_child</item>

        <!-- Search widget styles -->
        <item name="searchWidgetItemBackground">@android:color/search_widget_item_background</item>
        <item name="searchWidgetCorpusItemBackground">@android:color/search_widget_corpus_item_background</item>
    </style>
    
    <!-- Variant of the default (dark) theme with no title bar -->