AllAppsSearchBarController.java revision 4919827990b16ae22595d0b7cb123a875961d9be
1ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung/* 2ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Copyright (C) 2015 The Android Open Source Project 3ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * 4ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Licensed under the Apache License, Version 2.0 (the "License"); 5ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * you may not use this file except in compliance with the License. 6ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * You may obtain a copy of the License at 7ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * 8ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * http://www.apache.org/licenses/LICENSE-2.0 9ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * 10ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Unless required by applicable law or agreed to in writing, software 11ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * distributed under the License is distributed on an "AS IS" BASIS, 12ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * See the License for the specific language governing permissions and 14ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * limitations under the License. 15ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung */ 16ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chungpackage com.android.launcher3.allapps; 17ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 184919827990b16ae22595d0b7cb123a875961d9beSunny Goyalimport android.content.ComponentName; 19ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chungimport android.graphics.Rect; 20ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chungimport android.view.View; 21ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chungimport android.view.ViewGroup; 22ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 235183285847816cee9d0db6a8a7ab1a5929163e4eSunny Goyalimport com.android.launcher3.util.ComponentKey; 245183285847816cee9d0db6a8a7ab1a5929163e4eSunny Goyal 25ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chungimport java.util.ArrayList; 26ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 27ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung/** 28ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * An interface to a search box that AllApps can command. 29ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung */ 30ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chungpublic abstract class AllAppsSearchBarController { 31ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 32ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung protected AlphabeticalAppsList mApps; 33ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung protected Callbacks mCb; 34ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 35ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung /** 36ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Sets the references to the apps model and the search result callback. 37ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung */ 384919827990b16ae22595d0b7cb123a875961d9beSunny Goyal public final void initialize(AlphabeticalAppsList apps, Callbacks cb) { 39ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung mApps = apps; 40ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung mCb = cb; 414919827990b16ae22595d0b7cb123a875961d9beSunny Goyal onInitialize(); 42ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung } 43ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 444919827990b16ae22595d0b7cb123a875961d9beSunny Goyal /** 454919827990b16ae22595d0b7cb123a875961d9beSunny Goyal * To be overridden by subclasses. This method will get called when the controller is set, 464919827990b16ae22595d0b7cb123a875961d9beSunny Goyal * before getView(). 474919827990b16ae22595d0b7cb123a875961d9beSunny Goyal */ 484919827990b16ae22595d0b7cb123a875961d9beSunny Goyal protected abstract void onInitialize(); 49ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 50ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung /** 51ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Returns the search bar view. 52ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * @param parent the parent to attach the search bar view to. 53ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung */ 54ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung public abstract View getView(ViewGroup parent); 55ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 56ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung /** 57ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Focuses the search field to handle key events. 58ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung */ 59ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung public abstract void focusSearchField(); 60ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 61ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung /** 62ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Returns whether the search field is focused. 63ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung */ 64ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung public abstract boolean isSearchFieldFocused(); 65ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 66ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung /** 67ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Resets the search bar state. 68ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung */ 69ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung public abstract void reset(); 70ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 71ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung /** 72ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Returns whether the prediction bar should currently be visible depending on the state of 73ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * the search bar. 74ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung */ 75ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung public abstract boolean shouldShowPredictionBar(); 76ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 77ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung /** 78ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Callback for getting search results. 79ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung */ 80ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung public interface Callbacks { 81ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 82ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung /** 83ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Called when the bounds of the search bar has changed. 84ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung */ 85ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung void onBoundsChanged(Rect newBounds); 86ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 87ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung /** 88ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Called when the search is complete. 89ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * 90ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * @param apps sorted list of matching components or null if in case of failure. 91ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung */ 925183285847816cee9d0db6a8a7ab1a5929163e4eSunny Goyal void onSearchResult(String query, ArrayList<ComponentKey> apps); 93ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung 94ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung /** 95ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung * Called when the search results should be cleared. 96ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung */ 97ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung void clearSearchResult(); 98ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung } 99ef7f874a889b609bd34e692b9c9a1f8cefd1ea95Winson Chung}