Просмотр исходного кода

Fix #612 (again? :D)

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic 5 лет назад
Родитель
Сommit
98e1168b25

+ 2 - 1
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;

+ 72 - 0
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 <mario@lovelyhq.com>
+ *
+ * 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 <http://www.gnu.org/licenses/>.
+ */
+
+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;
+    }
+}

+ 1 - 1
app/src/main/res/layout/controller_entry_menu.xml

@@ -54,7 +54,7 @@
         app:passwordToggleDrawable="@drawable/asl_password_visibility"
         app:passwordToggleTint="@color/grey_600">
 
-        <com.google.android.material.textfield.TextInputEditText
+        <com.nextcloud.talk.utils.EmojiTextInputEditText
             android:id="@+id/text_edit"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"