浏览代码

Add message copy functionality

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic 7 年之前
父节点
当前提交
27c60bcce4
共有 1 个文件被更改,包括 21 次插入2 次删除
  1. 21 2
      app/src/main/java/com/nextcloud/talk/controllers/ChatController.java

+ 21 - 2
app/src/main/java/com/nextcloud/talk/controllers/ChatController.java

@@ -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);
+            }
+        }
+    }
 }