Fix QR colors

This commit is contained in:
andrew 2023-11-17 01:10:27 +10:30
parent 9ac3ec22c0
commit 0cc54b7b40
5 changed files with 33 additions and 18 deletions

View File

@ -34,6 +34,7 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ColorFilter
import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.graphics.asImageBitmap
import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ComposeView
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
@ -44,14 +45,8 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import network.loki.messenger.R import network.loki.messenger.R
import org.session.libsession.utilities.TextSecurePreferences import org.session.libsession.utilities.TextSecurePreferences
import org.session.libsignal.crypto.MnemonicCodec
import org.session.libsignal.utilities.hexEncodedPrivateKey
import org.thoughtcrime.securesms.BaseActionBarActivity import org.thoughtcrime.securesms.BaseActionBarActivity
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil
import org.thoughtcrime.securesms.crypto.MnemonicUtilities
import org.thoughtcrime.securesms.ui.AppTheme import org.thoughtcrime.securesms.ui.AppTheme
import org.thoughtcrime.securesms.ui.Cell
import org.thoughtcrime.securesms.ui.CellNoMargin
import org.thoughtcrime.securesms.ui.CellWithPaddingAndMargin import org.thoughtcrime.securesms.ui.CellWithPaddingAndMargin
import org.thoughtcrime.securesms.ui.LocalExtraColors import org.thoughtcrime.securesms.ui.LocalExtraColors
import org.thoughtcrime.securesms.ui.OutlineButton import org.thoughtcrime.securesms.ui.OutlineButton
@ -60,7 +55,6 @@ import org.thoughtcrime.securesms.ui.SessionShieldIcon
import org.thoughtcrime.securesms.ui.ThemeResPreviewParameterProvider import org.thoughtcrime.securesms.ui.ThemeResPreviewParameterProvider
import org.thoughtcrime.securesms.ui.classicDarkColors import org.thoughtcrime.securesms.ui.classicDarkColors
import org.thoughtcrime.securesms.ui.colorDestructive import org.thoughtcrime.securesms.ui.colorDestructive
import org.thoughtcrime.securesms.ui.extraSmall
import org.thoughtcrime.securesms.ui.h8 import org.thoughtcrime.securesms.ui.h8
import org.thoughtcrime.securesms.ui.small import org.thoughtcrime.securesms.ui.small
@ -74,7 +68,7 @@ class RecoveryPasswordActivity : BaseActionBarActivity() {
ComposeView(this).apply { ComposeView(this).apply {
setContent { setContent {
RecoveryPassword(viewModel.seed, viewModel.bitmap) { copySeed() } RecoveryPassword(viewModel.seed, viewModel.qrBitmap) { copySeed() }
} }
}.let(::setContentView) }.let(::setContentView)
} }
@ -103,21 +97,21 @@ fun PreviewMessageDetails(
} }
@Composable @Composable
fun RecoveryPassword(seed: String = "", bitmap: Bitmap? = null, copySeed:() -> Unit = {}) { fun RecoveryPassword(seed: String = "", qrBitmap: Bitmap? = null, copySeed:() -> Unit = {}) {
AppTheme { AppTheme {
Column( Column(
verticalArrangement = Arrangement.spacedBy(16.dp), verticalArrangement = Arrangement.spacedBy(16.dp),
modifier = Modifier.verticalScroll(rememberScrollState()) modifier = Modifier.verticalScroll(rememberScrollState())
.padding(bottom = 16.dp) .padding(bottom = 16.dp)
) { ) {
RecoveryPasswordCell(seed, bitmap, copySeed) RecoveryPasswordCell(seed, qrBitmap, copySeed)
HideRecoveryPasswordCell() HideRecoveryPasswordCell()
} }
} }
} }
@Composable @Composable
fun RecoveryPasswordCell(seed: String = "", bitmap: Bitmap? = null, copySeed:() -> Unit = {}) { fun RecoveryPasswordCell(seed: String = "", qrBitmap: Bitmap? = null, copySeed:() -> Unit = {}) {
val showQr = remember { val showQr = remember {
mutableStateOf(false) mutableStateOf(false)
} }
@ -150,27 +144,29 @@ fun RecoveryPasswordCell(seed: String = "", bitmap: Bitmap? = null, copySeed:()
AnimatedVisibility(showQr.value, modifier = Modifier.align(Alignment.CenterHorizontally)) { AnimatedVisibility(showQr.value, modifier = Modifier.align(Alignment.CenterHorizontally)) {
Card( Card(
backgroundColor = Color.White, backgroundColor = LocalExtraColors.current.lightCell,
elevation = 0.dp,
modifier = Modifier modifier = Modifier
.align(Alignment.CenterHorizontally) .align(Alignment.CenterHorizontally)
.padding(vertical = 24.dp) .padding(vertical = 24.dp)
) { ) {
Box { Box {
bitmap?.let { qrBitmap?.let {
Image( Image(
bitmap = it.asImageBitmap(), bitmap = it.asImageBitmap(),
contentDescription = "some useful description", contentDescription = "QR code of your recovery password",
colorFilter = ColorFilter.tint(LocalExtraColors.current.onLightCell)
) )
} }
Icon( Icon(
painter = painterResource(id = R.drawable.session_shield), painter = painterResource(id = R.drawable.session_shield),
contentDescription = "", contentDescription = "",
tint = Color.Black, tint = LocalExtraColors.current.onLightCell,
modifier = Modifier.align(Alignment.Center) modifier = Modifier.align(Alignment.Center)
.width(46.dp) .width(46.dp)
.height(56.dp) .height(56.dp)
.background(color = Color.White) .background(color = LocalExtraColors.current.lightCell)
.padding(horizontal = 3.dp, vertical = 1.dp) .padding(horizontal = 3.dp, vertical = 1.dp)
) )
} }

View File

@ -18,7 +18,7 @@ class RecoveryPasswordViewModel @Inject constructor(
private val application: Application private val application: Application
): AndroidViewModel(application) { ): AndroidViewModel(application) {
val bitmap: Bitmap? = TextSecurePreferences.getLocalNumber(application)?.let { val qrBitmap: Bitmap? = TextSecurePreferences.getLocalNumber(application)?.let {
QRCodeUtilities.encode( QRCodeUtilities.encode(
data = it, data = it,
size = toPx(280, application.resources), size = toPx(280, application.resources),

View File

@ -30,7 +30,9 @@ val LocalExtraColors = staticCompositionLocalOf<ExtraColors> { error("No Custom
data class ExtraColors( data class ExtraColors(
val settingsBackground: Color, val settingsBackground: Color,
val prominentButtonColor: Color val prominentButtonColor: Color,
val lightCell: Color,
val onLightCell: Color,
) )
/** /**
@ -46,6 +48,8 @@ fun AppTheme(
ExtraColors( ExtraColors(
settingsBackground = getColorFromTheme(R.attr.colorSettingsBackground), settingsBackground = getColorFromTheme(R.attr.colorSettingsBackground),
prominentButtonColor = getColorFromTheme(R.attr.prominentButtonColor), prominentButtonColor = getColorFromTheme(R.attr.prominentButtonColor),
lightCell = getColorFromTheme(R.attr.lightCell),
onLightCell = getColorFromTheme(R.attr.onLightCell),
) )
} }

View File

@ -28,6 +28,9 @@
<attr name="ic_visibility_on" format="reference" /> <attr name="ic_visibility_on" format="reference" />
<attr name="ic_visibility_off" format="reference" /> <attr name="ic_visibility_off" format="reference" />
<attr name="lightCell" format="reference|color"/>
<attr name="onLightCell" format="reference|color"/>
<attr name="accentColor" format="reference|color"/> <attr name="accentColor" format="reference|color"/>
<attr name="prominentButtonColor" format="reference|color"/> <attr name="prominentButtonColor" format="reference|color"/>
<attr name="elementBorderColor" format="reference|color"/> <attr name="elementBorderColor" format="reference|color"/>

View File

@ -343,6 +343,9 @@
<item name="prominentButtonColor">?colorAccent</item> <item name="prominentButtonColor">?colorAccent</item>
<item name="elementBorderColor">@color/classic_dark_3</item> <item name="elementBorderColor">@color/classic_dark_3</item>
<item name="lightCell">@color/white</item>
<item name="onLightCell">@color/black</item>
<item name="isLightTheme">false</item> <item name="isLightTheme">false</item>
<!-- Home screen --> <!-- Home screen -->
@ -422,6 +425,9 @@
<item name="prominentButtonColor">?android:textColorPrimary</item> <item name="prominentButtonColor">?android:textColorPrimary</item>
<item name="elementBorderColor">@color/classic_light_3</item> <item name="elementBorderColor">@color/classic_light_3</item>
<item name="lightCell">@color/classic_light_5</item>
<item name="onLightCell">@color/black</item>
<!-- Light mode --> <!-- Light mode -->
<item name="theme_type">light</item> <item name="theme_type">light</item>
<item name="android:colorBackgroundFloating">?colorPrimary</item> <item name="android:colorBackgroundFloating">?colorPrimary</item>
@ -510,6 +516,9 @@
<item name="prominentButtonColor">?colorAccent</item> <item name="prominentButtonColor">?colorAccent</item>
<item name="elementBorderColor">@color/ocean_dark_4</item> <item name="elementBorderColor">@color/ocean_dark_4</item>
<item name="lightCell">@color/white</item>
<item name="onLightCell">@color/ocean_dark_2</item>
<item name="isLightTheme">false</item> <item name="isLightTheme">false</item>
<!-- Home screen --> <!-- Home screen -->
@ -593,6 +602,9 @@
<item name="prominentButtonColor">?android:textColorPrimary</item> <item name="prominentButtonColor">?android:textColorPrimary</item>
<item name="elementBorderColor">@color/ocean_light_3</item> <item name="elementBorderColor">@color/ocean_light_3</item>
<item name="lightCell">@color/ocean_light_6</item>
<item name="onLightCell">@color/ocean_light_1</item>
<!-- Light mode --> <!-- Light mode -->
<item name="theme_type">light</item> <item name="theme_type">light</item>
<item name="android:colorBackgroundFloating">?colorPrimary</item> <item name="android:colorBackgroundFloating">?colorPrimary</item>