1185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert/*
2185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * Copyright (C) 2009 The Android Open Source Project
3185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert *
4185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * Licensed under the Apache License, Version 2.0 (the "License");
5185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * you may not use this file except in compliance with the License.
6185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * You may obtain a copy of the License at
7185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert *
8185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert *      http://www.apache.org/licenses/LICENSE-2.0
9185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert *
10185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * Unless required by applicable law or agreed to in writing, software
11185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * distributed under the License is distributed on an "AS IS" BASIS,
12185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * See the License for the specific language governing permissions and
14185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert * limitations under the License.
15185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert */
16185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
17185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertpackage com.android.quicksearchbox.ui;
18185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
19185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertimport android.content.Context;
20185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringertimport android.util.AttributeSet;
21aa7d79792baca59eb7afe00ea27abc5176ddd34bMathew Inwoodimport android.widget.ListAdapter;
22713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringertimport android.widget.ListView;
23185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
24ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwoodimport com.android.quicksearchbox.SuggestionPosition;
25ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood
26185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert/**
27713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert * Holds a list of suggestions.
28185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert */
29fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwoodpublic class SuggestionsView extends ListView implements SuggestionsListView<ListAdapter> {
30185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
31b5fc08b7f16a32d3865f44b7f26d8aaa5304a2adBjorn Bringert    private static final boolean DBG = false;
32185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert    private static final String TAG = "QSB.SuggestionsView";
33185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
34fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwood    private SuggestionsAdapter<ListAdapter> mSuggestionsAdapter;
35fdb80c2962c88ac62dcd7ee7f2fab1857b61506bMathew Inwood
36185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert    public SuggestionsView(Context context, AttributeSet attrs) {
37185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert        super(context, attrs);
38185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert    }
39185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
40ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood    @Override
41fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwood    public void setSuggestionsAdapter(SuggestionsAdapter<ListAdapter> adapter) {
42fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwood        super.setAdapter(adapter == null ? null : adapter.getListAdapter());
43fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwood        mSuggestionsAdapter = adapter;
44aa7d79792baca59eb7afe00ea27abc5176ddd34bMathew Inwood    }
45aa7d79792baca59eb7afe00ea27abc5176ddd34bMathew Inwood
46ecf356c15143ab0583c64682de16d94a57f7dd1cMathew Inwood    @Override
47fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwood    public SuggestionsAdapter<ListAdapter> getSuggestionsAdapter() {
48fd4a4cbc1143a734d357897531daa7105db6459bMathew Inwood        return mSuggestionsAdapter;
49aa7d79792baca59eb7afe00ea27abc5176ddd34bMathew Inwood    }
50aa7d79792baca59eb7afe00ea27abc5176ddd34bMathew Inwood
51aa7d79792baca59eb7afe00ea27abc5176ddd34bMathew Inwood    @Override
52713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert    public void onFinishInflate() {
53713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert        super.onFinishInflate();
5466ee1cc883f77fee930587503ecdcd8d18f12b23Mathew Inwood        setItemsCanFocus(true);
55185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert    }
56185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert
57782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    /**
58713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert     * Gets the position of the selected suggestion.
59782dd228e78e9294692d639597f96c26283968bbBjorn Bringert     *
60782dd228e78e9294692d639597f96c26283968bbBjorn Bringert     * @return A 0-based index, or {@code -1} if no suggestion is selected.
61782dd228e78e9294692d639597f96c26283968bbBjorn Bringert     */
62782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    public int getSelectedPosition() {
63713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert        return getSelectedItemPosition();
64782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
65782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
66782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    /**
67713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert     * Gets the selected suggestion.
68782dd228e78e9294692d639597f96c26283968bbBjorn Bringert     *
69782dd228e78e9294692d639597f96c26283968bbBjorn Bringert     * @return {@code null} if no suggestion is selected.
70782dd228e78e9294692d639597f96c26283968bbBjorn Bringert     */
71782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    public SuggestionPosition getSelectedSuggestion() {
72713194910648268c094fa81b81f40ce2f7e39333Bjorn Bringert        return (SuggestionPosition) getSelectedItem();
73782dd228e78e9294692d639597f96c26283968bbBjorn Bringert    }
74782dd228e78e9294692d639597f96c26283968bbBjorn Bringert
75fdb80c2962c88ac62dcd7ee7f2fab1857b61506bMathew Inwood
76185bb2e3881452c084fde44d9bee657f65881b0eBjorn Bringert}
77