13c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet/* 23c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * Copyright (C) 2014 The Android Open Source Project 33c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * 43c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 53c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * in compliance with the License. You may obtain a copy of the License at 63c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * 73c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * http://www.apache.org/licenses/LICENSE-2.0 83c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * 93c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * Unless required by applicable law or agreed to in writing, software distributed under the License 103c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 113c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * or implied. See the License for the specific language governing permissions and limitations under 123c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * the License. 133c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet */ 14ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.leanback.widget; 153c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet 163c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichetimport android.content.Context; 173c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichetimport android.util.AttributeSet; 183c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichetimport android.util.Log; 193c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichetimport android.view.KeyEvent; 203c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet 218619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikasimport androidx.leanback.R; 228619e0ef7062b6a714f22af993e4b440fae7ef08Aurimas Liutikas 233c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet/** 243c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * EditText widget that monitors keyboard changes. 253c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet */ 26a088f574b916685bd0a75ff613ac2009a3bad483Craig Stoutpublic class SearchEditText extends StreamingTextView { 273c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet private static final String TAG = SearchEditText.class.getSimpleName(); 283c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet private static final boolean DEBUG = false; 293c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet 30a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 31a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Interface for receiving notification when the keyboard is dismissed. 32a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 333c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet public interface OnKeyboardDismissListener { 34a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout /** 35a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Method invoked when the keyboard is dismissed. 36a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout */ 373c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet public void onKeyboardDismiss(); 383c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet } 393c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet 403c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet private OnKeyboardDismissListener mKeyboardDismissListener; 413c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet 423c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet public SearchEditText(Context context) { 433c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet this(context, null); 443c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet } 453c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet 463c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet public SearchEditText(Context context, AttributeSet attrs) { 473c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet this(context, attrs, R.style.TextAppearance_Leanback_SearchTextEdit); 483c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet } 493c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet 503c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet public SearchEditText(Context context, AttributeSet attrs, int defStyle) { 513c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet super(context, attrs, defStyle); 523c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet } 533c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet 543c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet @Override 553c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet public boolean onKeyPreIme(int keyCode, KeyEvent event) { 563c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { 573c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet if (DEBUG) Log.v(TAG, "Keyboard being dismissed"); 58682b577d8c89af032bb9e114d9df59d7aeaad6efJake Wharton if (mKeyboardDismissListener != null) { 59682b577d8c89af032bb9e114d9df59d7aeaad6efJake Wharton mKeyboardDismissListener.onKeyboardDismiss(); 60682b577d8c89af032bb9e114d9df59d7aeaad6efJake Wharton } 612cd8c3f3ca891f8b27bbc10ffc044cace0185ac2Jerome Poichet return false; 623c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet } 633c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet return super.onKeyPreIme(keyCode, event); 643c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet } 653c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet 663c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet /** 67a00bada00bff4a58436a39472ab14ccb7a8f619dCraig Stout * Sets a keyboard dismissed listener. 683c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * 693c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet * @param listener The listener. 703c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet */ 713c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet public void setOnKeyboardDismissListener(OnKeyboardDismissListener listener) { 723c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet mKeyboardDismissListener = listener; 733c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet } 743c2998d502e4e2586d0bfc52ff5d1f2725fa9e6dJerome Poichet} 75