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