From b82c4d0447b0285726ceba48cc6f58b5ffdd7438 Mon Sep 17 00:00:00 2001 From: ChronosX88 Date: Mon, 27 May 2019 12:32:28 +0400 Subject: [PATCH] Added ability to copy message to clipboard --- .../chronosx88/influence/contracts/CoreContracts.kt | 1 + .../chronosx88/influence/presenters/ChatPresenter.kt | 10 ++++++++++ .../github/chronosx88/influence/views/ChatActivity.kt | 5 +++++ app/src/main/res/values-ru-rRU/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 5 files changed, 18 insertions(+) diff --git a/app/src/main/java/io/github/chronosx88/influence/contracts/CoreContracts.kt b/app/src/main/java/io/github/chronosx88/influence/contracts/CoreContracts.kt index e05b927..d8582d2 100644 --- a/app/src/main/java/io/github/chronosx88/influence/contracts/CoreContracts.kt +++ b/app/src/main/java/io/github/chronosx88/influence/contracts/CoreContracts.kt @@ -103,6 +103,7 @@ interface CoreContracts { fun setAdapter(adapter: MessagesListAdapter) fun setUserStatus(status: String) fun getActivityObject(): Activity + fun showToast(text: String) } // -----SettingsFragment----- diff --git a/app/src/main/java/io/github/chronosx88/influence/presenters/ChatPresenter.kt b/app/src/main/java/io/github/chronosx88/influence/presenters/ChatPresenter.kt index 4ed58bc..84402e6 100644 --- a/app/src/main/java/io/github/chronosx88/influence/presenters/ChatPresenter.kt +++ b/app/src/main/java/io/github/chronosx88/influence/presenters/ChatPresenter.kt @@ -16,6 +16,9 @@ package io.github.chronosx88.influence.presenters +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context import android.view.MenuItem import android.widget.Toast import com.google.gson.Gson @@ -38,6 +41,7 @@ import java9.util.stream.StreamSupport import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode +import org.jetbrains.anko.toast import org.jivesoftware.smackx.forward.packet.Forwarded import java.util.* import kotlin.Comparator @@ -62,6 +66,12 @@ class ChatPresenter(private val view: CoreContracts.IChatViewContract, private v getUserStatus() EventBus.getDefault().register(this) AppHelper.setCurrentChatActivity(chatID) + chatAdapter.setOnMessageLongClickListener { + val clipboard = AppHelper.getContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + val clip = ClipData.newPlainText(it.text, it.text) + clipboard.primaryClip = clip + view.showToast(AppHelper.getContext().getString(R.string.copied_to_clipboard)) + } } override fun sendMessage(text: String): Boolean { diff --git a/app/src/main/java/io/github/chronosx88/influence/views/ChatActivity.kt b/app/src/main/java/io/github/chronosx88/influence/views/ChatActivity.kt index f0f610c..cc577e8 100644 --- a/app/src/main/java/io/github/chronosx88/influence/views/ChatActivity.kt +++ b/app/src/main/java/io/github/chronosx88/influence/views/ChatActivity.kt @@ -37,6 +37,7 @@ import io.github.chronosx88.influence.contracts.CoreContracts import io.github.chronosx88.influence.models.GenericMessage import io.github.chronosx88.influence.presenters.ChatPresenter import org.jetbrains.anko.find +import org.jetbrains.anko.toast class ChatActivity : AppCompatActivity(), CoreContracts.IChatViewContract { private var messageList: MessagesList? = null @@ -127,4 +128,8 @@ class ChatActivity : AppCompatActivity(), CoreContracts.IChatViewContract { override fun getActivityObject(): Activity { return this } + + override fun showToast(text: String) { + toast(text) + } } diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 085533a..e7882d4 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -29,4 +29,5 @@ Очистить чат Уведомления Influence Уведомления чатов Influence + Сообщение скопировано в буфер обмена \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ad3839d..77ca79f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -28,4 +28,5 @@ Clear chat Influence Notifications Influence chat notifications + Message is copied to clipboard