1/*
2 * Copyright (C) 2010 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package com.android.quicksearchbox;
17
18import android.content.ComponentName;
19
20/**
21 * Interface for individual suggestions.
22 */
23public interface Suggestion {
24
25    /**
26     * Gets the source that produced the current suggestion.
27     */
28    Source getSuggestionSource();
29
30    /**
31     * Gets the shortcut ID of the current suggestion.
32     */
33    String getShortcutId();
34
35    /**
36     * Whether to show a spinner while refreshing this shortcut.
37     */
38    boolean isSpinnerWhileRefreshing();
39
40    /**
41     * Gets the format of the text returned by {@link #getSuggestionText1()}
42     * and {@link #getSuggestionText2()}.
43     *
44     * @return {@code null} or "html"
45     */
46    String getSuggestionFormat();
47
48    /**
49     * Gets the first text line for the current suggestion.
50     */
51    String getSuggestionText1();
52
53    /**
54     * Gets the second text line for the current suggestion.
55     */
56    String getSuggestionText2();
57
58    /**
59     * Gets the second text line URL for the current suggestion.
60     */
61    String getSuggestionText2Url();
62
63    /**
64     * Gets the left-hand-side icon for the current suggestion.
65     *
66     * @return A string that can be passed to {@link Source#getIcon(String)}.
67     */
68    String getSuggestionIcon1();
69
70    /**
71     * Gets the right-hand-side icon for the current suggestion.
72     *
73     * @return A string that can be passed to {@link Source#getIcon(String)}.
74     */
75    String getSuggestionIcon2();
76
77    /**
78     * Gets the intent action for the current suggestion.
79     */
80    String getSuggestionIntentAction();
81
82    /**
83     * Gets the name of the activity that the intent for the current suggestion will be sent to.
84     */
85    ComponentName getSuggestionIntentComponent();
86
87    /**
88     * Gets the extra data associated with this suggestion's intent.
89     */
90    String getSuggestionIntentExtraData();
91
92    /**
93     * Gets the data associated with this suggestion's intent.
94     */
95    String getSuggestionIntentDataString();
96
97    /**
98     * Gets the query associated with this suggestion's intent.
99     */
100    String getSuggestionQuery();
101
102    /**
103     * Gets the suggestion log type for the current suggestion. This is logged together
104     * with the value returned from {@link Source#getName()}.
105     * The value is source-specific. Most sources return {@code null}.
106     */
107    String getSuggestionLogType();
108
109    /**
110     * Checks if this suggestion is a shortcut.
111     */
112    boolean isSuggestionShortcut();
113
114    /**
115     * Checks if this is a web search suggestion.
116     */
117    boolean isWebSearchSuggestion();
118
119    /**
120     * Checks whether this suggestion comes from the user's search history.
121     */
122    boolean isHistorySuggestion();
123
124    /**
125     * Returns any extras associated with this suggestion, or {@code null} if there are none.
126     */
127    SuggestionExtras getExtras();
128
129}
130