diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2017-01-03 11:44:14 +0100 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2017-01-03 11:44:14 +0100 |
commit | 470d244414ebacb743112bfb24ca28957e7dde93 (patch) | |
tree | 3776c8a9344d40f3c9dc8cb3957be4ec479c0166 /src/main/java/eu/siacs/conversations/ui/EditMessage.java | |
parent | 2bb7bc1455e9bdcc9065d513fea58589f8179b10 (diff) | |
parent | 5a670c88b081d3f9b8d33e37fd8d966f04c245fc (diff) |
Merge branch 'feature-gboardgifs' of https://github.com/illegalprime/Conversations into illegalprime-feature-gboardgifs
Diffstat (limited to 'src/main/java/eu/siacs/conversations/ui/EditMessage.java')
-rw-r--r-- | src/main/java/eu/siacs/conversations/ui/EditMessage.java | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/EditMessage.java b/src/main/java/eu/siacs/conversations/ui/EditMessage.java index e609d08e..6686d951 100644 --- a/src/main/java/eu/siacs/conversations/ui/EditMessage.java +++ b/src/main/java/eu/siacs/conversations/ui/EditMessage.java @@ -1,19 +1,33 @@ package eu.siacs.conversations.ui; +import android.support.v13.view.inputmethod.EditorInfoCompat; +import android.support.v13.view.inputmethod.InputConnectionCompat; +import android.support.v13.view.inputmethod.InputContentInfoCompat; + import android.content.Context; import android.os.Build; +import android.os.Bundle; import android.os.Handler; import android.text.Editable; import android.text.InputFilter; import android.text.Spanned; import android.util.AttributeSet; import android.view.KeyEvent; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputConnection; import android.widget.EditText; import eu.siacs.conversations.Config; public class EditMessage extends EditText { + public interface OnCommitContentListener { + boolean onCommitContent(InputContentInfoCompat inputContentInfo, int flags, Bundle opts, String[] mimeTypes); + } + + private OnCommitContentListener mCommitContentListener = null; + private String[] mimeTypes = null; + public EditMessage(Context context, AttributeSet attrs) { super(context, attrs); } @@ -125,4 +139,27 @@ public class EditMessage extends EditText { return super.onTextContextMenuItem(id); } } + + public void setRichContentListener(String[] mimeTypes, OnCommitContentListener listener) { + this.mimeTypes = mimeTypes; + this.mCommitContentListener = listener; + } + + @Override + public InputConnection onCreateInputConnection(EditorInfo editorInfo) { + final InputConnection ic = super.onCreateInputConnection(editorInfo); + + if (mimeTypes != null && mCommitContentListener != null) { + EditorInfoCompat.setContentMimeTypes(editorInfo, mimeTypes); + return InputConnectionCompat.createWrapper(ic, editorInfo, new InputConnectionCompat.OnCommitContentListener() { + @Override + public boolean onCommitContent(InputContentInfoCompat inputContentInfo, int flags, Bundle opts) { + return EditMessage.this.mCommitContentListener.onCommitContent(inputContentInfo, flags, opts, mimeTypes); + } + }); + } + else { + return ic; + } + } } |