1f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert/*
2f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert * Copyright (C) 2009 The Android Open Source Project
3f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert *
4f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
5f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert * you may not use this file except in compliance with the License.
6f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert * You may obtain a copy of the License at
7f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert *
8f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
9f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert *
10f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert * Unless required by applicable law or agreed to in writing, software
11f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
12f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert * See the License for the specific language governing permissions and
14f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert * limitations under the License.
15f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert */
16f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert
17f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringertpackage com.android.quicksearchbox;
18f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert
19f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert
20f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert/**
21f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert * Interface for objects that can produce a SuggestionCursor given a query.
22f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert */
23f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringertpublic interface SuggestionCursorProvider<C extends SuggestionCursor> {
24f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert
25f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert    /**
26f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert     * Gets the name of the provider. This is used for logging and
27f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert     * to execute tasks on the queue for the provider.
28f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert     */
29f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert    String getName();
30f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert
31f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert    /**
32f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert     * Gets suggestions from the provider.
33f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert     *
34f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert     * @param query The user query.
35f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert     * @param queryLimit An advisory maximum number of results that the source should return.
36cd1e3ba5f7c3f5242345ff6f674281e3d6366e24Mathew Inwood     * @param onlyOne Indicates if this provider is the only one being used for the query.
3793bd2e70b8b08da1ec37fd0e990dac05551d2e90Bjorn Bringert     * @return The suggestion results. Must not be {@code null}.
38f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert     */
39cd1e3ba5f7c3f5242345ff6f674281e3d6366e24Mathew Inwood    C getSuggestions(String query, int queryLimit, boolean onlyOne);
40f252dc7a25ba08b973ecc1cfbbce58eb78d42167Bjorn Bringert}
41