From c6952cfcc16277720e778acc45c1da4544895667 Mon Sep 17 00:00:00 2001 From: Andrew Date: Sat, 15 Jun 2024 23:41:21 +0930 Subject: [PATCH] Add LightDarkColors and repackage to colors --- .../ui/DisappearingMessages.kt | 2 +- .../ui/DisappearingMessagesPreview.kt | 2 +- .../newmessage/NewMessageFragment.kt | 4 +- .../start/InviteFriendFragment.kt | 2 +- .../start/NewConversationHomeFragment.kt | 5 +- .../conversation/v2/MessageDetailActivity.kt | 8 +- .../securesms/home/HomeActivity.kt | 4 +- .../securesms/onboarding/LandingActivity.kt | 5 +- .../MessageNotificationsActivity.kt | 2 +- .../RecoveryPasswordActivity.kt | 4 +- .../NotificationSettingsActivity.kt | 1 - .../securesms/preferences/QRCodeActivity.kt | 2 +- .../securesms/preferences/SettingsActivity.kt | 2 +- .../org/thoughtcrime/securesms/ui/Carousel.kt | 1 + .../thoughtcrime/securesms/ui/Components.kt | 12 +- .../org/thoughtcrime/securesms/ui/Themes.kt | 15 ++- .../securesms/ui/color/ColorDefs.kt | 53 ++++++++ .../securesms/ui/{ => color}/Colors.kt | 120 ++++++------------ .../ui/color/ColorsFromPreferences.kt | 34 +++++ .../securesms/ui/components/AppBar.kt | 2 +- .../securesms/ui/components/Button.kt | 6 +- .../securesms/ui/components/QR.kt | 2 +- .../securesms/ui/components/QrImage.kt | 2 +- .../securesms/ui/components/SessionTabRow.kt | 6 +- .../securesms/ui/components/Text.kt | 4 +- .../securesms/util/ActivityUtilities.kt | 35 ++--- .../utilities/TextSecurePreferences.kt | 42 ++---- 27 files changed, 196 insertions(+), 181 deletions(-) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/ui/color/ColorDefs.kt rename app/src/main/java/org/thoughtcrime/securesms/ui/{ => color}/Colors.kt (74%) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/ui/color/ColorsFromPreferences.kt diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/disappearingmessages/ui/DisappearingMessages.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/disappearingmessages/ui/DisappearingMessages.kt index f0a31d6682..09dc40cfa2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/disappearingmessages/ui/DisappearingMessages.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/disappearingmessages/ui/DisappearingMessages.kt @@ -18,7 +18,7 @@ import androidx.compose.ui.unit.dp import network.loki.messenger.R import network.loki.messenger.libsession_util.util.ExpiryMode import org.thoughtcrime.securesms.ui.Callbacks -import org.thoughtcrime.securesms.ui.LocalColors +import org.thoughtcrime.securesms.ui.color.LocalColors import org.thoughtcrime.securesms.ui.NoOpCallbacks import org.thoughtcrime.securesms.ui.OptionsCard import org.thoughtcrime.securesms.ui.RadioOption diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/disappearingmessages/ui/DisappearingMessagesPreview.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/disappearingmessages/ui/DisappearingMessagesPreview.kt index 7e93e7f33c..20f1821e4c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/disappearingmessages/ui/DisappearingMessagesPreview.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/disappearingmessages/ui/DisappearingMessagesPreview.kt @@ -11,7 +11,7 @@ import network.loki.messenger.libsession_util.util.ExpiryMode import org.thoughtcrime.securesms.conversation.disappearingmessages.ExpiryType import org.thoughtcrime.securesms.conversation.disappearingmessages.State import org.thoughtcrime.securesms.ui.PreviewTheme -import org.thoughtcrime.securesms.ui.Colors +import org.thoughtcrime.securesms.ui.color.Colors import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider @Preview(widthDp = 450, heightDp = 700) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/newmessage/NewMessageFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/newmessage/NewMessageFragment.kt index fe7d3eeb0f..23f3c46d99 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/newmessage/NewMessageFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/newmessage/NewMessageFragment.kt @@ -47,9 +47,9 @@ import org.thoughtcrime.securesms.conversation.start.NewConversationDelegate import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2 import org.thoughtcrime.securesms.dependencies.DatabaseComponent import org.thoughtcrime.securesms.showOpenUrlDialog -import org.thoughtcrime.securesms.ui.Colors +import org.thoughtcrime.securesms.ui.color.Colors import org.thoughtcrime.securesms.ui.LoadingArcOr -import org.thoughtcrime.securesms.ui.LocalColors +import org.thoughtcrime.securesms.ui.color.LocalColors import org.thoughtcrime.securesms.ui.LocalDimensions import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/start/InviteFriendFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/start/InviteFriendFragment.kt index e9a08dfc16..9618c7cab5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/start/InviteFriendFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/start/InviteFriendFragment.kt @@ -29,7 +29,7 @@ import network.loki.messenger.R import org.session.libsession.utilities.TextSecurePreferences import org.thoughtcrime.securesms.preferences.copyPublicKey import org.thoughtcrime.securesms.preferences.sendInvitationToUseSession -import org.thoughtcrime.securesms.ui.LocalColors +import org.thoughtcrime.securesms.ui.color.LocalColors import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.base import org.thoughtcrime.securesms.ui.components.AppBar diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/start/NewConversationHomeFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/start/NewConversationHomeFragment.kt index a9272b15da..346f3650ef 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/start/NewConversationHomeFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/start/NewConversationHomeFragment.kt @@ -27,10 +27,11 @@ import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.MutableStateFlow import network.loki.messenger.R import org.session.libsession.utilities.TextSecurePreferences -import org.thoughtcrime.securesms.ui.Colors +import org.thoughtcrime.securesms.ui.Divider +import org.thoughtcrime.securesms.ui.color.Colors import org.thoughtcrime.securesms.ui.Divider import org.thoughtcrime.securesms.ui.ItemButton -import org.thoughtcrime.securesms.ui.LocalColors +import org.thoughtcrime.securesms.ui.color.LocalColors import org.thoughtcrime.securesms.ui.LocalDimensions import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/MessageDetailActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/MessageDetailActivity.kt index a805f61c53..f272b86584 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/MessageDetailActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/MessageDetailActivity.kt @@ -64,16 +64,16 @@ import org.thoughtcrime.securesms.ui.Divider import org.thoughtcrime.securesms.ui.GetString import org.thoughtcrime.securesms.ui.HorizontalPagerIndicator import org.thoughtcrime.securesms.ui.ItemButton -import org.thoughtcrime.securesms.ui.LocalColors +import org.thoughtcrime.securesms.ui.color.LocalColors import org.thoughtcrime.securesms.ui.PreviewTheme -import org.thoughtcrime.securesms.ui.Colors +import org.thoughtcrime.securesms.ui.color.Colors import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider import org.thoughtcrime.securesms.ui.TitledText import org.thoughtcrime.securesms.ui.base import org.thoughtcrime.securesms.ui.baseBold import org.thoughtcrime.securesms.ui.baseMonospace -import org.thoughtcrime.securesms.ui.blackAlpha40 -import org.thoughtcrime.securesms.ui.destructiveButtonColors +import org.thoughtcrime.securesms.ui.color.blackAlpha40 +import org.thoughtcrime.securesms.ui.color.destructiveButtonColors import org.thoughtcrime.securesms.ui.setComposeContent import javax.inject.Inject diff --git a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt index 6e1e2389d2..5a0f8e7c13 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt @@ -93,8 +93,8 @@ import org.thoughtcrime.securesms.showMuteDialog import org.thoughtcrime.securesms.showSessionDialog import org.thoughtcrime.securesms.ui.Divider import org.thoughtcrime.securesms.ui.LocalDimensions -import org.thoughtcrime.securesms.ui.LocalColors -import org.thoughtcrime.securesms.ui.Colors +import org.thoughtcrime.securesms.ui.color.LocalColors +import org.thoughtcrime.securesms.ui.color.Colors import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider import org.thoughtcrime.securesms.ui.SessionShieldIcon diff --git a/app/src/main/java/org/thoughtcrime/securesms/onboarding/LandingActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/onboarding/LandingActivity.kt index e576b7356a..df0d0cdbda 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/onboarding/LandingActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/onboarding/LandingActivity.kt @@ -46,10 +46,11 @@ import org.thoughtcrime.securesms.onboarding.pickname.startPickDisplayNameActivi import org.thoughtcrime.securesms.service.KeyCachingService import org.thoughtcrime.securesms.showOpenUrlDialog import org.thoughtcrime.securesms.ui.LocalDimensions -import org.thoughtcrime.securesms.ui.LocalColors -import org.thoughtcrime.securesms.ui.Colors +import org.thoughtcrime.securesms.ui.color.LocalColors +import org.thoughtcrime.securesms.ui.color.Colors import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider +import org.thoughtcrime.securesms.ui.color.LocalColors import org.thoughtcrime.securesms.ui.components.BorderlessHtmlButton import org.thoughtcrime.securesms.ui.components.PrimaryFillButton import org.thoughtcrime.securesms.ui.components.PrimaryOutlineButton diff --git a/app/src/main/java/org/thoughtcrime/securesms/onboarding/messagenotifications/MessageNotificationsActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/onboarding/messagenotifications/MessageNotificationsActivity.kt index d7c34263ad..a0c9691d27 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/onboarding/messagenotifications/MessageNotificationsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/onboarding/messagenotifications/MessageNotificationsActivity.kt @@ -26,7 +26,7 @@ import org.thoughtcrime.securesms.BaseActionBarActivity import org.thoughtcrime.securesms.home.HomeActivity import org.thoughtcrime.securesms.notifications.PushRegistry import org.thoughtcrime.securesms.ui.LocalDimensions -import org.thoughtcrime.securesms.ui.Colors +import org.thoughtcrime.securesms.ui.color.Colors import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider import org.thoughtcrime.securesms.ui.base diff --git a/app/src/main/java/org/thoughtcrime/securesms/onboarding/recoverypassword/RecoveryPasswordActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/onboarding/recoverypassword/RecoveryPasswordActivity.kt index 087685f890..d916d345c5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/onboarding/recoverypassword/RecoveryPasswordActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/onboarding/recoverypassword/RecoveryPasswordActivity.kt @@ -33,8 +33,8 @@ import org.thoughtcrime.securesms.BaseActionBarActivity import org.thoughtcrime.securesms.showSessionDialog import org.thoughtcrime.securesms.ui.CellWithPaddingAndMargin import org.thoughtcrime.securesms.ui.LocalDimensions -import org.thoughtcrime.securesms.ui.LocalColors -import org.thoughtcrime.securesms.ui.Colors +import org.thoughtcrime.securesms.ui.color.LocalColors +import org.thoughtcrime.securesms.ui.color.Colors import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider import org.thoughtcrime.securesms.ui.SessionShieldIcon diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/NotificationSettingsActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/preferences/NotificationSettingsActivity.kt index b18859ea07..2a34de808b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/NotificationSettingsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/NotificationSettingsActivity.kt @@ -4,7 +4,6 @@ import android.os.Bundle import dagger.hilt.android.AndroidEntryPoint import network.loki.messenger.R import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity -import org.thoughtcrime.securesms.preferences.NotificationsPreferenceFragment @AndroidEntryPoint class NotificationSettingsActivity : PassphraseRequiredActionBarActivity() { diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/QRCodeActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/preferences/QRCodeActivity.kt index 9344dc52d1..1cc1a31378 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/QRCodeActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/QRCodeActivity.kt @@ -25,7 +25,7 @@ import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity import org.thoughtcrime.securesms.conversation.v2.ConversationActivityV2 import org.thoughtcrime.securesms.database.threadDatabase import org.thoughtcrime.securesms.ui.LocalDimensions -import org.thoughtcrime.securesms.ui.LocalColors +import org.thoughtcrime.securesms.ui.color.LocalColors import org.thoughtcrime.securesms.ui.components.MaybeScanQrCode import org.thoughtcrime.securesms.ui.components.QrImage import org.thoughtcrime.securesms.ui.components.SessionTabRow diff --git a/app/src/main/java/org/thoughtcrime/securesms/preferences/SettingsActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/preferences/SettingsActivity.kt index 910d62a368..e6c00b23b8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/SettingsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/SettingsActivity.kt @@ -80,7 +80,7 @@ import org.thoughtcrime.securesms.ui.ItemButtonWithDrawable import org.thoughtcrime.securesms.ui.LocalDimensions import org.thoughtcrime.securesms.ui.components.OutlineButton import org.thoughtcrime.securesms.ui.components.OutlineCopyButton -import org.thoughtcrime.securesms.ui.destructiveButtonColors +import org.thoughtcrime.securesms.ui.color.destructiveButtonColors import org.thoughtcrime.securesms.ui.setThemedContent import org.thoughtcrime.securesms.util.BitmapDecodingException import org.thoughtcrime.securesms.util.BitmapUtil diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/Carousel.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/Carousel.kt index 2f46e37200..0860a4567b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/Carousel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/Carousel.kt @@ -38,6 +38,7 @@ import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch import network.loki.messenger.R +import org.thoughtcrime.securesms.ui.color.LocalColors import kotlin.math.absoluteValue import kotlin.math.sign diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt index d166c3fcb7..12802d5452 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt @@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.ui import androidx.annotation.DrawableRes import androidx.annotation.StringRes +import androidx.appcompat.content.res.AppCompatResources import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.Canvas import androidx.compose.foundation.Image @@ -64,6 +65,10 @@ import org.session.libsession.utilities.recipients.Recipient import org.session.libsession.utilities.runIf import org.thoughtcrime.securesms.components.ProfilePictureView import org.thoughtcrime.securesms.conversation.disappearingmessages.ui.OptionsCard +import org.thoughtcrime.securesms.ui.color.LocalColors +import org.thoughtcrime.securesms.ui.color.divider +import org.thoughtcrime.securesms.ui.color.radioButtonColors +import org.thoughtcrime.securesms.ui.color.transparentButtonColors import kotlin.math.min import kotlin.math.roundToInt @@ -130,13 +135,12 @@ fun ItemButtonWithDrawable( text = stringResource(textId), icon = { Image( - painter = rememberDrawablePainter(drawable = context.getDrawable(icon)), + painter = rememberDrawablePainter(drawable = AppCompatResources.getDrawable(context, icon)), contentDescription = stringResource(contentDescription), modifier = Modifier.align(Alignment.Center) ) }, colors = colors, - contentDescription = stringResource(contentDescription), onClick = onClick ) } @@ -159,7 +163,6 @@ fun ItemButton( ) }, colors = colors, - contentDescription = contentDescription, onClick = onClick ) } @@ -167,9 +170,8 @@ fun ItemButton( @Composable fun ItemButton( text: String, - icon: @Composable BoxScope.() -> Unit, + icon: @Composable() (BoxScope.() -> Unit), colors: ButtonColors = transparentButtonColors(), - contentDescription: String = text, onClick: () -> Unit ) { TextButton( diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/Themes.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/Themes.kt index 31fb463da7..b213d95484 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/Themes.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/Themes.kt @@ -2,7 +2,6 @@ package org.thoughtcrime.securesms.ui import android.content.Context import androidx.compose.foundation.background -import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Box import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.selection.LocalTextSelectionColors @@ -16,8 +15,13 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.PreviewParameterProvider import org.session.libsession.utilities.AppTextSecurePreferences -import org.thoughtcrime.securesms.util.ThemeState -import org.thoughtcrime.securesms.util.themeState +import org.thoughtcrime.securesms.ui.color.ClassicDark +import org.thoughtcrime.securesms.ui.color.ClassicLight +import org.thoughtcrime.securesms.ui.color.Colors +import org.thoughtcrime.securesms.ui.color.LocalColors +import org.thoughtcrime.securesms.ui.color.OceanDark +import org.thoughtcrime.securesms.ui.color.OceanLight +import org.thoughtcrime.securesms.ui.color.colors /** * Apply a Material2 compose theme based on user selections in SharedPreferences. @@ -26,7 +30,7 @@ import org.thoughtcrime.securesms.util.themeState fun SessionMaterialTheme( content: @Composable () -> Unit ) { - SessionMaterialTheme(LocalContext.current.sessionColors()) { content() } + SessionMaterialTheme(LocalContext.current.colors()) { content() } } /** @@ -73,8 +77,7 @@ private fun Colors.toMaterialColors() = androidx.compose.material.Colors( isLight = isLight ) -@Composable private fun Context.sessionColors() = AppTextSecurePreferences(this).themeState().sessionColors() -@Composable private fun ThemeState.sessionColors() = sessionColors(if (followSystem) !isSystemInDarkTheme() else isLight, isClassic, accent) +@Composable private fun Context.colors() = AppTextSecurePreferences(this).colors() val sessionShapes = Shapes( small = RoundedCornerShape(50) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/color/ColorDefs.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/color/ColorDefs.kt new file mode 100644 index 0000000000..672b5555f1 --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/color/ColorDefs.kt @@ -0,0 +1,53 @@ +package org.thoughtcrime.securesms.ui.color + +import androidx.compose.ui.graphics.Color + + +val classicDark0 = Color(0xff111111) +val classicDark1 = Color(0xff1B1B1B) +val classicDark2 = Color(0xff2D2D2D) +val classicDark3 = Color(0xff414141) +val classicDark4 = Color(0xff767676) +val classicDark5 = Color(0xffA1A2A1) +val classicDark6 = Color(0xffFFFFFF) + +val classicLight0 = Color(0xff000000) +val classicLight1 = Color(0xff6D6D6D) +val classicLight2 = Color(0xffA1A2A1) +val classicLight3 = Color(0xffDFDFDF) +val classicLight4 = Color(0xffF0F0F0) +val classicLight5 = Color(0xffF9F9F9) +val classicLight6 = Color(0xffFFFFFF) + +val oceanDark0 = Color(0xff000000) +val oceanDark1 = Color(0xff1A1C28) +val oceanDark2 = Color(0xff252735) +val oceanDark3 = Color(0xff2B2D40) +val oceanDark4 = Color(0xff3D4A5D) +val oceanDark5 = Color(0xffA6A9CE) +val oceanDark6 = Color(0xff5CAACC) +val oceanDark7 = Color(0xffFFFFFF) + +val oceanLight0 = Color(0xff000000) +val oceanLight1 = Color(0xff19345D) +val oceanLight2 = Color(0xff6A6E90) +val oceanLight3 = Color(0xff5CAACC) +val oceanLight4 = Color(0xffB3EDF2) +val oceanLight5 = Color(0xffE7F3F4) +val oceanLight6 = Color(0xffECFAFB) +val oceanLight7 = Color(0xffFCFFFF) + +val primaryGreen = Color(0xFF31F196) +val primaryBlue = Color(0xFF57C9FA) +val primaryPurple = Color(0xFFC993FF) +val primaryPink = Color(0xFFFF95EF) +val primaryRed = Color(0xFFFF9C8E) +val primaryOrange = Color(0xFFFCB159) +val primaryYellow = Color(0xFFFAD657) + +val dangerDark = Color(0xFFFF3A3A) +val dangerLight = Color(0xFFE12D19) +val disabledDark = Color(0xFFA1A2A1) +val disabledLight = Color(0xFF6D6D6D) + +val blackAlpha40 = Color.Black.copy(alpha = 0.4f) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/Colors.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/color/Colors.kt similarity index 74% rename from app/src/main/java/org/thoughtcrime/securesms/ui/Colors.kt rename to app/src/main/java/org/thoughtcrime/securesms/ui/color/Colors.kt index f36392ebee..ab03d53f9a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/Colors.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/color/Colors.kt @@ -1,7 +1,7 @@ -package org.thoughtcrime.securesms.ui +package org.thoughtcrime.securesms.ui.color -import android.content.Context import androidx.compose.foundation.background +import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.material.ButtonDefaults @@ -15,58 +15,12 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.takeOrElse import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter -import org.session.libsession.utilities.TextSecurePreferences - -val classicDark0 = Color(0xff111111) -val classicDark1 = Color(0xff1B1B1B) -val classicDark2 = Color(0xff2D2D2D) -val classicDark3 = Color(0xff414141) -val classicDark4 = Color(0xff767676) -val classicDark5 = Color(0xffA1A2A1) -val classicDark6 = Color(0xffFFFFFF) - -val classicLight0 = Color(0xff000000) -val classicLight1 = Color(0xff6D6D6D) -val classicLight2 = Color(0xffA1A2A1) -val classicLight3 = Color(0xffDFDFDF) -val classicLight4 = Color(0xffF0F0F0) -val classicLight5 = Color(0xffF9F9F9) -val classicLight6 = Color(0xffFFFFFF) - -val oceanDark0 = Color(0xff000000) -val oceanDark1 = Color(0xff1A1C28) -val oceanDark2 = Color(0xff252735) -val oceanDark3 = Color(0xff2B2D40) -val oceanDark4 = Color(0xff3D4A5D) -val oceanDark5 = Color(0xffA6A9CE) -val oceanDark6 = Color(0xff5CAACC) -val oceanDark7 = Color(0xffFFFFFF) - -val oceanLight0 = Color(0xff000000) -val oceanLight1 = Color(0xff19345D) -val oceanLight2 = Color(0xff6A6E90) -val oceanLight3 = Color(0xff5CAACC) -val oceanLight4 = Color(0xffB3EDF2) -val oceanLight5 = Color(0xffE7F3F4) -val oceanLight6 = Color(0xffECFAFB) -val oceanLight7 = Color(0xffFCFFFF) - -val primaryGreen = Color(0xFF31F196) -val primaryBlue = Color(0xFF57C9FA) -val primaryPurple = Color(0xFFC993FF) -val primaryPink = Color(0xFFFF95EF) -val primaryRed = Color(0xFFFF9C8E) -val primaryOrange = Color(0xFFFCB159) -val primaryYellow = Color(0xFFFAD657) - -val dangerDark = Color(0xFFFF3A3A) -val dangerLight = Color(0xFFE12D19) -val disabledDark = Color(0xFFA1A2A1) -val disabledLight = Color(0xFF6D6D6D) - -val blackAlpha40 = Color.Black.copy(alpha = 0.4f) +import org.thoughtcrime.securesms.ui.PreviewTheme +import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider +import org.thoughtcrime.securesms.ui.base val LocalColors = staticCompositionLocalOf { ClassicDark() } @@ -90,19 +44,6 @@ interface Colors { val qrCodeBackground: Color } -val Colors.slimOutlineButton: Color get() = text - -fun sessionColors( - isLight: Boolean, - isClassic: Boolean, - primary: Color -): Colors = when { - isClassic && isLight -> ::ClassicLight - isLight -> ::OceanLight - isClassic -> ::ClassicDark - else -> ::OceanDark -}(primary) - data class ClassicDark(override val primary: Color = primaryGreen): Colors { override val isLight = false override val danger = dangerDark @@ -175,11 +116,7 @@ data class OceanLight(override val primary: Color = primaryBlue): Colors { override val qrCodeBackground = backgroundSecondary } -@Composable -fun transparentButtonColors() = ButtonDefaults.buttonColors(backgroundColor = Color.Transparent) - -@Composable -fun destructiveButtonColors() = ButtonDefaults.buttonColors(backgroundColor = Color.Transparent, contentColor = LocalColors.current.danger) +val Colors.slimOutlineButton: Color get() = text @Composable fun Colors(name: String, colors: List) { @@ -250,12 +187,39 @@ fun Colors.radioButtonColors() = RadioButtonDefaults.colors( disabledColor = disabled ) -fun TextSecurePreferences.Companion.getAccentColor(context: Context): Color = when (getAccentColorName(context)) { - BLUE_ACCENT -> primaryBlue - PURPLE_ACCENT -> primaryPurple - PINK_ACCENT -> primaryPink - RED_ACCENT -> primaryRed - ORANGE_ACCENT -> primaryOrange - YELLOW_ACCENT -> primaryYellow - else -> primaryGreen +@Composable +fun transparentButtonColors() = ButtonDefaults.buttonColors(backgroundColor = Color.Transparent) + +@Composable +fun destructiveButtonColors() = ButtonDefaults.buttonColors(backgroundColor = Color.Transparent, contentColor = LocalColors.current.danger) + + +/** + * This class holds two instances of [Colors], [light] representing the [Colors] to use when the system is in a + * light theme, and [dark] representing the [Colors] to use when the system is in a dark theme. + * + * If the user has [followSystemSettings] turned on then [light] should be equal to [dark]. + */ +data class LightDarkColors( + val light: Colors, + val dark: Colors +) { + @Composable + fun colors() = if (light == dark || isSystemInDarkTheme()) dark else light +} + +/** + * Courtesy constructor that sets [light] and [dark] based on properties. + */ +fun LightDarkColors(isClassic: Boolean, isLight: Boolean, followSystemSettings: Boolean, primaryOrUnspecified: Color): LightDarkColors { + val primary = primaryOrUnspecified.takeOrElse { if (isClassic) primaryGreen else primaryBlue } + val light = when { + isLight || followSystemSettings -> if (isClassic) ClassicLight(primary) else OceanLight(primary) + else -> if (isClassic) ClassicDark(primary) else OceanDark(primary) + } + val dark = when { + isLight && !followSystemSettings -> if (isClassic) ClassicLight(primary) else OceanLight(primary) + else -> if (isClassic) ClassicDark(primary) else OceanDark(primary) + } + return LightDarkColors(light, dark) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/color/ColorsFromPreferences.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/color/ColorsFromPreferences.kt new file mode 100644 index 0000000000..c774b5d0fa --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/color/ColorsFromPreferences.kt @@ -0,0 +1,34 @@ +package org.thoughtcrime.securesms.ui.color + +import androidx.compose.runtime.Composable +import androidx.compose.ui.graphics.Color +import org.session.libsession.utilities.TextSecurePreferences +import org.session.libsession.utilities.TextSecurePreferences.Companion.BLUE_ACCENT +import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_DARK +import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_LIGHT +import org.session.libsession.utilities.TextSecurePreferences.Companion.GREEN_ACCENT +import org.session.libsession.utilities.TextSecurePreferences.Companion.OCEAN_LIGHT +import org.session.libsession.utilities.TextSecurePreferences.Companion.ORANGE_ACCENT +import org.session.libsession.utilities.TextSecurePreferences.Companion.PINK_ACCENT +import org.session.libsession.utilities.TextSecurePreferences.Companion.PURPLE_ACCENT +import org.session.libsession.utilities.TextSecurePreferences.Companion.RED_ACCENT +import org.session.libsession.utilities.TextSecurePreferences.Companion.YELLOW_ACCENT + +/** + * Retrieve the current [Colors] from [TextSecurePreferences] and current system settings. + */ +@Composable +fun TextSecurePreferences.colors(): Colors = lightDarkColors().colors() +fun TextSecurePreferences.lightDarkColors() = LightDarkColors(isClassic(), isLight(), getFollowSystemSettings(), primaryColor()) +fun TextSecurePreferences.isLight(): Boolean = getThemeStyle() in setOf(CLASSIC_LIGHT, OCEAN_LIGHT) +fun TextSecurePreferences.isClassic(): Boolean = getThemeStyle() in setOf(CLASSIC_DARK, CLASSIC_LIGHT) +fun TextSecurePreferences.primaryColor(): Color = when(getSelectedAccentColor()) { + GREEN_ACCENT -> primaryGreen + BLUE_ACCENT -> primaryBlue + PURPLE_ACCENT -> primaryPurple + PINK_ACCENT -> primaryPink + RED_ACCENT -> primaryRed + ORANGE_ACCENT -> primaryOrange + YELLOW_ACCENT -> primaryYellow + else -> Color.Unspecified +} diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/AppBar.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/AppBar.kt index 7207d2574f..46fe1d8e20 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/components/AppBar.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/AppBar.kt @@ -16,7 +16,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import network.loki.messenger.R -import org.thoughtcrime.securesms.ui.Colors +import org.thoughtcrime.securesms.ui.color.Colors import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider import org.thoughtcrime.securesms.ui.h4 diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/Button.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/Button.kt index ef20c882fb..3d02c5f799 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/components/Button.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/Button.kt @@ -42,14 +42,14 @@ import kotlinx.coroutines.flow.filter import network.loki.messenger.R import org.thoughtcrime.securesms.ui.GetString import org.thoughtcrime.securesms.ui.LaunchedEffectAsync -import org.thoughtcrime.securesms.ui.LocalColors +import org.thoughtcrime.securesms.ui.color.LocalColors import org.thoughtcrime.securesms.ui.baseBold +import org.thoughtcrime.securesms.ui.color.radioButtonColors +import org.thoughtcrime.securesms.ui.color.slimOutlineButton import org.thoughtcrime.securesms.ui.contentDescription import org.thoughtcrime.securesms.ui.extraSmall import org.thoughtcrime.securesms.ui.h8 import org.thoughtcrime.securesms.ui.h9 -import org.thoughtcrime.securesms.ui.radioButtonColors -import org.thoughtcrime.securesms.ui.slimOutlineButton import org.thoughtcrime.securesms.ui.small import kotlin.time.Duration import kotlin.time.Duration.Companion.seconds diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/QR.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/QR.kt index 62cec593bd..649ef5bd4c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/components/QR.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/QR.kt @@ -57,7 +57,7 @@ import kotlinx.coroutines.flow.filter import network.loki.messenger.R import org.session.libsignal.utilities.Log import org.thoughtcrime.securesms.ui.LocalDimensions -import org.thoughtcrime.securesms.ui.LocalColors +import org.thoughtcrime.securesms.ui.color.LocalColors import org.thoughtcrime.securesms.ui.base import java.util.concurrent.Executors diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/QrImage.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/QrImage.kt index 0084a59035..9039ff6323 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/components/QrImage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/QrImage.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.unit.dp import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import network.loki.messenger.R -import org.thoughtcrime.securesms.ui.LocalColors +import org.thoughtcrime.securesms.ui.color.LocalColors import org.thoughtcrime.securesms.util.QRCodeUtilities @Composable diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/SessionTabRow.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/SessionTabRow.kt index 06493b3f0a..88a8cb2715 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/components/SessionTabRow.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/SessionTabRow.kt @@ -19,11 +19,11 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch import network.loki.messenger.R -import org.thoughtcrime.securesms.ui.LocalColors +import org.thoughtcrime.securesms.ui.color.LocalColors import org.thoughtcrime.securesms.ui.PreviewTheme -import org.thoughtcrime.securesms.ui.Colors +import org.thoughtcrime.securesms.ui.color.Colors import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider -import org.thoughtcrime.securesms.ui.divider +import org.thoughtcrime.securesms.ui.color.divider import org.thoughtcrime.securesms.ui.h8 private val TITLES = listOf(R.string.sessionRecoveryPassword, R.string.qrScan) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/components/Text.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/components/Text.kt index 88935e8dfc..7fc4d2e920 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/components/Text.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/components/Text.kt @@ -26,10 +26,10 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import org.thoughtcrime.securesms.ui.LocalColors import org.thoughtcrime.securesms.ui.base import org.thoughtcrime.securesms.ui.baseBold -import org.thoughtcrime.securesms.ui.outlinedTextFieldColors +import org.thoughtcrime.securesms.ui.color.LocalColors +import org.thoughtcrime.securesms.ui.color.outlinedTextFieldColors @Composable fun SessionOutlinedTextField( diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/ActivityUtilities.kt b/app/src/main/java/org/thoughtcrime/securesms/util/ActivityUtilities.kt index 75b20f2477..ae58af27e5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/ActivityUtilities.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/ActivityUtilities.kt @@ -11,14 +11,11 @@ import androidx.appcompat.widget.Toolbar import androidx.fragment.app.DialogFragment import network.loki.messenger.R import org.session.libsession.utilities.TextSecurePreferences +import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_DARK +import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_LIGHT +import org.session.libsession.utilities.TextSecurePreferences.Companion.OCEAN_DARK +import org.session.libsession.utilities.TextSecurePreferences.Companion.OCEAN_LIGHT import org.thoughtcrime.securesms.BaseActionBarActivity -import org.thoughtcrime.securesms.ui.primaryBlue -import org.thoughtcrime.securesms.ui.primaryGreen -import org.thoughtcrime.securesms.ui.primaryOrange -import org.thoughtcrime.securesms.ui.primaryPink -import org.thoughtcrime.securesms.ui.primaryPurple -import org.thoughtcrime.securesms.ui.primaryRed -import org.thoughtcrime.securesms.ui.primaryYellow fun BaseActionBarActivity.setUpActionBarSessionLogo(hideBackButton: Boolean = false) { val actionbar = supportActionBar!! @@ -90,10 +87,10 @@ fun TextSecurePreferences.themeState(): ThemeState { @StyleRes fun String.getThemeStyle(): Int = when (this) { - TextSecurePreferences.CLASSIC_DARK -> R.style.Classic_Dark - TextSecurePreferences.CLASSIC_LIGHT -> R.style.Classic_Light - TextSecurePreferences.OCEAN_DARK -> R.style.Ocean_Dark - TextSecurePreferences.OCEAN_LIGHT -> R.style.Ocean_Light + CLASSIC_DARK -> R.style.Classic_Dark + CLASSIC_LIGHT -> R.style.Classic_Light + OCEAN_DARK -> R.style.Ocean_Dark + OCEAN_LIGHT -> R.style.Ocean_Light else -> throw NullPointerException("The style [$this] is not supported") } @@ -107,21 +104,7 @@ data class ThemeState ( @StyleRes val theme: Int, @StyleRes val accentStyle: Int, val followSystem: Boolean -) { - val isLight = theme in setOf(R.style.Classic_Light, R.style.Ocean_Light) - val isClassic = theme in setOf(R.style.Classic_Light, R.style.Classic_Dark) - - val accent = when(accentStyle) { - R.style.PrimaryGreen -> primaryGreen - R.style.PrimaryBlue -> primaryBlue - R.style.PrimaryPurple -> primaryPurple - R.style.PrimaryPink -> primaryPink - R.style.PrimaryRed -> primaryRed - R.style.PrimaryOrange -> primaryOrange - R.style.PrimaryYellow -> primaryYellow - else -> primaryGreen - } -} +) inline fun Activity.show() = Intent(this, T::class.java).also(::startActivity).let { overridePendingTransition(R.anim.slide_from_bottom, R.anim.fade_scale_out) } inline fun Activity.push() = Intent(this, T::class.java).also(::startActivity).let { overridePendingTransition(R.anim.slide_from_right, R.anim.fade_scale_out) } diff --git a/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt b/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt index 86be93304e..6c0708510d 100644 --- a/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt +++ b/libsession/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt @@ -14,6 +14,7 @@ import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.asSharedFlow import org.session.libsession.R +import org.session.libsession.utilities.TextSecurePreferences.Companion import org.session.libsession.utilities.TextSecurePreferences.Companion.AUTOPLAY_AUDIO_MESSAGES import org.session.libsession.utilities.TextSecurePreferences.Companion.CALL_NOTIFICATIONS_ENABLED import org.session.libsession.utilities.TextSecurePreferences.Companion.CLASSIC_DARK @@ -24,6 +25,8 @@ import org.session.libsession.utilities.TextSecurePreferences.Companion.LAST_VAC import org.session.libsession.utilities.TextSecurePreferences.Companion.LEGACY_PREF_KEY_SELECTED_UI_MODE import org.session.libsession.utilities.TextSecurePreferences.Companion.OCEAN_DARK import org.session.libsession.utilities.TextSecurePreferences.Companion.OCEAN_LIGHT +import org.session.libsession.utilities.TextSecurePreferences.Companion.ORANGE_ACCENT +import org.session.libsession.utilities.TextSecurePreferences.Companion.SELECTED_ACCENT_COLOR import org.session.libsession.utilities.TextSecurePreferences.Companion.SELECTED_STYLE import org.session.libsession.utilities.TextSecurePreferences.Companion.SHOWN_CALL_NOTIFICATION import org.session.libsession.utilities.TextSecurePreferences.Companion.SHOWN_CALL_WARNING @@ -175,6 +178,7 @@ interface TextSecurePreferences { fun setLastVacuumNow() fun getFingerprintKeyGenerated(): Boolean fun setFingerprintKeyGenerated() + fun getSelectedAccentColor(): String? @StyleRes fun getAccentColorStyle(): Int? fun setAccentColorStyle(@StyleRes newColorStyle: Int?) fun getThemeStyle(): String @@ -987,35 +991,6 @@ interface TextSecurePreferences { setBooleanPreference(context, FINGERPRINT_KEY_GENERATED, true) } - @JvmStatic - fun getAccentColorName(context: Context): String? = getStringPreference(context, SELECTED_ACCENT_COLOR, ORANGE_ACCENT) - - @JvmStatic @StyleRes - fun getAccentColorStyle(context: Context): Int? = when (getAccentColorName(context)) { - GREEN_ACCENT -> R.style.PrimaryGreen - BLUE_ACCENT -> R.style.PrimaryBlue - PURPLE_ACCENT -> R.style.PrimaryPurple - PINK_ACCENT -> R.style.PrimaryPink - RED_ACCENT -> R.style.PrimaryRed - ORANGE_ACCENT -> R.style.PrimaryOrange - YELLOW_ACCENT -> R.style.PrimaryYellow - else -> null - } - - @JvmStatic - fun setAccentColorStyle(context: Context, @StyleRes newColor: Int?) { - setStringPreference(context, SELECTED_ACCENT_COLOR, when (newColor) { - R.style.PrimaryGreen -> GREEN_ACCENT - R.style.PrimaryBlue -> BLUE_ACCENT - R.style.PrimaryPurple -> PURPLE_ACCENT - R.style.PrimaryPink -> PINK_ACCENT - R.style.PrimaryRed -> RED_ACCENT - R.style.PrimaryOrange -> ORANGE_ACCENT - R.style.PrimaryYellow -> YELLOW_ACCENT - else -> null - }) - } - @JvmStatic fun clearAll(context: Context) { getDefaultSharedPreferences(context).edit().clear().commit() @@ -1628,13 +1603,12 @@ class AppTextSecurePreferences @Inject constructor( setBooleanPreference(TextSecurePreferences.FINGERPRINT_KEY_GENERATED, true) } + override fun getSelectedAccentColor(): String? = + getStringPreference(SELECTED_ACCENT_COLOR, null) + @StyleRes override fun getAccentColorStyle(): Int? { - val prefColor = getStringPreference( - TextSecurePreferences.SELECTED_ACCENT_COLOR, - null - ) - return when (prefColor) { + return when (getSelectedAccentColor()) { TextSecurePreferences.GREEN_ACCENT -> R.style.PrimaryGreen TextSecurePreferences.BLUE_ACCENT -> R.style.PrimaryBlue TextSecurePreferences.PURPLE_ACCENT -> R.style.PrimaryPurple