Adding the ability to copy in message details

Cleaning up icons
This commit is contained in:
ThomasSession 2024-09-03 15:42:32 +10:00 committed by fanchao
parent 2704bc717d
commit 4aa68c9f49
12 changed files with 48 additions and 16 deletions

View File

@ -117,6 +117,7 @@ import org.thoughtcrime.securesms.conversation.v2.MessageDetailActivity.Companio
import org.thoughtcrime.securesms.conversation.v2.MessageDetailActivity.Companion.ON_DELETE import org.thoughtcrime.securesms.conversation.v2.MessageDetailActivity.Companion.ON_DELETE
import org.thoughtcrime.securesms.conversation.v2.MessageDetailActivity.Companion.ON_REPLY import org.thoughtcrime.securesms.conversation.v2.MessageDetailActivity.Companion.ON_REPLY
import org.thoughtcrime.securesms.conversation.v2.MessageDetailActivity.Companion.ON_RESEND import org.thoughtcrime.securesms.conversation.v2.MessageDetailActivity.Companion.ON_RESEND
import org.thoughtcrime.securesms.conversation.v2.MessageDetailActivity.Companion.ON_COPY
import org.thoughtcrime.securesms.conversation.v2.dialogs.BlockedDialog import org.thoughtcrime.securesms.conversation.v2.dialogs.BlockedDialog
import org.thoughtcrime.securesms.conversation.v2.dialogs.LinkPreviewDialog import org.thoughtcrime.securesms.conversation.v2.dialogs.LinkPreviewDialog
import org.thoughtcrime.securesms.conversation.v2.input_bar.InputBarButton import org.thoughtcrime.securesms.conversation.v2.input_bar.InputBarButton
@ -2204,6 +2205,7 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe
ON_REPLY -> reply(set) ON_REPLY -> reply(set)
ON_RESEND -> resendMessage(set) ON_RESEND -> resendMessage(set)
ON_DELETE -> deleteMessages(set) ON_DELETE -> deleteMessages(set)
ON_COPY -> copyMessages(set)
} }
} }

View File

@ -95,6 +95,7 @@ class MessageDetailActivity : PassphraseRequiredActionBarActivity() {
const val ON_REPLY = 1 const val ON_REPLY = 1
const val ON_RESEND = 2 const val ON_RESEND = 2
const val ON_DELETE = 3 const val ON_DELETE = 3
const val ON_COPY = 4
} }
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) { override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
@ -126,6 +127,7 @@ class MessageDetailActivity : PassphraseRequiredActionBarActivity() {
onReply = if (state.canReply) { { setResultAndFinish(ON_REPLY) } } else null, onReply = if (state.canReply) { { setResultAndFinish(ON_REPLY) } } else null,
onResend = state.error?.let { { setResultAndFinish(ON_RESEND) } }, onResend = state.error?.let { { setResultAndFinish(ON_RESEND) } },
onDelete = { setResultAndFinish(ON_DELETE) }, onDelete = { setResultAndFinish(ON_DELETE) },
onCopy = { setResultAndFinish(ON_COPY) },
onClickImage = { viewModel.onClickImage(it) }, onClickImage = { viewModel.onClickImage(it) },
onAttachmentNeedsDownload = viewModel::onAttachmentNeedsDownload, onAttachmentNeedsDownload = viewModel::onAttachmentNeedsDownload,
) )
@ -147,6 +149,7 @@ fun MessageDetails(
onReply: (() -> Unit)? = null, onReply: (() -> Unit)? = null,
onResend: (() -> Unit)? = null, onResend: (() -> Unit)? = null,
onDelete: () -> Unit = {}, onDelete: () -> Unit = {},
onCopy: () -> Unit = {},
onClickImage: (Int) -> Unit = {}, onClickImage: (Int) -> Unit = {},
onAttachmentNeedsDownload: (DatabaseAttachment) -> Unit = { _ -> } onAttachmentNeedsDownload: (DatabaseAttachment) -> Unit = { _ -> }
) { ) {
@ -183,6 +186,7 @@ fun MessageDetails(
onReply, onReply,
onResend, onResend,
onDelete, onDelete,
onCopy
) )
} }
} }
@ -218,7 +222,8 @@ fun CellMetadata(
fun CellButtons( fun CellButtons(
onReply: (() -> Unit)? = null, onReply: (() -> Unit)? = null,
onResend: (() -> Unit)? = null, onResend: (() -> Unit)? = null,
onDelete: () -> Unit = {}, onDelete: () -> Unit,
onCopy: () -> Unit
) { ) {
Cell(modifier = Modifier.padding(horizontal = LocalDimensions.current.spacing)) { Cell(modifier = Modifier.padding(horizontal = LocalDimensions.current.spacing)) {
Column { Column {
@ -230,6 +235,14 @@ fun CellButtons(
) )
Divider() Divider()
} }
LargeItemButton(
R.string.copy,
R.drawable.ic_copy,
onClick = onCopy
)
Divider()
onResend?.let { onResend?.let {
LargeItemButton( LargeItemButton(
R.string.resend, R.string.resend,
@ -238,6 +251,7 @@ fun CellButtons(
) )
Divider() Divider()
} }
LargeItemButton( LargeItemButton(
R.string.delete, R.string.delete,
R.drawable.ic_delete, R.drawable.ic_delete,
@ -319,6 +333,20 @@ fun ExpandButton(modifier: Modifier = Modifier, onClick: () -> Unit) {
} }
} }
@Preview
@Composable
fun PreviewMessageDetailsButtons(
@PreviewParameter(SessionColorsParameterProvider::class) colors: ThemeColors
) {
PreviewTheme(colors) {
CellButtons(
onReply = {},
onResend = {},
onDelete = {},
onCopy = {}
)
}
}
@Preview @Preview
@Composable @Composable

Binary file not shown.

Before

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 457 B

View File

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M16,1L4,1c-1.1,0 -2,0.9 -2,2v14h2L4,3h12L16,1zM15,5l6,6v10c0,1.1 -0.9,2 -2,2L7.99,23C6.89,23 6,22.1 6,21l0.01,-14c0,-1.1 0.89,-2 1.99,-2h7zM14,12h5.5L14,6.5L14,12z"/>
</vector>

View File

@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="50"
android:viewportHeight="50">
<path
android:pathData="M14.295,11.247H18.146V6.687C18.146,4.876 19.089,3.851 20.999,3.851H29.237V13.259C29.237,15.691 30.518,16.956 32.935,16.956H41.606V33.231C41.606,35.059 40.648,36.068 38.738,36.068H35.057V39.918H39.074C43.272,39.918 45.458,37.697 45.458,33.471V17.892C45.458,15.308 44.92,13.658 43.368,12.067L33.565,2.093C32.096,0.587 30.328,0 28.065,0H20.679C16.481,0 14.295,2.218 14.295,6.448V11.247ZM32.452,12.773V5.46L40.604,13.741H33.404C32.73,13.741 32.452,13.447 32.452,12.773Z"
android:fillColor="#000000"/>
<path
android:pathData="M4.571,43.552C4.571,47.798 6.744,50 10.955,50H29.353C33.563,50 35.737,47.779 35.737,43.552V28.424C35.737,25.791 35.403,24.559 33.756,22.88L23.103,12.062C21.52,10.448 20.172,10.082 17.805,10.082H10.955C6.76,10.082 4.571,12.283 4.571,16.529V43.552ZM8.422,43.313V16.753C8.422,14.957 9.365,13.932 11.278,13.932H17.318V24.693C17.318,27.509 18.711,28.882 21.491,28.882H31.882V43.313C31.882,45.14 30.923,46.149 29.03,46.149H11.262C9.365,46.149 8.422,45.14 8.422,43.313ZM21.872,25.486C21.061,25.486 20.715,25.143 20.715,24.328V14.688L31.347,25.486H21.872Z"
android:fillColor="#000000"/>
</vector>

View File

@ -20,15 +20,15 @@
<TextView <TextView
android:id="@+id/copyConversationId" android:id="@+id/copyConversationId"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:drawableStart="@drawable/ic_content_copy_white_24dp" android:drawableStart="@drawable/ic_copy"
android:drawableTint="?attr/colorControlNormal" android:drawableTint="?attr/colorControlNormal"
android:visibility="gone" android:visibility="visible"
android:text="@string/accountIDCopy" /> android:text="@string/accountIDCopy" />
<TextView <TextView
android:id="@+id/copyCommunityUrl" android:id="@+id/copyCommunityUrl"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:drawableStart="@drawable/ic_content_copy_white_24dp" android:drawableStart="@drawable/ic_copy"
android:drawableTint="?attr/colorControlNormal" android:drawableTint="?attr/colorControlNormal"
android:visibility="gone" android:visibility="gone"
android:text="@string/communityUrlCopy" /> android:text="@string/communityUrlCopy" />

View File

@ -5,6 +5,6 @@
<item <item
android:title="@string/accountIDCopy" android:title="@string/accountIDCopy"
android:id="@+id/menu_copy_account_id" android:id="@+id/menu_copy_account_id"
android:icon="@drawable/ic_content_copy_white_24dp" android:icon="@drawable/ic_copy"
android:contentDescription="@string/AccessibilityId_accountIdCopy" /> android:contentDescription="@string/AccessibilityId_accountIdCopy" />
</menu> </menu>

View File

@ -42,7 +42,7 @@
<item name="menu_save_icon">@drawable/ic_baseline_save_24</item> <item name="menu_save_icon">@drawable/ic_baseline_save_24</item>
<item name="menu_photo_library_icon">@drawable/ic_baseline_photo_library_24</item> <item name="menu_photo_library_icon">@drawable/ic_baseline_photo_library_24</item>
<item name="menu_delete_icon">@drawable/ic_baseline_delete_24</item> <item name="menu_delete_icon">@drawable/ic_baseline_delete_24</item>
<item name="menu_copy_icon">@drawable/ic_baseline_file_copy_24</item> <item name="menu_copy_icon">@drawable/ic_copy</item>
<item name="menu_reply_icon">@drawable/ic_baseline_reply_24</item> <item name="menu_reply_icon">@drawable/ic_baseline_reply_24</item>
<item name="menu_select_icon">@drawable/ic_baseline_check_circle_outline_24</item> <item name="menu_select_icon">@drawable/ic_baseline_check_circle_outline_24</item>
<item name="menu_selectall_icon">@drawable/ic_baseline_select_all_24</item> <item name="menu_selectall_icon">@drawable/ic_baseline_select_all_24</item>