11935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov/*
21935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Copyright (C) 2011 The Android Open Source Project
31935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov *
41935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License");
51935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * you may not use this file except in compliance with the License.
61935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * You may obtain a copy of the License at
71935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov *
81935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov *      http://www.apache.org/licenses/LICENSE-2.0
91935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov *
101935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Unless required by applicable law or agreed to in writing, software
111935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS,
121935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * See the License for the specific language governing permissions and
141935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * limitations under the License.
151935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov */
161935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
171935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovpackage android.support.v4.widget;
181935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
1944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackbornimport android.app.SearchManager;
2044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackbornimport android.content.ComponentName;
211935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovimport android.content.Context;
221935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovimport android.view.View;
231935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovimport android.widget.SearchView;
2444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackbornimport android.widget.SearchView.OnCloseListener;
251935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovimport android.widget.SearchView.OnQueryTextListener;
261935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
271935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov/**
281935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov * Implementation of SearchView compatibility that can call Honeycomb APIs.
291935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov */
301935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganovclass SearchViewCompatHoneycomb {
311935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
321935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    interface OnQueryTextListenerCompatBridge {
331935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        public boolean onQueryTextSubmit(String query);
341935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        public boolean onQueryTextChange(String newText);
351935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    }
361935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
3744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    interface OnCloseListenerCompatBridge {
3844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        public boolean onClose();
3944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
4044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
411935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    public static View newSearchView(Context context) {
421935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        return new SearchView(context);
431935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    }
441935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
4544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static void setSearchableInfo(View searchView, ComponentName searchableComponent) {
4644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        SearchView sv = ((SearchView) searchView);
4744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        SearchManager searchManager = (SearchManager)
4844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn                sv.getContext().getSystemService(Context.SEARCH_SERVICE);
4944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        sv.setSearchableInfo(searchManager.getSearchableInfo(searchableComponent));
5044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
5144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
521935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    public static Object newOnQueryTextListener(final OnQueryTextListenerCompatBridge listener) {
531935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        return new OnQueryTextListener() {
541935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov            @Override
551935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov            public boolean onQueryTextSubmit(String query) {
561935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov                return listener.onQueryTextSubmit(query);
571935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov            }
581935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
591935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov            @Override
601935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov            public boolean onQueryTextChange(String newText) {
611935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov                return listener.onQueryTextChange(newText);
621935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov            }
631935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        };
641935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    }
651935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov
661935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    public static void setOnQueryTextListener(Object searchView, Object listener) {
671935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov        ((SearchView) searchView).setOnQueryTextListener((OnQueryTextListener) listener);
681935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov    }
6944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
7044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static Object newOnCloseListener(final OnCloseListenerCompatBridge listener) {
7144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        return new OnCloseListener() {
7244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn            @Override
7344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn            public boolean onClose() {
7444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn                return listener.onClose();
7544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn            }
7644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        };
7744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
7844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
7944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static void setOnCloseListener(Object searchView, Object listener) {
8044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        ((SearchView) searchView).setOnCloseListener((OnCloseListener) listener);
8144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
8244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
8344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static CharSequence getQuery(View searchView) {
8444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        return ((SearchView) searchView).getQuery();
8544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
8644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
8744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static void setQuery(View searchView, CharSequence query, boolean submit) {
8844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        ((SearchView) searchView).setQuery(query, submit);
8944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
9044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
9144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static void setQueryHint(View searchView, CharSequence hint) {
9244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        ((SearchView) searchView).setQueryHint(hint);
9344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
9444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
9544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static void setIconified(View searchView, boolean iconify) {
9644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        ((SearchView) searchView).setIconified(iconify);
9744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
9844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
9944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static boolean isIconified(View searchView) {
10044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        return ((SearchView) searchView).isIconified();
10144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
10244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
10344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static void setSubmitButtonEnabled(View searchView, boolean enabled) {
10444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        ((SearchView) searchView).setSubmitButtonEnabled(enabled);
10544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
10644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
10744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static boolean isSubmitButtonEnabled(View searchView) {
10844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        return ((SearchView) searchView).isSubmitButtonEnabled();
10944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
11044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
11144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static void setQueryRefinementEnabled(View searchView, boolean enable) {
11244e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        ((SearchView) searchView).setQueryRefinementEnabled(enable);
11344e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
11444e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
11544e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static boolean isQueryRefinementEnabled(View searchView) {
11644e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        return ((SearchView) searchView).isQueryRefinementEnabled();
11744e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
11844e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn
11944e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    public static void setMaxWidth(View searchView, int maxpixels) {
12044e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn        ((SearchView) searchView).setMaxWidth(maxpixels);
12144e3a52be44809a8018fb170e3130cc0ae164366Dianne Hackborn    }
1221935ed3af7c6545bc38adfdc6026d87a3249222fSvetoslav Ganov}
123