mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-04-20 22:23:37 +00:00
feat: Copy message to clipboard (#1443)
This commit is contained in:
parent
d76eac258b
commit
e412faecb9
7 changed files with 50 additions and 8 deletions
|
|
@ -127,6 +127,7 @@ class ContactsFragment : ScreenFragment("Messages"), Logging {
|
|||
override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
|
||||
mode.menuInflater.inflate(R.menu.menu_messages, menu)
|
||||
menu.findItem(R.id.resendButton).isVisible = false
|
||||
menu.findItem(R.id.copyButton).isVisible = false
|
||||
mode.title = "1"
|
||||
return true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,9 @@
|
|||
|
||||
package com.geeksville.mesh.ui
|
||||
|
||||
import android.content.ClipData
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.Menu
|
||||
|
|
@ -40,6 +43,7 @@ import androidx.lifecycle.lifecycleScope
|
|||
import com.geeksville.mesh.DataPacket
|
||||
import com.geeksville.mesh.R
|
||||
import com.geeksville.mesh.android.Logging
|
||||
import com.geeksville.mesh.android.toast
|
||||
import com.geeksville.mesh.database.entity.QuickChatAction
|
||||
import com.geeksville.mesh.databinding.MessagesFragmentBinding
|
||||
import com.geeksville.mesh.model.Message
|
||||
|
|
@ -284,19 +288,20 @@ class MessagesFragment : Fragment(), Logging {
|
|||
actionMode?.title = selectedList.size.toString()
|
||||
}
|
||||
}
|
||||
|
||||
R.id.resendButton -> lifecycleScope.launch {
|
||||
debug("User clicked resendButton")
|
||||
var resendText = ""
|
||||
selectedList.forEach {
|
||||
resendText = resendText + it.text + System.lineSeparator()
|
||||
}
|
||||
if (resendText != "") {
|
||||
resendText = resendText.substring(0, resendText.length - 1)
|
||||
}
|
||||
val resendText = getSelectedMessagesText()
|
||||
binding.messageInputText.setText(resendText)
|
||||
mode.finish()
|
||||
}
|
||||
R.id.copyButton -> lifecycleScope.launch {
|
||||
val copyText = getSelectedMessagesText()
|
||||
val clipboardManager =
|
||||
requireActivity().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
||||
clipboardManager.setPrimaryClip(ClipData.newPlainText("message text", copyText))
|
||||
requireActivity().toast(getString(R.string.copied))
|
||||
mode.finish()
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
|
@ -313,4 +318,15 @@ class MessagesFragment : Fragment(), Logging {
|
|||
model.focusUserNode(node)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getSelectedMessagesText(): String {
|
||||
var messageText = ""
|
||||
selectedList.forEach {
|
||||
messageText = messageText + it.text + System.lineSeparator()
|
||||
}
|
||||
if (messageText != "") {
|
||||
messageText = messageText.substring(0, messageText.length - 1)
|
||||
}
|
||||
return messageText
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue