193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert/*
293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert * Copyright (C) 2010 The Android Open Source Project
393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert *
493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert * you may not use this file except in compliance with the License.
693bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert * You may obtain a copy of the License at
793bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert *
893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert *
1093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert * Unless required by applicable law or agreed to in writing, software
1193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
1293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert * See the License for the specific language governing permissions and
1493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert * limitations under the License.
1593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert */
1693bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringertpackage com.android.quicksearchbox;
1793bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
1838eb02e676db9e5a633e3c88a90beb8a477b1ca1Bjorn Bringertimport android.content.ComponentName;
1938eb02e676db9e5a633e3c88a90beb8a477b1ca1Bjorn Bringert
2093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert/**
2193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert * Interface for individual suggestions.
2293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert */
2393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringertpublic interface Suggestion {
2493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
2593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
2693bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the source that produced the current suggestion.
2793bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
2893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    Source getSuggestionSource();
2993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
3093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
3193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the shortcut ID of the current suggestion.
3293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
3393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    String getShortcutId();
3493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
3593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
3693bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Whether to show a spinner while refreshing this shortcut.
3793bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
3893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    boolean isSpinnerWhileRefreshing();
3993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
4093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
4193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the format of the text returned by {@link #getSuggestionText1()}
4293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * and {@link #getSuggestionText2()}.
4393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     *
4493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * @return {@code null} or "html"
4593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
4693bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    String getSuggestionFormat();
4793bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
4893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
4993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the first text line for the current suggestion.
5093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
5193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    String getSuggestionText1();
5293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
5393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
5493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the second text line for the current suggestion.
5593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
5693bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    String getSuggestionText2();
5793bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
5893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
5993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the second text line URL for the current suggestion.
6093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
6193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    String getSuggestionText2Url();
6293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
6393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
6493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the left-hand-side icon for the current suggestion.
6593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     *
6693bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * @return A string that can be passed to {@link Source#getIcon(String)}.
6793bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
6893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    String getSuggestionIcon1();
6993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
7093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
7193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the right-hand-side icon for the current suggestion.
7293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     *
7393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * @return A string that can be passed to {@link Source#getIcon(String)}.
7493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
7593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    String getSuggestionIcon2();
7693bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
7793bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
7893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the intent action for the current suggestion.
7993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
8093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    String getSuggestionIntentAction();
8193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
8293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
8338eb02e676db9e5a633e3c88a90beb8a477b1ca1Bjorn Bringert     * Gets the name of the activity that the intent for the current suggestion will be sent to.
8438eb02e676db9e5a633e3c88a90beb8a477b1ca1Bjorn Bringert     */
8538eb02e676db9e5a633e3c88a90beb8a477b1ca1Bjorn Bringert    ComponentName getSuggestionIntentComponent();
8638eb02e676db9e5a633e3c88a90beb8a477b1ca1Bjorn Bringert
8738eb02e676db9e5a633e3c88a90beb8a477b1ca1Bjorn Bringert    /**
8893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the extra data associated with this suggestion's intent.
8993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
9093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    String getSuggestionIntentExtraData();
9193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
9293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
9393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the data associated with this suggestion's intent.
9493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
9593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    String getSuggestionIntentDataString();
9693bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
9793bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
9893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the query associated with this suggestion's intent.
9993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
10093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    String getSuggestionQuery();
10193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
10293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
10393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Gets the suggestion log type for the current suggestion. This is logged together
10493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * with the value returned from {@link Source#getName()}.
10593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * The value is source-specific. Most sources return {@code null}.
10693bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
10793bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    String getSuggestionLogType();
10893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
10993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
11093bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Checks if this suggestion is a shortcut.
11193bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
11293bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    boolean isSuggestionShortcut();
11393bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
11493bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    /**
11593bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * Checks if this is a web search suggestion.
11693bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     */
11793bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert    boolean isWebSearchSuggestion();
11893bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert
1195229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood    /**
120fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert     * Checks whether this suggestion comes from the user's search history.
121fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert     */
122fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert    boolean isHistorySuggestion();
123fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert
124fb8ce18922dae59db424fce906b5c113797fe81eBjorn Bringert    /**
1255229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood     * Returns any extras associated with this suggestion, or {@code null} if there are none.
1265229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood     */
1275229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood    SuggestionExtras getExtras();
1285229b06f00d20aac76cd8519b37f2a579d61c54fMathew Inwood
12993bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert}
130