1/*
2 * Copyright (C) 2011 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 */
16
17package android.support.v4.widget;
18
19import android.app.SearchManager;
20import android.content.ComponentName;
21import android.content.Context;
22import android.view.View;
23import android.widget.SearchView;
24import android.widget.SearchView.OnCloseListener;
25import android.widget.SearchView.OnQueryTextListener;
26
27/**
28 * Implementation of SearchView compatibility that can call Honeycomb APIs.
29 */
30class SearchViewCompatHoneycomb {
31
32    public static void checkIfLegalArg(View searchView) {
33        if (searchView == null) {
34            throw new IllegalArgumentException("searchView must be non-null");
35        }
36        if (!(searchView instanceof SearchView)) {
37            throw new IllegalArgumentException("searchView must be an instance of" +
38                    "android.widget.SearchView");
39        }
40    }
41
42    interface OnQueryTextListenerCompatBridge {
43        boolean onQueryTextSubmit(String query);
44        boolean onQueryTextChange(String newText);
45    }
46
47    interface OnCloseListenerCompatBridge {
48        boolean onClose();
49    }
50
51    public static View newSearchView(Context context) {
52        return new SearchView(context);
53    }
54
55    public static void setSearchableInfo(View searchView, ComponentName searchableComponent) {
56        SearchView sv = ((SearchView) searchView);
57        SearchManager searchManager = (SearchManager)
58                sv.getContext().getSystemService(Context.SEARCH_SERVICE);
59        sv.setSearchableInfo(searchManager.getSearchableInfo(searchableComponent));
60    }
61
62    public static Object newOnQueryTextListener(final OnQueryTextListenerCompatBridge listener) {
63        return new OnQueryTextListener() {
64            @Override
65            public boolean onQueryTextSubmit(String query) {
66                return listener.onQueryTextSubmit(query);
67            }
68
69            @Override
70            public boolean onQueryTextChange(String newText) {
71                return listener.onQueryTextChange(newText);
72            }
73        };
74    }
75
76    public static void setOnQueryTextListener(View searchView, Object listener) {
77        ((SearchView) searchView).setOnQueryTextListener((OnQueryTextListener) listener);
78    }
79
80    public static Object newOnCloseListener(final OnCloseListenerCompatBridge listener) {
81        return new OnCloseListener() {
82            @Override
83            public boolean onClose() {
84                return listener.onClose();
85            }
86        };
87    }
88
89    public static void setOnCloseListener(View searchView, Object listener) {
90        ((SearchView) searchView).setOnCloseListener((OnCloseListener) listener);
91    }
92
93    public static CharSequence getQuery(View searchView) {
94        return ((SearchView) searchView).getQuery();
95    }
96
97    public static void setQuery(View searchView, CharSequence query, boolean submit) {
98        ((SearchView) searchView).setQuery(query, submit);
99    }
100
101    public static void setQueryHint(View searchView, CharSequence hint) {
102        ((SearchView) searchView).setQueryHint(hint);
103    }
104
105    public static void setIconified(View searchView, boolean iconify) {
106        ((SearchView) searchView).setIconified(iconify);
107    }
108
109    public static boolean isIconified(View searchView) {
110        return ((SearchView) searchView).isIconified();
111    }
112
113    public static void setSubmitButtonEnabled(View searchView, boolean enabled) {
114        ((SearchView) searchView).setSubmitButtonEnabled(enabled);
115    }
116
117    public static boolean isSubmitButtonEnabled(View searchView) {
118        return ((SearchView) searchView).isSubmitButtonEnabled();
119    }
120
121    public static void setQueryRefinementEnabled(View searchView, boolean enable) {
122        ((SearchView) searchView).setQueryRefinementEnabled(enable);
123    }
124
125    public static boolean isQueryRefinementEnabled(View searchView) {
126        return ((SearchView) searchView).isQueryRefinementEnabled();
127    }
128
129    public static void setMaxWidth(View searchView, int maxpixels) {
130        ((SearchView) searchView).setMaxWidth(maxpixels);
131    }
132}
133