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