diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.java b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.java index 8e067977a..07efaa4eb 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/EntryMenuController.java @@ -48,6 +48,7 @@ import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.controllers.base.BaseController; import com.nextcloud.talk.events.BottomSheetLockEvent; import com.nextcloud.talk.models.json.conversations.Conversation; +import com.nextcloud.talk.utils.EmojiTextInputEditText; import com.nextcloud.talk.utils.ShareUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; @@ -71,7 +72,7 @@ public class EntryMenuController extends BaseController { Button proceedButton; @BindView(R.id.text_edit) - TextInputEditText editText; + EmojiTextInputEditText editText; @BindView(R.id.text_input_layout) TextInputLayout textInputLayout; diff --git a/app/src/main/java/com/nextcloud/talk/utils/EmojiTextInputEditText.java b/app/src/main/java/com/nextcloud/talk/utils/EmojiTextInputEditText.java new file mode 100644 index 000000000..e1111ec83 --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/utils/EmojiTextInputEditText.java @@ -0,0 +1,72 @@ +/* + * Nextcloud Talk application + * + * @author Mario Danic + * Copyright (C) 2017-2019 Mario Danic + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package com.nextcloud.talk.utils; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputConnection; + +import androidx.emoji.widget.EmojiEditTextHelper; + +import com.google.android.material.textfield.TextInputEditText; + +public class EmojiTextInputEditText extends TextInputEditText { + private EmojiEditTextHelper emojiEditTextHelper; + + public EmojiTextInputEditText(Context context) { + super(context); + init(); + } + + public EmojiTextInputEditText(Context context, AttributeSet attrs) { + super(context, attrs); + init(); + } + + public EmojiTextInputEditText(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + + private void init() { + super.setKeyListener(getEmojiEditTextHelper().getKeyListener(getKeyListener())); + } + + @Override + public void setKeyListener(android.text.method.KeyListener keyListener) { + super.setKeyListener(getEmojiEditTextHelper().getKeyListener(keyListener)); + } + + @Override + public InputConnection onCreateInputConnection(EditorInfo outAttrs) { + InputConnection inputConnection = super.onCreateInputConnection(outAttrs); + return getEmojiEditTextHelper().onCreateInputConnection(inputConnection, outAttrs); + } + + private EmojiEditTextHelper getEmojiEditTextHelper() { + if (emojiEditTextHelper == null) { + emojiEditTextHelper = new EmojiEditTextHelper(this); + } + + return emojiEditTextHelper; + } +} diff --git a/app/src/main/res/layout/controller_entry_menu.xml b/app/src/main/res/layout/controller_entry_menu.xml index 5a8283c71..ab2d19b91 100644 --- a/app/src/main/res/layout/controller_entry_menu.xml +++ b/app/src/main/res/layout/controller_entry_menu.xml @@ -54,7 +54,7 @@ app:passwordToggleDrawable="@drawable/asl_password_visibility" app:passwordToggleTint="@color/grey_600"> -