Move theme colors to core-ui.

This commit is contained in:
Greyson Parrelli
2026-01-29 16:44:11 -05:00
parent d0d32c8f33
commit 5c50372021
91 changed files with 268 additions and 211 deletions

View File

@@ -369,9 +369,9 @@ public class ConversationAdapter
}
if (hasWallpaper && ThemeUtil.isDarkTheme(context)) {
viewHolder.setTextColor(ContextCompat.getColor(context, R.color.signal_colorNeutralInverse));
viewHolder.setTextColor(ContextCompat.getColor(context, org.signal.core.ui.R.color.signal_colorNeutralInverse));
} else {
viewHolder.setTextColor(ContextCompat.getColor(context, R.color.signal_colorOnSurfaceVariant));
viewHolder.setTextColor(ContextCompat.getColor(context, org.signal.core.ui.R.color.signal_colorOnSurfaceVariant));
}
}

View File

@@ -137,7 +137,7 @@ public class ConversationHeaderView extends ConstraintLayout {
if (recipient.isIndividual() && !recipient.isSelf()) {
boolean isLtr = ViewUtil.isLtr(this);
CharSequence chevron = SignalSymbols.getSpannedString(getContext(), SignalSymbols.Weight.BOLD, isLtr ? SignalSymbols.Glyph.CHEVRON_RIGHT : SignalSymbols.Glyph.CHEVRON_LEFT, R.color.signal_colorOutline);
CharSequence chevron = SignalSymbols.getSpannedString(getContext(), SignalSymbols.Weight.BOLD, isLtr ? SignalSymbols.Glyph.CHEVRON_RIGHT : SignalSymbols.Glyph.CHEVRON_LEFT, org.signal.core.ui.R.color.signal_colorOutline);
if (isLtr) {
title.append(" ");
@@ -181,7 +181,7 @@ public class ConversationHeaderView extends ConstraintLayout {
subtitle,
substring,
listener -> onClick.run(),
ContextCompat.getColor(getContext(), R.color.signal_colorOnSurface),
ContextCompat.getColor(getContext(), org.signal.core.ui.R.color.signal_colorOnSurface),
true
);
binding.messageRequestSubtitle.setText(prependIcon(builder, iconRes));
@@ -334,7 +334,7 @@ public class ConversationHeaderView extends ConstraintLayout {
Preconditions.checkNotNull(drawable);
int width = useIntrinsicWidth ? drawable.getIntrinsicWidth() : (int) DimensionUnit.SP.toPixels(16);
drawable.setBounds(0, 0, width, (int) DimensionUnit.SP.toPixels(16));
drawable.setColorFilter(ContextCompat.getColor(getContext(), R.color.signal_colorOnSurface), PorterDuff.Mode.SRC_ATOP);
drawable.setColorFilter(ContextCompat.getColor(getContext(), org.signal.core.ui.R.color.signal_colorOnSurface), PorterDuff.Mode.SRC_ATOP);
return new SpannableStringBuilder()
.append(SpanUtil.buildCenteredImageSpan(drawable))

View File

@@ -947,7 +947,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
}
} else {
audioViewStub.get().setTint(getContext().getResources().getColor(R.color.conversation_item_outgoing_audio_foreground_tint));
audioViewStub.get().setProgressAndPlayBackgroundTint(getContext().getResources().getColor(R.color.signal_colorTransparent2));
audioViewStub.get().setProgressAndPlayBackgroundTint(getContext().getResources().getColor(org.signal.core.ui.R.color.signal_colorTransparent2));
}
}
}
@@ -1235,8 +1235,8 @@ public final class ConversationItem extends RelativeLayout implements BindableCo
CallLinks.CallLinkParseResult callLinkParseResult = CallLinks.isCallLink(linkPreview.getUrl()) ? CallLinks.parseUrl(linkPreview.getUrl()) : null;
if (callLinkParseResult != null) {
joinCallLinkStub.setVisibility(View.VISIBLE);
joinCallLinkStub.get().setTextColor(ContextCompat.getColor(context, messageRecord.isOutgoing() ? R.color.signal_light_colorOnPrimary : R.color.signal_colorOnPrimaryContainer));
joinCallLinkStub.get().setBackgroundColor(ContextCompat.getColor(context, messageRecord.isOutgoing() ? R.color.signal_light_colorTransparent2 : R.color.signal_colorOnPrimary));
joinCallLinkStub.get().setTextColor(ContextCompat.getColor(context, messageRecord.isOutgoing() ? org.signal.core.ui.R.color.signal_light_colorOnPrimary : org.signal.core.ui.R.color.signal_colorOnPrimaryContainer));
joinCallLinkStub.get().setBackgroundColor(ContextCompat.getColor(context, messageRecord.isOutgoing() ? org.signal.core.ui.R.color.signal_light_colorTransparent2 : org.signal.core.ui.R.color.signal_colorOnPrimary));
joinCallLinkStub.get().setOnClickListener(v -> {
if (eventListener != null) {
eventListener.onJoinCallLink(callLinkParseResult.getRootKey(), callLinkParseResult.getEpoch());

View File

@@ -796,8 +796,8 @@ public final class ConversationUpdateItem extends FrameLayout
private void presentActionButton(boolean hasWallpaper, boolean isBoostRequest) {
if (isBoostRequest) {
actionButton.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(getContext(), R.color.signal_colorSecondaryContainer)));
actionButton.setTextColor(ColorStateList.valueOf(ContextCompat.getColor(getContext(), R.color.signal_colorOnSecondaryContainer)));
actionButton.setBackgroundTintList(ColorStateList.valueOf(ContextCompat.getColor(getContext(), org.signal.core.ui.R.color.signal_colorSecondaryContainer)));
actionButton.setTextColor(ColorStateList.valueOf(ContextCompat.getColor(getContext(), org.signal.core.ui.R.color.signal_colorOnSecondaryContainer)));
} else if (hasWallpaper) {
actionButton.setBackgroundTintList(AppCompatResources.getColorStateList(getContext(), R.color.conversation_update_item_button_background_wallpaper));
actionButton.setTextColor(AppCompatResources.getColorStateList(getContext(), R.color.conversation_update_item_button_text_color_wallpaper));

View File

@@ -3,8 +3,8 @@ package org.thoughtcrime.securesms.conversation.colors
import android.content.Context
import androidx.annotation.ColorInt
import androidx.core.content.ContextCompat
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.avatar.Avatars
import org.signal.core.ui.R as CoreUiR
class AvatarColorPair private constructor(
@ColorInt val foregroundColor: Int,
@@ -15,12 +15,12 @@ class AvatarColorPair private constructor(
fun create(context: Context, avatarColor: AvatarColor): AvatarColorPair {
return when (avatarColor) {
AvatarColor.UNKNOWN -> AvatarColorPair(
foregroundColor = ContextCompat.getColor(context, R.color.signal_colorOnSurface),
backgroundColor = ContextCompat.getColor(context, R.color.signal_colorSurfaceVariant)
foregroundColor = ContextCompat.getColor(context, CoreUiR.color.signal_colorOnSurface),
backgroundColor = ContextCompat.getColor(context, CoreUiR.color.signal_colorSurfaceVariant)
)
AvatarColor.ON_SURFACE_VARIANT -> AvatarColorPair(
foregroundColor = ContextCompat.getColor(context, R.color.signal_colorOnSurfaceVariant),
backgroundColor = ContextCompat.getColor(context, R.color.signal_colorSurfaceVariant)
foregroundColor = ContextCompat.getColor(context, CoreUiR.color.signal_colorOnSurfaceVariant),
backgroundColor = ContextCompat.getColor(context, CoreUiR.color.signal_colorSurfaceVariant)
)
else -> AvatarColorPair(
foregroundColor = Avatars.getForegroundColor(avatarColor).colorInt,

View File

@@ -7,6 +7,7 @@ import org.signal.core.models.ServiceId
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId
import org.signal.core.ui.R as CoreUiR
/**
* Helper class for all things ChatColors.
@@ -42,27 +43,27 @@ class Colorizer {
@ColorInt
fun getIncomingBodyTextColor(context: Context, hasWallpaper: Boolean): Int {
return if (hasWallpaper) {
ContextCompat.getColor(context, R.color.signal_colorNeutralInverse)
ContextCompat.getColor(context, CoreUiR.color.signal_colorNeutralInverse)
} else {
ContextCompat.getColor(context, R.color.signal_colorOnSurface)
ContextCompat.getColor(context, CoreUiR.color.signal_colorOnSurface)
}
}
@ColorInt
fun getIncomingFooterTextColor(context: Context, hasWallpaper: Boolean): Int {
return if (hasWallpaper) {
ContextCompat.getColor(context, R.color.signal_colorNeutralVariantInverse)
ContextCompat.getColor(context, CoreUiR.color.signal_colorNeutralVariantInverse)
} else {
ContextCompat.getColor(context, R.color.signal_colorOnSurfaceVariant)
ContextCompat.getColor(context, CoreUiR.color.signal_colorOnSurfaceVariant)
}
}
@ColorInt
fun getIncomingFooterIconColor(context: Context, hasWallpaper: Boolean): Int {
return if (hasWallpaper) {
ContextCompat.getColor(context, R.color.signal_colorNeutralVariantInverse)
ContextCompat.getColor(context, CoreUiR.color.signal_colorNeutralVariantInverse)
} else {
ContextCompat.getColor(context, R.color.signal_colorOnSurfaceVariant)
ContextCompat.getColor(context, CoreUiR.color.signal_colorOnSurfaceVariant)
}
}

View File

@@ -16,6 +16,7 @@ import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.FragmentWrapperActivity
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardFragment.Companion.RESULT_SELECTION
import org.signal.core.ui.R as CoreUiR
open class MultiselectForwardActivity : FragmentWrapperActivity(), MultiselectForwardFragment.Callback, SearchConfigurationProvider {
@@ -61,7 +62,7 @@ open class MultiselectForwardActivity : FragmentWrapperActivity(), MultiselectFo
}
override fun getDialogBackgroundColor(): Int {
return ContextCompat.getColor(this, R.color.signal_colorBackground)
return ContextCompat.getColor(this, CoreUiR.color.signal_colorBackground)
}
class SelectionContract : ActivityResultContract<MultiselectForwardFragmentArgs, List<ContactSearchKey.RecipientSearchKey>>() {

View File

@@ -14,6 +14,7 @@ import androidx.core.view.marginLeft
import androidx.recyclerview.widget.RecyclerView
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.util.ViewUtil
import org.signal.core.ui.R as CoreUiR
/**
* Serves as the separator between the original message and other messages. Used in [MessageQuotesBottomSheet] and [EditMessageHistoryDialog]
@@ -29,7 +30,7 @@ class OriginalMessageSeparatorDecoration(
private val dividerRect = Rect()
private val dividerPaint: Paint = Paint().apply {
style = Paint.Style.FILL
color = ContextCompat.getColor(context, R.color.signal_colorSurfaceVariant)
color = ContextCompat.getColor(context, CoreUiR.color.signal_colorSurfaceVariant)
}
private var cachedHeader: View? = null

View File

@@ -1549,6 +1549,12 @@ class ConversationFragment :
private fun updateNavigationIconForNormal(isFullScreenPane: Boolean) {
if (!resources.getWindowSizeClass().isSplitPane() || isFullScreenPane) {
binding.toolbar.setNavigationIcon(CoreUiR.drawable.symbol_arrow_start_24)
binding.toolbar.navigationIcon?.setTint(
ContextCompat.getColor(
requireContext(),
if (viewModel.wallpaperSnapshot != null) CoreUiR.color.signal_colorNeutralInverse else CoreUiR.color.signal_colorOnSurface
)
)
binding.toolbar.setNavigationContentDescription(R.string.ConversationFragment__content_description_back_button)
binding.toolbar.setNavigationOnClickListener {
binding.root.hideKeyboard(composeText)
@@ -1631,14 +1637,15 @@ class ConversationFragment :
val toolbarTint = ContextCompat.getColor(
requireContext(),
if (chatWallpaper != null) {
R.color.signal_colorNeutralInverse
CoreUiR.color.signal_colorNeutralInverse
} else {
R.color.signal_colorOnSurface
CoreUiR.color.signal_colorOnSurface
}
)
binding.toolbar.setTitleTextColor(toolbarTint)
binding.toolbar.setActionItemTint(toolbarTint)
binding.toolbar.navigationIcon?.setTint(toolbarTint)
val wallpaperEnabled = chatWallpaper != null
binding.conversationWallpaper.visible = wallpaperEnabled
@@ -1660,7 +1667,7 @@ class ConversationFragment :
binding.scrollDateHeader.setTextColor(
ContextCompat.getColor(
requireContext(),
if (wallpaperEnabled) R.color.sticky_header_foreground_wallpaper else R.color.signal_colorOnSurfaceVariant
if (wallpaperEnabled) R.color.sticky_header_foreground_wallpaper else CoreUiR.color.signal_colorOnSurfaceVariant
)
)
@@ -1673,7 +1680,7 @@ class ConversationFragment :
val navColor = if (chatWallpaper != null) {
R.color.conversation_navigation_wallpaper
} else {
R.color.signal_colorBackground
CoreUiR.color.signal_colorBackground
}
binding.navBar.setBackgroundColor(ContextCompat.getColor(requireContext(), navColor))
@@ -3854,9 +3861,9 @@ class ConversationFragment :
val toolbarTextAndIconColor = ContextCompat.getColor(
requireContext(),
if (viewModel.wallpaperSnapshot != null) {
R.color.signal_colorNeutralInverse
CoreUiR.color.signal_colorNeutralInverse
} else {
R.color.signal_colorOnSurface
CoreUiR.color.signal_colorOnSurface
}
)

View File

@@ -24,6 +24,7 @@ import org.thoughtcrime.securesms.util.layoutIn
import org.thoughtcrime.securesms.util.toLocalDate
import java.util.Locale
import kotlin.math.max
import org.signal.core.ui.R as CoreUiR
private typealias ConversationElement = MappingModel<*>
@@ -308,10 +309,10 @@ class ConversationItemDecorations(hasWallpaper: Boolean = false, private val sch
fun updateForWallpaper() {
if (hasWallpaper) {
date.setBackgroundResource(R.drawable.wallpaper_bubble_background_18)
date.setTextColor(ContextCompat.getColor(itemView.context, R.color.signal_colorNeutralInverse))
date.setTextColor(ContextCompat.getColor(itemView.context, CoreUiR.color.signal_colorNeutralInverse))
} else {
date.background = null
date.setTextColor(ContextCompat.getColor(itemView.context, R.color.signal_colorOnSurfaceVariant))
date.setTextColor(ContextCompat.getColor(itemView.context, CoreUiR.color.signal_colorOnSurfaceVariant))
}
}
}

View File

@@ -7,6 +7,7 @@ import androidx.lifecycle.LifecycleOwner
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.util.Material3OnScrollHelper
import org.thoughtcrime.securesms.wallpaper.ChatWallpaper
import org.signal.core.ui.R as CoreUiR
/**
* Scroll helper to manage the color state of the top bar and status bar.
@@ -30,11 +31,11 @@ class ConversationToolbarOnScrollHelper(
@ColorRes
private fun getActiveToolbarColor(hasWallpaper: Boolean): Int {
return if (hasWallpaper) R.color.conversation_toolbar_color_wallpaper_scrolled else R.color.signal_colorSurface2
return if (hasWallpaper) R.color.conversation_toolbar_color_wallpaper_scrolled else CoreUiR.color.signal_colorSurface2
}
@ColorRes
private fun getInactiveToolbarColor(hasWallpaper: Boolean): Int {
return if (hasWallpaper) R.color.conversation_toolbar_color_wallpaper else R.color.signal_colorBackground
return if (hasWallpaper) R.color.conversation_toolbar_color_wallpaper else CoreUiR.color.signal_colorBackground
}
}

View File

@@ -22,6 +22,7 @@ import org.thoughtcrime.securesms.messagerequests.MessageRequestsBottomView
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.util.SpanUtil
import org.thoughtcrime.securesms.util.visible
import org.signal.core.ui.R as CoreUiR
/**
* A one-stop-view for all your conversation input disabled needs.
@@ -184,7 +185,7 @@ class DisabledInputView @JvmOverloads constructor(
}
fun setWallpaperEnabled(wallpaperEnabled: Boolean) {
color = ContextCompat.getColor(context, if (wallpaperEnabled) R.color.wallpaper_bubble_color else R.color.signal_colorBackground)
color = ContextCompat.getColor(context, if (wallpaperEnabled) R.color.wallpaper_bubble_color else CoreUiR.color.signal_colorBackground)
setBackgroundColor(color)
}

View File

@@ -13,6 +13,7 @@ import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.conversation.ConversationMessage
import org.thoughtcrime.securesms.conversation.v2.items.V2ConversationItemUtils.isThumbnailAtBottomOfBubble
import org.thoughtcrime.securesms.util.hasNoBubble
import org.signal.core.ui.R as CoreUiR
/**
* Color information for conversation items.
@@ -25,7 +26,7 @@ class V2ConversationItemTheme(
@ColorInt
fun getReplyIconBackgroundColor(): Int {
return if (conversationContext.hasWallpaper()) {
ContextCompat.getColor(context, R.color.signal_colorSurface1)
ContextCompat.getColor(context, CoreUiR.color.signal_colorSurface1)
} else {
Color.TRANSPARENT
}
@@ -36,7 +37,7 @@ class V2ConversationItemTheme(
conversationMessage: ConversationMessage
): Int {
if (conversationMessage.messageRecord.isThumbnailAtBottomOfBubble(context)) {
return ContextCompat.getColor(context, R.color.signal_colorOnCustom)
return ContextCompat.getColor(context, CoreUiR.color.signal_colorOnCustom)
}
if (conversationMessage.messageRecord.isOutgoing && conversationMessage.messageRecord.hasNoBubble(context) && !conversationContext.hasWallpaper()) {