From 515197367e28eafefc3009ccb652abc83dae00c9 Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 27 Aug 2026 12:03:56 -0400 Subject: [PATCH] Update various icons. --- .../components/emoji/EmojiToggle.java | 8 ++-- .../conversation/group/GroupSettingsScreen.kt | 12 +++--- .../preferences/ButtonStripPreference.kt | 7 +-- .../settings/conversation/shared/CallBar.kt | 43 ++++++++++--------- .../shared/ConversationSettingsRows.kt | 7 +-- .../recipients/ui/RecipientPicker.kt | 2 +- .../drawable/ic_more_vert_conversation_24.xml | 9 ---- .../res/drawable/ic_update_group_add_16.xml | 14 ------ app/src/main/res/drawable/symbol_block_24.xml | 2 +- app/src/main/res/drawable/symbol_gif_24.xml | 18 ++++++++ .../res/layout/conversation_input_panel.xml | 4 +- .../conversation_settings_button_strip.xml | 8 ++-- .../res/layout/microphone_recorder_view.xml | 4 +- .../menu/conversation_callable_groupv2.xml | 2 +- .../res/menu/conversation_callable_secure.xml | 4 +- app/src/main/res/values/styles.xml | 6 +-- .../signal/core/ui/compose/DropdownMenus.kt | 20 ++++++++- .../org/signal/core/ui/compose/SignalIcons.kt | 9 ++++ .../src/main/res/drawable/add_to_story_24.xml | 0 .../main/res/drawable/ic_chat_message_24.xml | 0 .../res/drawable/ic_phone_right_unlock_24.xml | 9 ++++ .../src/main/res/drawable/symbol_bell_24.xml | 9 ++++ .../res/drawable/symbol_bell_slash_24.xml | 13 ++++++ .../main/res/drawable/symbol_calendar_one.xml | 12 ++++++ .../res/drawable/symbol_calendar_week.xml | 18 ++++++++ .../src/main/res/drawable/symbol_group_24.xml | 18 ++++++++ .../src/main/res/drawable/symbol_lock_24.xml | 4 +- .../src/main/res/drawable/symbol_video_24.xml | 9 ++++ 28 files changed, 192 insertions(+), 79 deletions(-) delete mode 100644 app/src/main/res/drawable/ic_more_vert_conversation_24.xml delete mode 100644 app/src/main/res/drawable/ic_update_group_add_16.xml create mode 100644 app/src/main/res/drawable/symbol_gif_24.xml rename {app => core/ui}/src/main/res/drawable/add_to_story_24.xml (100%) rename {app => core/ui}/src/main/res/drawable/ic_chat_message_24.xml (100%) create mode 100644 core/ui/src/main/res/drawable/ic_phone_right_unlock_24.xml create mode 100644 core/ui/src/main/res/drawable/symbol_bell_24.xml create mode 100644 core/ui/src/main/res/drawable/symbol_bell_slash_24.xml create mode 100644 core/ui/src/main/res/drawable/symbol_calendar_one.xml create mode 100644 core/ui/src/main/res/drawable/symbol_calendar_week.xml create mode 100644 core/ui/src/main/res/drawable/symbol_group_24.xml create mode 100644 core/ui/src/main/res/drawable/symbol_video_24.xml diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiToggle.java b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiToggle.java index 5e84a0d7d9..d7bf047296 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiToggle.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/emoji/EmojiToggle.java @@ -46,10 +46,10 @@ public class EmojiToggle extends AppCompatImageButton implements MediaKeyboard.M } private void initialize() { - this.emojiToggle = ContextUtil.requireDrawable(getContext(), R.drawable.ic_emoji); - this.stickerToggle = ContextUtil.requireDrawable(getContext(), R.drawable.ic_sticker_24); - this.gifToggle = ContextUtil.requireDrawable(getContext(), R.drawable.ic_gif_24); - this.imeToggle = ContextUtil.requireDrawable(getContext(), R.drawable.ic_keyboard_24); + this.emojiToggle = ContextUtil.requireDrawable(getContext(), R.drawable.symbol_emoji_24); + this.stickerToggle = ContextUtil.requireDrawable(getContext(), org.signal.core.ui.R.drawable.symbol_sticker_24); + this.gifToggle = ContextUtil.requireDrawable(getContext(), R.drawable.symbol_gif_24); + this.imeToggle = ContextUtil.requireDrawable(getContext(), R.drawable.symbol_keyboard_24); this.mediaToggle = emojiToggle; setToMedia(); diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/group/GroupSettingsScreen.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/group/GroupSettingsScreen.kt index de7bfd89c3..ea340d537c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/group/GroupSettingsScreen.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/group/GroupSettingsScreen.kt @@ -36,6 +36,7 @@ import org.signal.core.ui.compose.Dialogs import org.signal.core.ui.compose.Dividers import org.signal.core.ui.compose.Previews import org.signal.core.ui.compose.Rows +import org.signal.core.ui.compose.SignalIcons import org.signal.core.ui.compose.Texts import org.signal.emoji.EmojiText import org.thoughtcrime.securesms.R @@ -236,7 +237,7 @@ private fun LazyListScope.membershipSection( item { LargeIconRow( text = stringResource(R.string.ConversationSettingsFragment__add_members), - icon = R.drawable.ic_plus_24, + icon = CoreUiR.drawable.symbol_plus_24, onClick = { onEvent(GroupSettingsEvent.AddMembersClicked) } ) } @@ -263,7 +264,7 @@ private fun LazyListScope.membershipSection( item { LargeIconRow( text = stringResource(R.string.ConversationSettingsFragment__see_all), - icon = R.drawable.ic_chevron_down_icon_20, + icon = R.drawable.symbol_chevron_down_24, onClick = { onEvent(GroupSettingsEvent.RevealAllMembersClicked) } ) } @@ -282,7 +283,7 @@ private fun LazyListScope.managementSection( Rows.TextRow( text = stringResource(R.string.ConversationSettingsFragment__group_link), label = stringResource(if (state.groupLinkEnabled) R.string.preferences_on else R.string.preferences_off), - icon = painterResource(R.drawable.ic_link_24), + icon = SignalIcons.Link.painter, enabled = state.isActive && !state.isDeprecatedOrUnregistered, onClick = { onEvent(GroupSettingsEvent.GroupLinkClicked) } ) @@ -301,8 +302,7 @@ private fun LazyListScope.managementSection( item { Rows.TextRow( text = stringResource(R.string.ConversationSettingsFragment__requests_and_invites), - icon = painterResource(R.drawable.ic_update_group_add_16), - iconModifier = Modifier.size(24.dp), + icon = SignalIcons.Group.painter, enabled = state.isActive && !state.isDeprecatedOrUnregistered, onClick = { onEvent(GroupSettingsEvent.RequestsAndInvitesClicked) } ) @@ -312,7 +312,7 @@ private fun LazyListScope.managementSection( item { Rows.TextRow( text = stringResource(R.string.ConversationSettingsFragment__permissions), - icon = painterResource(R.drawable.ic_lock_24), + icon = SignalIcons.Lock.painter, enabled = state.isActive && !state.isDeprecatedOrUnregistered, onClick = { onEvent(GroupSettingsEvent.PermissionsClicked) } ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/preferences/ButtonStripPreference.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/preferences/ButtonStripPreference.kt index 208ade467a..3266607e5b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/preferences/ButtonStripPreference.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/preferences/ButtonStripPreference.kt @@ -12,6 +12,7 @@ import org.thoughtcrime.securesms.util.adapter.mapping.LayoutFactory import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter import org.thoughtcrime.securesms.util.adapter.mapping.MappingViewHolder import org.thoughtcrime.securesms.util.visible +import org.signal.core.ui.R as CoreUiR /** * Renders a configurable strip of buttons @@ -69,17 +70,17 @@ object ButtonStripPreference { if (model.state.isAudioSecure) { audioLabel.setText(R.string.ConversationSettingsFragment__audio) - audioCall.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.ic_phone_right_24)) + audioCall.setImageDrawable(AppCompatResources.getDrawable(context, CoreUiR.drawable.symbol_phone_24)) } else { audioLabel.setText(R.string.ConversationSettingsFragment__call) audioCall.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.ic_phone_right_unlock_primary_accent_24)) } if (model.state.isMuted) { - mute.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.ic_bell_disabled_24)) + mute.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.symbol_bell_slash_24)) muteLabel.setText(R.string.ConversationSettingsFragment__muted) } else { - mute.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.ic_bell_24)) + mute.setImageDrawable(AppCompatResources.getDrawable(context, R.drawable.symbol_bell_24)) muteLabel.setText(R.string.ConversationSettingsFragment__mute) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/CallBar.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/CallBar.kt index b4f959c659..420c6a217d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/CallBar.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/CallBar.kt @@ -5,7 +5,6 @@ package org.thoughtcrime.securesms.components.settings.conversation.shared -import androidx.annotation.DrawableRes import androidx.annotation.StringRes import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -17,11 +16,13 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import org.signal.core.ui.compose.Buttons import org.signal.core.ui.compose.DayNightPreviews import org.signal.core.ui.compose.DropdownMenus import org.signal.core.ui.compose.Previews +import org.signal.core.ui.compose.SignalIcons import org.thoughtcrime.securesms.R import kotlin.time.Duration.Companion.days import kotlin.time.Duration.Companion.hours @@ -72,8 +73,8 @@ fun CallBar( if (state.isAddToStoryAvailable) { Buttons.ActionButton( onClick = onAddToStoryClick, - iconResId = R.drawable.add_to_story_24, - labelResId = R.string.ConversationSettingsFragment__story, + imageVector = SignalIcons.AddToStory.imageVector, + label = stringResource(R.string.ConversationSettingsFragment__story), enabled = enabled ) } @@ -81,8 +82,8 @@ fun CallBar( if (state.isMessageAvailable) { Buttons.ActionButton( onClick = onMessageClick, - iconResId = R.drawable.ic_chat_message_24, - labelResId = R.string.ConversationSettingsFragment__message, + imageVector = SignalIcons.ChatMessage.imageVector, + label = stringResource(R.string.ConversationSettingsFragment__message), enabled = enabled ) } @@ -90,8 +91,8 @@ fun CallBar( if (state.isVideoAvailable) { Buttons.ActionButton( onClick = onVideoCallClick, - iconResId = R.drawable.ic_video_call_24, - labelResId = R.string.ConversationSettingsFragment__video, + imageVector = SignalIcons.Video.imageVector, + label = stringResource(R.string.ConversationSettingsFragment__video), enabled = enabled ) } @@ -99,8 +100,8 @@ fun CallBar( if (state.isAudioAvailable) { Buttons.ActionButton( onClick = onAudioCallClick, - iconResId = if (state.isAudioSecure) R.drawable.ic_phone_right_24 else R.drawable.ic_phone_right_unlock_primary_accent_24, - labelResId = if (state.isAudioSecure) R.string.ConversationSettingsFragment__audio else R.string.ConversationSettingsFragment__call, + imageVector = if (state.isAudioSecure) SignalIcons.Phone.imageVector else SignalIcons.PhoneUnlock.imageVector, + label = stringResource(if (state.isAudioSecure) R.string.ConversationSettingsFragment__audio else R.string.ConversationSettingsFragment__call), enabled = enabled ) } @@ -120,8 +121,8 @@ fun CallBar( if (state.isSearchAvailable) { Buttons.ActionButton( onClick = onSearchClick, - iconResId = R.drawable.ic_search_24, - labelResId = R.string.ConversationSettingsFragment__search, + imageVector = SignalIcons.Search.imageVector, + label = stringResource(R.string.ConversationSettingsFragment__search), enabled = enabled ) } @@ -160,8 +161,8 @@ private fun MuteButton( Box(modifier = modifier) { Buttons.ActionButton( onClick = onClick, - iconResId = if (isMuted) R.drawable.ic_bell_disabled_24 else R.drawable.ic_bell_24, - labelResId = if (isMuted) R.string.ConversationSettingsFragment__muted else R.string.ConversationSettingsFragment__mute, + imageVector = if (isMuted) SignalIcons.BellSlash.imageVector else SignalIcons.Bell.imageVector, + label = stringResource(if (isMuted) R.string.ConversationSettingsFragment__muted else R.string.ConversationSettingsFragment__mute), enabled = enabled ) @@ -169,7 +170,7 @@ private fun MuteButton( MUTE_DURATIONS.forEach { duration -> DropdownMenus.ItemWithIcon( menuController = menuController, - drawableResId = duration.iconResId, + imageVector = duration.icon.imageVector, stringResId = duration.labelResId, onClick = { onDurationSelected(System.currentTimeMillis() + duration.durationMillis) } ) @@ -177,14 +178,14 @@ private fun MuteButton( DropdownMenus.ItemWithIcon( menuController = menuController, - drawableResId = R.drawable.symbol_calendar_24, + imageVector = SignalIcons.Calendar.imageVector, stringResId = R.string.MuteDialog__mute_until, onClick = onCustomTimeClick ) DropdownMenus.ItemWithIcon( menuController = menuController, - drawableResId = R.drawable.symbol_bell_slash_24, + imageVector = SignalIcons.BellSlash.imageVector, stringResId = R.string.arrays__always, onClick = { onDurationSelected(Long.MAX_VALUE) } ) @@ -314,14 +315,14 @@ private fun CallBarDisabledPreview() { } private data class MuteDuration( - @DrawableRes val iconResId: Int, + val icon: SignalIcons, @StringRes val labelResId: Int, val durationMillis: Long ) private val MUTE_DURATIONS = listOf( - MuteDuration(R.drawable.ic_daytime_24, R.string.arrays__mute_for_one_hour, 1.hours.inWholeMilliseconds), - MuteDuration(R.drawable.ic_nighttime_26, R.string.arrays__mute_for_eight_hours, 8.hours.inWholeMilliseconds), - MuteDuration(R.drawable.symbol_calendar_one, R.string.arrays__mute_for_one_day, 1.days.inWholeMilliseconds), - MuteDuration(R.drawable.symbol_calendar_week, R.string.arrays__mute_for_seven_days, 7.days.inWholeMilliseconds) + MuteDuration(SignalIcons.Daytime, R.string.arrays__mute_for_one_hour, 1.hours.inWholeMilliseconds), + MuteDuration(SignalIcons.Nighttime, R.string.arrays__mute_for_eight_hours, 8.hours.inWholeMilliseconds), + MuteDuration(SignalIcons.CalendarOne, R.string.arrays__mute_for_one_day, 1.days.inWholeMilliseconds), + MuteDuration(SignalIcons.CalendarWeek, R.string.arrays__mute_for_seven_days, 7.days.inWholeMilliseconds) ) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationSettingsRows.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationSettingsRows.kt index d6f8c21973..b62abd6ae6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationSettingsRows.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/conversation/shared/ConversationSettingsRows.kt @@ -30,6 +30,7 @@ import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.avatar.AvatarImage import org.thoughtcrime.securesms.profiles.ProfileName import org.thoughtcrime.securesms.recipients.Recipient +import org.signal.core.ui.R as CoreUiR private val LARGE_ICON_SIZE = 40.dp @@ -111,9 +112,9 @@ fun RecipientRow( private fun LargeIconRowPreview() { Previews.Preview { Column { - LargeIconRow(text = "Add members", icon = R.drawable.ic_plus_24, onClick = {}) - LargeIconRow(text = "See all", icon = R.drawable.ic_chevron_down_icon_20, onClick = {}) - LargeIconRow(text = "Add to a group", icon = R.drawable.ic_plus_24, enabled = false, onClick = {}) + LargeIconRow(text = "Add members", icon = CoreUiR.drawable.symbol_plus_24, onClick = {}) + LargeIconRow(text = "See all", icon = R.drawable.symbol_chevron_down_24, onClick = {}) + LargeIconRow(text = "Add to a group", icon = CoreUiR.drawable.symbol_plus_24, enabled = false, onClick = {}) } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/RecipientPicker.kt b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/RecipientPicker.kt index 6ad102c399..cff02b51b8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/RecipientPicker.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/RecipientPicker.kt @@ -318,7 +318,7 @@ private suspend fun showItemContextMenu( val actions = buildList { val messageItem = ActionItem( - iconRes = R.drawable.ic_chat_message_24, + iconRes = CoreUiR.drawable.ic_chat_message_24, title = context.getString(R.string.NewConversationActivity__message), tintRes = CoreUiR.color.signal_colorOnSurface, action = { callbacks.onMessage(recipient.id) } diff --git a/app/src/main/res/drawable/ic_more_vert_conversation_24.xml b/app/src/main/res/drawable/ic_more_vert_conversation_24.xml deleted file mode 100644 index 633b8cf1e5..0000000000 --- a/app/src/main/res/drawable/ic_more_vert_conversation_24.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_update_group_add_16.xml b/app/src/main/res/drawable/ic_update_group_add_16.xml deleted file mode 100644 index a52e8ce289..0000000000 --- a/app/src/main/res/drawable/ic_update_group_add_16.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/app/src/main/res/drawable/symbol_block_24.xml b/app/src/main/res/drawable/symbol_block_24.xml index 17dc5c451f..1a431a7afa 100644 --- a/app/src/main/res/drawable/symbol_block_24.xml +++ b/app/src/main/res/drawable/symbol_block_24.xml @@ -5,5 +5,5 @@ android:viewportHeight="24"> + android:pathData="M12 1.63C6.27 1.63 1.62 6.26 1.62 12c0 5.73 4.65 10.38 10.38 10.38S22.38 17.73 22.38 12 17.73 1.62 12 1.62ZM3.37 12c0-4.76 3.87-8.63 8.63-8.63 2.07 0 3.96 0.73 5.45 1.94L5.3 17.45c-1.2-1.49-1.93-3.38-1.93-5.45Zm3.18 6.69L18.7 6.55c1.2 1.49 1.93 3.38 1.93 5.45 0 4.76-3.86 8.63-8.62 8.63-2.07 0-3.96-0.73-5.45-1.94Z"/> diff --git a/app/src/main/res/drawable/symbol_gif_24.xml b/app/src/main/res/drawable/symbol_gif_24.xml new file mode 100644 index 0000000000..84c3186b55 --- /dev/null +++ b/app/src/main/res/drawable/symbol_gif_24.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/app/src/main/res/layout/conversation_input_panel.xml b/app/src/main/res/layout/conversation_input_panel.xml index e108b3f317..3dd2e0a307 100644 --- a/app/src/main/res/layout/conversation_input_panel.xml +++ b/app/src/main/res/layout/conversation_input_panel.xml @@ -191,7 +191,7 @@ android:contentDescription="@string/conversation_activity__quick_attachment_drawer_toggle_camera_description" android:foreground="?selectableItemBackgroundBorderless" android:scaleType="fitCenter" - app:srcCompat="@drawable/ic_camera_24" + app:srcCompat="@drawable/symbol_camera_24" app:tint="@color/signal_colorOnSurfaceVariant" /> diff --git a/app/src/main/res/layout/conversation_settings_button_strip.xml b/app/src/main/res/layout/conversation_settings_button_strip.xml index 32105573df..537c48c7c4 100644 --- a/app/src/main/res/layout/conversation_settings_button_strip.xml +++ b/app/src/main/res/layout/conversation_settings_button_strip.xml @@ -83,7 +83,7 @@ android:id="@+id/start_video" style="@style/Signal.Widget.ImageView.ActionButton" android:contentDescription="@string/ConversationSettingsFragment__start_video_call" - app:srcCompat="@drawable/ic_video_call_24" /> + app:srcCompat="@drawable/symbol_video_24" /> + app:srcCompat="@drawable/symbol_phone_24" /> + app:srcCompat="@drawable/symbol_bell_24" /> + app:srcCompat="@drawable/symbol_search_24" /> diff --git a/app/src/main/res/menu/conversation_callable_groupv2.xml b/app/src/main/res/menu/conversation_callable_groupv2.xml index d34cfbba38..971986b272 100644 --- a/app/src/main/res/menu/conversation_callable_groupv2.xml +++ b/app/src/main/res/menu/conversation_callable_groupv2.xml @@ -4,7 +4,7 @@ diff --git a/app/src/main/res/menu/conversation_callable_secure.xml b/app/src/main/res/menu/conversation_callable_secure.xml index 283d106947..7d26dfe55e 100644 --- a/app/src/main/res/menu/conversation_callable_secure.xml +++ b/app/src/main/res/menu/conversation_callable_secure.xml @@ -4,13 +4,13 @@ diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 542d3d2f32..d61ec3db56 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -268,7 +268,7 @@ @@ -280,8 +280,8 @@