Add message copy functionality

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2018-05-08 20:30:43 +02:00
parent 3c3de7e465
commit 27c60bcce4

View File

@ -21,6 +21,9 @@
package com.nextcloud.talk.controllers;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
@ -68,6 +71,7 @@ import com.otaliastudios.autocomplete.AutocompleteCallback;
import com.otaliastudios.autocomplete.AutocompletePresenter;
import com.otaliastudios.autocomplete.CharPolicy;
import com.stfalcon.chatkit.commons.ImageLoader;
import com.stfalcon.chatkit.commons.models.IMessage;
import com.stfalcon.chatkit.messages.MessageInput;
import com.stfalcon.chatkit.messages.MessagesList;
import com.stfalcon.chatkit.messages.MessagesListAdapter;
@ -93,7 +97,7 @@ import retrofit2.Response;
@AutoInjector(NextcloudTalkApplication.class)
public class ChatController extends BaseController implements MessagesListAdapter.OnLoadMoreListener,
MessagesListAdapter.Formatter<Date> {
MessagesListAdapter.Formatter<Date>, MessagesListAdapter.OnMessageLongClickListener {
private static final String TAG = "ChatController";
@Inject
@ -122,7 +126,6 @@ public class ChatController extends BaseController implements MessagesListAdapte
/*
TODO:
- copy message
- check push notifications
- new conversation handling
*/
@ -175,6 +178,8 @@ public class ChatController extends BaseController implements MessagesListAdapte
adapter.setLoadMoreListener(this);
adapter.setDateHeadersFormatter(this::format);
adapter.setOnMessageLongClickListener(this);
setupMentionAutocomplete();
messageInput.getInputEditText().setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
@ -510,4 +515,18 @@ public class ChatController extends BaseController implements MessagesListAdapte
return callIntent;
}
@Override
public void onMessageLongClick(IMessage message) {
if (getActivity() != null) {
ClipboardManager clipboardManager = (android.content.ClipboardManager)
getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clipData = android.content.ClipData.newPlainText(
getResources().getString(R.string.nc_app_name), message.getText());
if (clipboardManager != null) {
clipboardManager.setPrimaryClip(clipData);
}
}
}
}