1f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir/* 2f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * Copyright (C) 2017 The Android Open Source Project 3f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * 4f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * Licensed under the Apache License, Version 2.0 (the "License"); 5f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * you may not use this file except in compliance with the License. 6f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * You may obtain a copy of the License at 7f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * 8f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * http://www.apache.org/licenses/LICENSE-2.0 9f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * 10f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * Unless required by applicable law or agreed to in writing, software 11f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * distributed under the License is distributed on an "AS IS" BASIS, 12f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * See the License for the specific language governing permissions and 14f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * limitations under the License. 15f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir */ 16f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirpackage android.support.text.emoji.widget; 17f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir 18f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirimport static android.support.annotation.RestrictTo.Scope.LIBRARY_GROUP; 19f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir 2077b5c5b734f9f665577d1e3d178615db43ae1d4fSiyamed Sinirimport android.support.annotation.RequiresApi; 21f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirimport android.support.annotation.RestrictTo; 22f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirimport android.support.text.emoji.EmojiCompat; 23f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirimport android.text.Editable; 24f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirimport android.view.KeyEvent; 25f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirimport android.view.View; 26f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir 27f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir/** 28f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * KeyListener class to handle delete operations correctly. 29f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * 30f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir * @hide 31f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir */ 32f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir@RestrictTo(LIBRARY_GROUP) 3377b5c5b734f9f665577d1e3d178615db43ae1d4fSiyamed Sinir@RequiresApi(19) 34f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinirfinal class EmojiKeyListener implements android.text.method.KeyListener { 35f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir private final android.text.method.KeyListener mKeyListener; 36f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir 37f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir EmojiKeyListener(android.text.method.KeyListener keyListener) { 38f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir mKeyListener = keyListener; 39f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir } 40f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir 41f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir @Override 42f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir public int getInputType() { 43f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir return mKeyListener.getInputType(); 44f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir } 45f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir 46f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir @Override 47f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir public boolean onKeyDown(View view, Editable content, int keyCode, KeyEvent event) { 48f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir final boolean result = EmojiCompat.handleOnKeyDown(content, keyCode, event); 49f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir return result || mKeyListener.onKeyDown(view, content, keyCode, event); 50f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir } 51f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir 52f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir @Override 53f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) { 54f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir return mKeyListener.onKeyUp(view, text, keyCode, event); 55f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir } 56f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir 57f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir @Override 58f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir public boolean onKeyOther(View view, Editable text, KeyEvent event) { 59f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir return mKeyListener.onKeyOther(view, text, event); 60f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir } 61f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir 62f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir @Override 63f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir public void clearMetaKeyState(View view, Editable content, int states) { 64f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir mKeyListener.clearMetaKeyState(view, content, states); 65f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir } 66f8ec169d022fbed42fd82091d24c45f3767cdfe7Siyamed Sinir} 67