mirror of
https://github.com/FossifyOrg/Messages.git
synced 2025-12-23 15:49:27 -05:00
feat: allow copying multiple messages (#601)
Refs: https://github.com/FossifyOrg/Messages/issues/600
This commit is contained in:
@@ -5,6 +5,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
### Added
|
||||
- Ability to select and copy multiple text messages at once ([#600])
|
||||
|
||||
## [1.6.0] - 2025-10-29
|
||||
### Changed
|
||||
@@ -200,6 +202,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
[#561]: https://github.com/FossifyOrg/Messages/issues/561
|
||||
[#562]: https://github.com/FossifyOrg/Messages/issues/562
|
||||
[#574]: https://github.com/FossifyOrg/Messages/issues/574
|
||||
[#600]: https://github.com/FossifyOrg/Messages/issues/600
|
||||
|
||||
[Unreleased]: https://github.com/FossifyOrg/Messages/compare/1.6.0...HEAD
|
||||
[1.6.0]: https://github.com/FossifyOrg/Messages/compare/1.5.0...1.6.0
|
||||
|
||||
@@ -115,14 +115,14 @@ class ThreadAdapter(
|
||||
|
||||
override fun prepareActionMode(menu: Menu) {
|
||||
val isOneItemSelected = isOneItemSelected()
|
||||
val selectedItem = getSelectedItems().firstOrNull() as? Message
|
||||
val hasText = selectedItem?.body != null && selectedItem.body != ""
|
||||
val selectedMessages = getSelectedItems().filterIsInstance<Message>()
|
||||
val hasText = selectedMessages.any { it.body.isNotEmpty() }
|
||||
val showSaveAs = getSelectedItems().all {
|
||||
it is Message && (it.attachment?.attachments?.size ?: 0) > 0
|
||||
} && getSelectedAttachments().isNotEmpty()
|
||||
|
||||
menu.apply {
|
||||
findItem(R.id.cab_copy_to_clipboard).isVisible = isOneItemSelected && hasText
|
||||
findItem(R.id.cab_copy_to_clipboard).isVisible = hasText
|
||||
findItem(R.id.cab_save_as).isVisible = showSaveAs
|
||||
findItem(R.id.cab_share).isVisible = isOneItemSelected && hasText
|
||||
findItem(R.id.cab_forward_message).isVisible = isOneItemSelected
|
||||
@@ -219,8 +219,14 @@ class ThreadAdapter(
|
||||
}
|
||||
|
||||
private fun copyToClipboard() {
|
||||
val firstItem = getSelectedItems().firstOrNull() as? Message ?: return
|
||||
activity.copyToClipboard(firstItem.body)
|
||||
val selectedMessages = getSelectedItems().filterIsInstance<Message>()
|
||||
val textToCopy = selectedMessages
|
||||
.mapNotNull { message -> message.body.takeIf { it.isNotEmpty() } }
|
||||
.joinToString("\n\n")
|
||||
|
||||
if (textToCopy.isNotEmpty()) {
|
||||
activity.copyToClipboard(textToCopy)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getSelectedAttachments(): List<Attachment> {
|
||||
|
||||
Reference in New Issue
Block a user