SuggestionCursor.java revision 3e44ff1f2a204db3f479698cf0b3eab3d451dec2
13e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert/*
23e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Copyright (C) 2009 The Android Open Source Project
33e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
43e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
53e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * you may not use this file except in compliance with the License.
63e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * You may obtain a copy of the License at
73e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
83e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
93e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert *
103e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * Unless required by applicable law or agreed to in writing, software
113e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
123e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * See the License for the specific language governing permissions and
143e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert * limitations under the License.
153e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert */
163e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
173e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertpackage com.android.quicksearchbox;
183e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
193e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.content.ComponentName;
203e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.content.Context;
213e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.content.Intent;
223e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.graphics.Rect;
233e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.graphics.drawable.Drawable;
243e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.net.Uri;
253e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertimport android.os.Bundle;
263e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
273e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringertpublic interface SuggestionCursor {
283e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
293e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
303e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * The user query that returned these suggestions.
313e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
323e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    String getUserQuery();
333e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
343e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
353e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the component name of the source that produced this result.
363e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
373e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    ComponentName getSourceComponentName();
383e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
393e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
403e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the localized, human-readable label for the source that produced this result.
413e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
423e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    CharSequence getSourceLabel();
433e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
443e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
453e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the icon for the source that produced this result.
463e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
473e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    Drawable getSourceIcon();
483e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
493e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
503e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the icon URI for the source that produced this result.
513e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
523e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    Uri getSourceIconUri();
533e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
543e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
553e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets an icon by ID. Used for getting the icons returned by {@link #getSuggestionIcon1()}
563e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * and {@link #getSuggestionIcon2()}.
573e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
583e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    Drawable getIcon(String iconId);
593e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
603e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
613e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the URI for an icon.
623e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
633e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    Uri getIconUri(String iconId);
643e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
653e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
663e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Checks whether this result represents a failed suggestion query.
673e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
683e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    boolean isFailed();
693e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
703e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
713e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Closes this suggestion result.
723e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
733e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    void close();
743e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
753e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
763e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the number of suggestions in this result.
773e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     *
783e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @return The number of suggestions, or {@code 0} if this result represents a failed query.
793e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
803e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    int getCount();
813e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
823e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
833e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Moves to a given suggestion.
843e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     *
853e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @param pos The position to move to.
863e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @throws IndexOutOfBoundsException if {@code pos < 0} or {@code pos >= getCount()}.
873e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
883e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    void moveTo(int pos);
893e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
903e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
913e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the current position within the cursor.
923e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
933e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    int getPosition();
943e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
953e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
963e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the text to put in the search box when the current suggestion is selected.
973e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
983e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    String getSuggestionDisplayQuery();
993e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1003e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1013e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the shortcut ID of the current suggestion.
1023e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1033e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    String getShortcutId();
1043e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1053e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1063e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the format of the text returned by {@link #getSuggestionText1()}
1073e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * and {@link #getSuggestionText2()}.
1083e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     *
1093e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @return {@code null} or "html"
1103e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1113e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    String getSuggestionFormat();
1123e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1133e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1143e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the first text line for the current suggestion.
1153e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1163e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    String getSuggestionText1();
1173e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1183e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1193e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the second text line for the current suggestion.
1203e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1213e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    String getSuggestionText2();
1223e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1233e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1243e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the left-hand-side icon for the current suggestion.
1253e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     *
1263e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @return A string that can be passed to {@link #getIcon()}.
1273e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1283e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    String getSuggestionIcon1();
1293e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1303e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1313e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the right-hand-side icon for the current suggestion.
1323e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     *
1333e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @return A string that can be passed to {@link #getIcon()}.
1343e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1353e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    String getSuggestionIcon2();
1363e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1373e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1383e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the intent that this suggestion launches.
1393e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     *
1403e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @param context Used for resolving the intent target.
1413e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @param actionKey
1423e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @param actionMsg
1433e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @return
1443e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1453e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    Intent getSuggestionIntent(Context context, Bundle appSearchData,
1463e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert            int actionKey, String actionMsg);
1473e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1483e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1493e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the secondary intent associated with this suggestion.
1503e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     *
1513e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @param context Used for resolving the intent target.
1523e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @param appSearchData application specific data passed in the search request
1533e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @param target Rect describing the position of this result on the screen
1543e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * @return the secondary intent, or {@code null} if there is none
1553e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1563e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    Intent getSecondarySuggestionIntent(Context context, Bundle appSearchData,
1573e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert            Rect target);
1583e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1593e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1603e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Checks whether the current suggestion has a secondary intent.
1613e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1623e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    boolean hasSecondaryIntent();
1633e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1643e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1653e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets a unique key that identifies this suggestion. This is used to avoid
1663e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * duplicate suggestions in the promoted list. This key should be based on
1673e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * the intent of the suggestion.
1683e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1693e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    String getSuggestionKey();
1703e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1713e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1723e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the first suggestion text line as styled text.
1733e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1743e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    CharSequence getSuggestionFormattedText1();
1753e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1763e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1773e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the second suggestion text line as styled text.
1783e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1793e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    CharSequence getSuggestionFormattedText2();
1803e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1813e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1823e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the first suggestion icon.
1833e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1843e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    Drawable getSuggestionDrawableIcon1();
1853e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert
1863e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    /**
1873e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     * Gets the second suggestion icon.
1883e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert     */
1893e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert    Drawable getSuggestionDrawableIcon2();
1903e44ff1f2a204db3f479698cf0b3eab3d451dec2Bjorn Bringert}
191