| /* |
| * Copyright (C) 2009 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.quicksearchbox; |
| |
| import com.android.quicksearchbox.util.NowOrLater; |
| |
| import android.content.ComponentName; |
| import android.content.Intent; |
| import android.graphics.drawable.Drawable; |
| import android.net.Uri; |
| import android.os.Bundle; |
| |
| /** |
| * Interface for suggestion sources. |
| * |
| */ |
| public interface Source extends SuggestionCursorProvider<SourceResult> { |
| |
| /** |
| * Gets the name activity that intents from this source are sent to. |
| */ |
| ComponentName getIntentComponent(); |
| |
| /** |
| * Gets the suggestion URI for getting suggestions from this Source. |
| */ |
| String getSuggestUri(); |
| |
| /** |
| * Gets the version code of the source. This is expected to change when the app that |
| * this source is for is upgraded. |
| */ |
| int getVersionCode(); |
| |
| /** |
| * Indicates if shortcuts from the given version of this source are compatible with the |
| * currently installed version. The version code given will only differ from the currently |
| * installed version after the source has been upgraded. |
| * |
| * @param version version of the source (as returned by {@link #getVersionCode} which originally |
| * created the shortcut. |
| */ |
| boolean isVersionCodeCompatible(int version); |
| |
| /** |
| * Gets the localized, human-readable label for this source. |
| */ |
| CharSequence getLabel(); |
| |
| /** |
| * Gets the icon for this suggestion source. |
| */ |
| Drawable getSourceIcon(); |
| |
| /** |
| * Gets the icon URI for this suggestion source. |
| */ |
| Uri getSourceIconUri(); |
| |
| /** |
| * Gets an icon from this suggestion source. |
| * |
| * @param drawableId Resource ID or URI. |
| */ |
| NowOrLater<Drawable> getIcon(String drawableId); |
| |
| /** |
| * Gets the URI for an icon form this suggestion source. |
| * |
| * @param drawableId Resource ID or URI. |
| */ |
| Uri getIconUri(String drawableId); |
| |
| /** |
| * Gets the search hint text for this suggestion source. |
| */ |
| CharSequence getHint(); |
| |
| /** |
| * Gets the description to use for this source in system search settings. |
| */ |
| CharSequence getSettingsDescription(); |
| |
| /** |
| * |
| * Note: this does not guarantee that this source will be queried for queries of |
| * this length or longer, only that it will not be queried for anything shorter. |
| * |
| * @return The minimum number of characters needed to trigger this source. |
| */ |
| int getQueryThreshold(); |
| |
| /** |
| * Indicates whether a source should be invoked for supersets of queries it has returned zero |
| * results for in the past. For example, if a source returned zero results for "bo", it would |
| * be ignored for "bob". |
| * |
| * If set to <code>false</code>, this source will only be ignored for a single session; the next |
| * time the search dialog is brought up, all sources will be queried. |
| * |
| * @return <code>true</code> if this source should be queried after returning no results. |
| */ |
| boolean queryAfterZeroResults(); |
| |
| boolean voiceSearchEnabled(); |
| |
| /** |
| * Whether this source should be included in the blended All mode. The source must |
| * also be enabled to be included in All. |
| */ |
| boolean includeInAll(); |
| |
| /** |
| * Gets the maximum number of shortcuts that will be shown from this source. |
| */ |
| int getMaxShortcuts(Config config); |
| |
| Intent createSearchIntent(String query, Bundle appData); |
| |
| Intent createVoiceSearchIntent(Bundle appData); |
| |
| /** |
| * Checks if the current process can read the suggestions from this source. |
| */ |
| boolean canRead(); |
| |
| /** |
| * Gets suggestions from this source. |
| * |
| * @param query The user query. |
| * @param onlySource Indicates if this is the only source being queried. |
| * @return The suggestion results. |
| */ |
| SourceResult getSuggestions(String query, int queryLimit, boolean onlySource); |
| |
| /** |
| * Updates a shortcut. |
| * |
| * @param shortcutId The id of the shortcut to update. |
| * @param extraData associated with this shortcut. |
| * @return A SuggestionCursor positioned at the updated shortcut. If the |
| * cursor is empty or <code>null</code>, the shortcut will be removed. |
| */ |
| SuggestionCursor refreshShortcut(String shortcutId, String extraData); |
| |
| /** |
| * Gets the default intent action for suggestions from this source. |
| * |
| * @return The default intent action, or {@code null}. |
| */ |
| String getDefaultIntentAction(); |
| |
| /** |
| * Gets the default intent data for suggestions from this source. |
| * |
| * @return The default intent data, or {@code null}. |
| */ |
| String getDefaultIntentData(); |
| |
| /** |
| * Gets the root source, if this source is a wrapper around another. Otherwise, returns this |
| * source. |
| */ |
| Source getRoot(); |
| |
| } |