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