diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/compose/ScreenBrightness.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ScreenBrightness.kt
similarity index 83%
rename from ui-lib/src/main/java/co/electriccoin/zcash/ui/common/compose/ScreenBrightness.kt
rename to ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ScreenBrightness.kt
index c0222b477..9890df7ba 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/compose/ScreenBrightness.kt
+++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ScreenBrightness.kt
@@ -1,4 +1,4 @@
-package co.electriccoin.zcash.ui.common.compose
+package co.electriccoin.zcash.ui.design.component
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
@@ -37,13 +37,12 @@ val LocalScreenBrightness = compositionLocalOf { ScreenBrightness }
fun BrightenScreen() {
val screenBrightness = LocalScreenBrightness.current
DisposableEffect(screenBrightness) {
- screenBrightness.fullBrightness()
- onDispose { screenBrightness.restoreBrightness() }
+ ScreenBrightness.fullBrightness()
+ onDispose { ScreenBrightness.restoreBrightness() }
}
}
@Composable
fun RestoreScreenBrightness() {
- val screenBrightness = LocalScreenBrightness.current
- screenBrightness.restoreBrightness()
+ ScreenBrightness.restoreBrightness()
}
diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiQr.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiQr.kt
index 2d7bc2db9..94032a6f4 100644
--- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiQr.kt
+++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiQr.kt
@@ -1,26 +1,39 @@
package co.electriccoin.zcash.ui.design.component
+import android.util.Log
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable
+import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.PaddingValues
+import androidx.compose.foundation.layout.fillMaxSize
+import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Surface
import androidx.compose.runtime.Composable
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.SideEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.isSpecified
-import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalDensity
-import androidx.compose.ui.res.vectorResource
+import androidx.compose.ui.platform.LocalView
+import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
+import androidx.compose.ui.window.Dialog
+import androidx.compose.ui.window.DialogProperties
+import androidx.compose.ui.window.DialogWindowProvider
import co.electriccoin.zcash.ui.design.theme.colors.ZashiColors
import co.electriccoin.zcash.ui.design.theme.dimensions.ZashiDimensions
import co.electriccoin.zcash.ui.design.util.AndroidQrCodeImageGenerator
@@ -37,9 +50,81 @@ fun ZashiQr(
qrSize: Dp = ZashiQrDefaults.width,
colors: QrCodeColors = QrCodeDefaults.colors(),
contentPadding: PaddingValues = QrCodeDefaults.contentPadding()
+) {
+ var isFullscreenDialogVisible by remember { mutableStateOf(false) }
+
+ ZashiQrInternal(
+ state = state,
+ modifier =
+ modifier
+ .clickable(
+ interactionSource = remember { MutableInteractionSource() },
+ indication = null,
+ onClick = {
+ isFullscreenDialogVisible = true
+ }
+ ),
+ colors = colors,
+ contentPadding = contentPadding,
+ qrSize = qrSize,
+ enableBitmapReload = !isFullscreenDialogVisible,
+ centerImageResId = state.centerImageResId,
+ tag = "kktina 1"
+ )
+
+ if (isFullscreenDialogVisible) {
+ Dialog(
+ onDismissRequest = { isFullscreenDialogVisible = false },
+ properties =
+ DialogProperties(
+ usePlatformDefaultWidth = false,
+ dismissOnClickOutside = true,
+ dismissOnBackPress = true
+ )
+ ) {
+ val parent = LocalView.current.parent
+
+ BrightenScreen()
+
+ FullscreenDialogContent(
+ state = state,
+ onBack = { isFullscreenDialogVisible = false },
+ )
+
+ SideEffect {
+ (parent as? DialogWindowProvider)?.window?.setDimAmount(FULLSCREEN_DIM)
+ }
+ }
+ }
+}
+
+@Composable
+private fun ZashiQrInternal(
+ state: QrState,
+ qrSize: Dp,
+ colors: QrCodeColors,
+ contentPadding: PaddingValues,
+ enableBitmapReload: Boolean,
+ centerImageResId: Int?,
+ tag: String,
+ modifier: Modifier = Modifier,
) {
val qrSizePx = with(LocalDensity.current) { qrSize.roundToPx() }
- val bitmap = getQrCode(state.qrData, qrSizePx, colors)
+ var bitmap: ImageBitmap? by remember {
+ Log.d(tag, "loaded")
+ mutableStateOf(getQrCode(state.qrData, qrSizePx, colors))
+ }
+
+ var reload by remember { mutableStateOf(false) }
+
+ LaunchedEffect(state.qrData, qrSizePx, colors) {
+ if (enableBitmapReload && reload) {
+ bitmap = getQrCode(state.qrData, qrSizePx, colors)
+ Log.d(tag, "launchedeffect")
+ }
+
+ reload = true
+ }
Surface(
modifier = modifier,
@@ -50,23 +135,25 @@ fun ZashiQr(
Box(
modifier = Modifier.padding(contentPadding)
) {
- Image(
- bitmap = bitmap,
- contentDescription = state.contentDescription?.getValue(),
- Modifier then
- if (state.onClick != null) {
- Modifier.clickable { state.onClick.invoke() }
- } else {
- Modifier
- }
- )
- if (state.centerImageResId != null) {
+ if (bitmap == null) {
+ Box(modifier = Modifier.size(qrSize))
+ } else {
+ bitmap?.let {
+ Image(
+ modifier = Modifier,
+ bitmap = it,
+ contentDescription = state.contentDescription?.getValue(),
+ )
+ }
+ }
+
+ if (centerImageResId != null) {
Image(
modifier =
Modifier
.size(64.dp)
.align(Alignment.Center),
- imageVector = ImageVector.vectorResource(state.centerImageResId),
+ painter = painterResource(centerImageResId),
contentDescription = null,
)
}
@@ -74,6 +161,43 @@ fun ZashiQr(
}
}
+@Composable
+private fun FullscreenDialogContent(
+ state: QrState,
+ onBack: () -> Unit
+) {
+ Box(
+ modifier =
+ Modifier
+ .fillMaxSize()
+ .clickable(
+ interactionSource = remember { MutableInteractionSource() },
+ indication = null,
+ onClick = onBack
+ )
+ .padding(start = 16.dp, end = 16.dp, bottom = 64.dp)
+ ) {
+ ZashiQrInternal(
+ modifier =
+ Modifier
+ .fillMaxWidth()
+ .align(Alignment.Center),
+ state = state,
+ contentPadding = PaddingValues(6.dp),
+ colors =
+ QrCodeDefaults.colors(
+ background = Color.White,
+ foreground = Color.Black,
+ border = Color.Unspecified
+ ),
+ qrSize = LocalConfiguration.current.screenWidthDp.dp - 44.dp,
+ enableBitmapReload = true,
+ centerImageResId = state.fullscreenCenterImageResId,
+ tag = "kktina 2"
+ )
+ }
+}
+
private fun getQrCode(
address: String,
size: Int,
@@ -109,6 +233,8 @@ object QrCodeDefaults {
data class QrState(
val qrData: String,
val contentDescription: StringResource? = null,
- val onClick: (() -> Unit)? = null,
val centerImageResId: Int? = null,
+ val fullscreenCenterImageResId: Int? = null,
)
+
+private const val FULLSCREEN_DIM = .9f
diff --git a/ui-design-lib/src/main/res/ui/common/drawable/ic_item_keystone_qr_white.xml b/ui-design-lib/src/main/res/ui/common/drawable/ic_item_keystone_qr_white.xml
new file mode 100644
index 000000000..05c78f999
--- /dev/null
+++ b/ui-design-lib/src/main/res/ui/common/drawable/ic_item_keystone_qr_white.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
diff --git a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenBrightnessTest.kt b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenBrightnessTest.kt
index 6d99d6d26..71a9e673c 100644
--- a/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenBrightnessTest.kt
+++ b/ui-lib/src/androidTest/java/co/electriccoin/zcash/ui/common/ScreenBrightnessTest.kt
@@ -8,10 +8,10 @@ import androidx.compose.ui.test.junit4.ComposeContentTestRule
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.test.filters.MediumTest
import co.electriccoin.zcash.test.UiTestPrerequisites
-import co.electriccoin.zcash.ui.common.compose.BrightenScreen
-import co.electriccoin.zcash.ui.common.compose.LocalScreenBrightness
-import co.electriccoin.zcash.ui.common.compose.ScreenBrightness
-import co.electriccoin.zcash.ui.common.compose.ScreenBrightnessState
+import co.electriccoin.zcash.ui.design.component.BrightenScreen
+import co.electriccoin.zcash.ui.design.component.LocalScreenBrightness
+import co.electriccoin.zcash.ui.design.component.ScreenBrightness
+import co.electriccoin.zcash.ui.design.component.ScreenBrightnessState
import co.electriccoin.zcash.ui.design.theme.ZcashTheme
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.update
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/Navigation.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/Navigation.kt
index 6da24dab3..7c0209cb9 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/Navigation.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/Navigation.kt
@@ -77,8 +77,6 @@ import co.electriccoin.zcash.ui.screen.feedback.WrapFeedback
import co.electriccoin.zcash.ui.screen.home.WrapHome
import co.electriccoin.zcash.ui.screen.integrations.WrapIntegrations
import co.electriccoin.zcash.ui.screen.qrcode.WrapQrCode
-import co.electriccoin.zcash.ui.screen.qrdialog.AndroidQrDialog
-import co.electriccoin.zcash.ui.screen.qrdialog.QrDialog
import co.electriccoin.zcash.ui.screen.receive.model.ReceiveAddressType
import co.electriccoin.zcash.ui.screen.request.WrapRequest
import co.electriccoin.zcash.ui.screen.reviewtransaction.AndroidReviewTransaction
@@ -427,16 +425,6 @@ internal fun MainActivity.Navigation() {
composable {
AndroidTransactionDetail(it.toRoute())
}
- dialog(
- dialogProperties =
- DialogProperties(
- dismissOnBackPress = false,
- dismissOnClickOutside = false,
- usePlatformDefaultWidth = false
- )
- ) {
- AndroidQrDialog(it.toRoute())
- }
}
}
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/compose/CompositionLocalBinder.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/compose/CompositionLocalBinder.kt
index 33100dbe9..fcd529967 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/compose/CompositionLocalBinder.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/common/compose/CompositionLocalBinder.kt
@@ -10,6 +10,9 @@ import cash.z.ecc.android.sdk.ext.collectWith
import co.electriccoin.zcash.spackle.EmulatorWtfUtil
import co.electriccoin.zcash.spackle.FirebaseTestLabUtil
import co.electriccoin.zcash.ui.MainActivity
+import co.electriccoin.zcash.ui.design.component.LocalScreenBrightness
+import co.electriccoin.zcash.ui.design.component.ScreenBrightness
+import co.electriccoin.zcash.ui.design.component.ScreenBrightnessState
import kotlinx.coroutines.flow.map
@Composable
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/AndroidHome.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/AndroidHome.kt
index d59a14e9a..c7660e021 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/AndroidHome.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/AndroidHome.kt
@@ -20,12 +20,12 @@ import co.electriccoin.zcash.di.koinActivityViewModel
import co.electriccoin.zcash.ui.HomeTabNavigationRouter
import co.electriccoin.zcash.ui.R
import co.electriccoin.zcash.ui.common.compose.LocalActivity
-import co.electriccoin.zcash.ui.common.compose.RestoreScreenBrightness
import co.electriccoin.zcash.ui.common.model.WalletRestoringState
import co.electriccoin.zcash.ui.common.model.WalletSnapshot
import co.electriccoin.zcash.ui.common.viewmodel.HomeViewModel
import co.electriccoin.zcash.ui.common.viewmodel.WalletViewModel
import co.electriccoin.zcash.ui.common.viewmodel.isSynced
+import co.electriccoin.zcash.ui.design.component.RestoreScreenBrightness
import co.electriccoin.zcash.ui.screen.account.WrapAccount
import co.electriccoin.zcash.ui.screen.balances.WrapBalances
import co.electriccoin.zcash.ui.screen.home.model.TabItem
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/model/QrCodeState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/model/QrCodeState.kt
index 59941f2b9..2da1d43a3 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/model/QrCodeState.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/model/QrCodeState.kt
@@ -13,17 +13,17 @@ sealed class QrCodeState {
val walletAddress: WalletAddress,
val onAddressCopy: (String) -> Unit,
val onQrCodeShare: (ImageBitmap) -> Unit,
- val onQrCodeClick: () -> Unit,
val onBack: () -> Unit,
) : QrCodeState() {
fun toQrState(
contentDescription: StringResource? = null,
- centerImageResId: Int? = null
+ centerImageResId: Int? = null,
+ fullscreenCenterImageResId: Int? = null
) = QrState(
qrData = walletAddress.address,
- onClick = onQrCodeClick,
contentDescription = contentDescription,
- centerImageResId = centerImageResId
+ centerImageResId = centerImageResId,
+ fullscreenCenterImageResId = fullscreenCenterImageResId
)
}
}
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/view/QrCodeView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/view/QrCodeView.kt
index d96e65e46..2f5379607 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/view/QrCodeView.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/view/QrCodeView.kt
@@ -86,7 +86,6 @@ private fun ZashiPreview() =
walletAddress = runBlocking { WalletAddressFixture.unified() },
onAddressCopy = {},
onQrCodeShare = {},
- onQrCodeClick = {},
onBack = {},
),
snackbarHostState = SnackbarHostState(),
@@ -105,7 +104,6 @@ private fun KeystonePreview() =
walletAddress = runBlocking { WalletAddressFixture.unified() },
onAddressCopy = {},
onQrCodeShare = {},
- onQrCodeClick = {},
onBack = {},
),
snackbarHostState = SnackbarHostState(),
@@ -438,6 +436,11 @@ private fun ColumnScope.QrCode(
when (preparedState.qrCodeType) {
QrCodeType.ZASHI -> R.drawable.logo_zec_fill_stroke
QrCodeType.KEYSTONE -> co.electriccoin.zcash.ui.design.R.drawable.ic_item_keystone_qr
+ },
+ fullscreenCenterImageResId =
+ when (preparedState.qrCodeType) {
+ QrCodeType.ZASHI -> R.drawable.logo_zec_fill_stroke_white
+ QrCodeType.KEYSTONE -> co.electriccoin.zcash.ui.design.R.drawable.ic_item_keystone_qr_white
}
),
modifier = modifier.align(CenterHorizontally),
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/viewmodel/QrCodeViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/viewmodel/QrCodeViewModel.kt
index 444b429b6..e7e42ee9c 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/viewmodel/QrCodeViewModel.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrcode/viewmodel/QrCodeViewModel.kt
@@ -21,7 +21,6 @@ import co.electriccoin.zcash.ui.common.usecase.ObserveSelectedWalletAccountUseCa
import co.electriccoin.zcash.ui.screen.qrcode.ext.fromReceiveAddressType
import co.electriccoin.zcash.ui.screen.qrcode.model.QrCodeState
import co.electriccoin.zcash.ui.screen.qrcode.model.QrCodeType
-import co.electriccoin.zcash.ui.screen.qrdialog.QrDialog
import co.electriccoin.zcash.ui.screen.receive.model.ReceiveAddressType
import co.electriccoin.zcash.ui.util.FileShareUtil
import kotlinx.coroutines.Dispatchers
@@ -58,13 +57,6 @@ class QrCodeViewModel(
walletAddress = walletAddress,
onAddressCopy = { address -> onAddressCopyClick(address) },
onQrCodeShare = { onQrCodeShareClick(it, versionInfo) },
- onQrCodeClick = {
- navigationRouter.forward(
- QrDialog(
- qr = walletAddress.address,
- )
- )
- },
onBack = ::onBack,
qrCodeType =
when (account) {
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrdialog/AndroidQrDialog.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrdialog/AndroidQrDialog.kt
deleted file mode 100644
index f1fb9ed02..000000000
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrdialog/AndroidQrDialog.kt
+++ /dev/null
@@ -1,37 +0,0 @@
-package co.electriccoin.zcash.ui.screen.qrdialog
-
-import androidx.activity.compose.BackHandler
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.SideEffect
-import androidx.compose.ui.platform.LocalView
-import androidx.compose.ui.window.DialogWindowProvider
-import co.electriccoin.zcash.ui.NavigationRouter
-import co.electriccoin.zcash.ui.design.component.QrState
-import org.koin.compose.koinInject
-
-@Composable
-fun AndroidQrDialog(arg: QrDialog) {
- val navigationRouter = koinInject()
-
- val parent = LocalView.current.parent
-
- SideEffect {
- (parent as? DialogWindowProvider)?.window?.setDimAmount(DIALOG_DIM)
- }
-
- BackHandler {
- navigationRouter.back()
- }
-
- QrDialogView(
- state =
- QrState(
- qrData = arg.qr,
- ),
- onBack = {
- navigationRouter.back()
- }
- )
-}
-
-private const val DIALOG_DIM = .8f
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrdialog/QrDialog.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrdialog/QrDialog.kt
deleted file mode 100644
index af8409cd2..000000000
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrdialog/QrDialog.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package co.electriccoin.zcash.ui.screen.qrdialog
-
-import kotlinx.serialization.Serializable
-
-@Serializable
-data class QrDialog(
- val qr: String,
-)
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrdialog/QrDialogView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrdialog/QrDialogView.kt
deleted file mode 100644
index cbe788918..000000000
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/qrdialog/QrDialogView.kt
+++ /dev/null
@@ -1,74 +0,0 @@
-package co.electriccoin.zcash.ui.screen.qrdialog
-
-import androidx.compose.foundation.clickable
-import androidx.compose.foundation.interaction.MutableInteractionSource
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.PaddingValues
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.remember
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.platform.LocalConfiguration
-import androidx.compose.ui.unit.dp
-import androidx.compose.ui.window.Dialog
-import co.electriccoin.zcash.ui.design.component.QrCodeDefaults
-import co.electriccoin.zcash.ui.design.component.QrState
-import co.electriccoin.zcash.ui.design.component.ZashiQr
-import co.electriccoin.zcash.ui.design.newcomponent.PreviewScreens
-import co.electriccoin.zcash.ui.design.theme.ZcashTheme
-
-@Composable
-fun QrDialogView(
- state: QrState,
- onBack: () -> Unit
-) {
- Box(
- modifier =
- Modifier
- .fillMaxSize()
- .clickable(
- interactionSource = remember { MutableInteractionSource() },
- indication = null,
- onClick = onBack
- )
- .padding(start = 16.dp, end = 16.dp, bottom = 64.dp)
- ) {
- ZashiQr(
- modifier =
- Modifier
- .fillMaxWidth()
- .align(Alignment.Center),
- state = state,
- qrSize = LocalConfiguration.current.screenWidthDp.dp - 44.dp,
- contentPadding = PaddingValues(6.dp),
- colors =
- QrCodeDefaults.colors(
- background = Color.White,
- foreground = Color.Black,
- border = Color.Unspecified
- )
- )
- }
-}
-
-@PreviewScreens
-@Composable
-private fun Preview() =
- ZcashTheme {
- Dialog(
- onDismissRequest = {}
- ) {
- QrDialogView(
- state =
- QrState(
- qrData = "test",
- centerImageResId = co.electriccoin.zcash.ui.design.R.drawable.ic_item_keystone_qr
- ),
- onBack = {}
- )
- }
- }
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/RequestState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/RequestState.kt
index 6d51b049f..854e819ff 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/RequestState.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/model/RequestState.kt
@@ -36,9 +36,9 @@ internal sealed class RequestState {
data class QrCode(
val icon: Int,
+ val fullScreenIcon: Int,
val request: Request,
val walletAddress: WalletAddress,
- val onQrCodeClick: () -> Unit,
val onQrCodeShare: (colors: QrCodeColors, pixels: Int, uri: String) -> Unit,
override val onBack: () -> Unit,
val onClose: () -> Unit,
@@ -47,11 +47,12 @@ internal sealed class RequestState {
fun toQrState(
contentDescription: StringResource? = null,
centerImageResId: Int? = null,
+ fullscreenCenterImageResId: Int? = null
) = QrState(
qrData = request.qrCodeState.requestUri,
- onClick = onQrCodeClick,
contentDescription = contentDescription,
- centerImageResId = centerImageResId
+ centerImageResId = centerImageResId,
+ fullscreenCenterImageResId = fullscreenCenterImageResId
)
}
}
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/view/RequestQrCodeView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/view/RequestQrCodeView.kt
index 3a98dd497..dfc715e2d 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/view/RequestQrCodeView.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/view/RequestQrCodeView.kt
@@ -101,7 +101,8 @@ private fun ColumnScope.QrCode(
state =
requestState.toQrState(
contentDescription = stringRes(R.string.request_qr_code_content_description),
- centerImageResId = requestState.icon
+ centerImageResId = requestState.icon,
+ fullscreenCenterImageResId = requestState.fullScreenIcon
),
modifier = modifier.align(CenterHorizontally),
)
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/viewmodel/RequestViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/viewmodel/RequestViewModel.kt
index 02ea95ac0..1d50d8759 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/viewmodel/RequestViewModel.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/request/viewmodel/RequestViewModel.kt
@@ -24,7 +24,6 @@ import co.electriccoin.zcash.ui.design.util.AndroidQrCodeImageGenerator
import co.electriccoin.zcash.ui.design.util.JvmQrCodeGenerator
import co.electriccoin.zcash.ui.design.util.QrCodeColors
import co.electriccoin.zcash.ui.screen.qrcode.ext.fromReceiveAddressType
-import co.electriccoin.zcash.ui.screen.qrdialog.QrDialog
import co.electriccoin.zcash.ui.screen.receive.model.ReceiveAddressType
import co.electriccoin.zcash.ui.screen.request.ext.convertToDouble
import co.electriccoin.zcash.ui.screen.request.model.AmountState
@@ -139,15 +138,15 @@ class RequestViewModel(
.ic_item_keystone_qr
is ZashiAccount -> R.drawable.logo_zec_fill_stroke
},
+ fullScreenIcon =
+ when (account) {
+ is KeystoneAccount ->
+ co.electriccoin.zcash.ui.design.R.drawable
+ .ic_item_keystone_qr_white
+ is ZashiAccount -> R.drawable.logo_zec_fill_stroke_white
+ },
walletAddress = walletAddress,
request = request,
- onQrCodeClick = {
- navigationRouter.forward(
- QrDialog(
- qr = request.qrCodeState.requestUri
- )
- )
- },
onQrCodeShare = { colors, pixels, uri ->
onShareQrCode(
colors = colors,
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/settings/viewmodel/ScreenBrightnessViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/settings/viewmodel/ScreenBrightnessViewModel.kt
index aa7007c13..bf5b5f69d 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/settings/viewmodel/ScreenBrightnessViewModel.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/settings/viewmodel/ScreenBrightnessViewModel.kt
@@ -2,7 +2,7 @@ package co.electriccoin.zcash.ui.screen.settings.viewmodel
import android.app.Application
import androidx.lifecycle.AndroidViewModel
-import co.electriccoin.zcash.ui.common.compose.ScreenBrightness
+import co.electriccoin.zcash.ui.design.component.ScreenBrightness
import kotlinx.coroutines.flow.MutableStateFlow
class ScreenBrightnessViewModel(application: Application) : AndroidViewModel(application) {
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/state/SignKeystoneTransactionState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/state/SignKeystoneTransactionState.kt
index 10f5c14d7..ea93eb294 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/state/SignKeystoneTransactionState.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/state/SignKeystoneTransactionState.kt
@@ -7,7 +7,6 @@ import co.electriccoin.zcash.ui.design.util.StringResource
data class SignKeystoneTransactionState(
val onBack: () -> Unit,
- val onQrCodeClick: () -> Unit,
val accountInfo: ZashiAccountInfoListItemState,
val qrData: String?,
val generateNextQrCode: () -> Unit,
@@ -22,7 +21,6 @@ data class SignKeystoneTransactionState(
requireNotNull(qrData) { "The QR code data needs to be set at this point" }
return QrState(
qrData = qrData,
- onClick = onQrCodeClick,
contentDescription = contentDescription,
centerImageResId = centerImageResId
)
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/view/SignKeystoneTransactionView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/view/SignKeystoneTransactionView.kt
index 49d586cd6..c4a9ef174 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/view/SignKeystoneTransactionView.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/view/SignKeystoneTransactionView.kt
@@ -192,7 +192,6 @@ private fun Preview() =
positiveButton = ButtonState(stringRes("Get Signature")),
negativeButton = ButtonState(stringRes("Reject")),
onBack = {},
- onQrCodeClick = {},
)
)
}
@@ -216,7 +215,6 @@ private fun DebugPreview() =
positiveButton = ButtonState(stringRes("Get Signature")),
negativeButton = ButtonState(stringRes("Reject")),
onBack = {},
- onQrCodeClick = {},
)
)
}
diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/viewmodel/SignKeystoneTransactionViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/viewmodel/SignKeystoneTransactionViewModel.kt
index ff44dbc77..9dcbe7f30 100644
--- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/viewmodel/SignKeystoneTransactionViewModel.kt
+++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/signkeystonetransaction/viewmodel/SignKeystoneTransactionViewModel.kt
@@ -15,7 +15,6 @@ import co.electriccoin.zcash.ui.common.usecase.SharePCZTUseCase
import co.electriccoin.zcash.ui.design.component.ButtonState
import co.electriccoin.zcash.ui.design.util.stringRes
import co.electriccoin.zcash.ui.screen.addressbook.viewmodel.ADDRESS_MAX_LENGTH
-import co.electriccoin.zcash.ui.screen.qrdialog.QrDialog
import co.electriccoin.zcash.ui.screen.scankeystone.ScanKeystonePCZTRequest
import co.electriccoin.zcash.ui.screen.signkeystonetransaction.state.SignKeystoneTransactionState
import co.electriccoin.zcash.ui.screen.signkeystonetransaction.state.ZashiAccountInfoListItemState
@@ -77,13 +76,6 @@ class SignKeystoneTransactionViewModel(
onClick = ::onSharePCZTClick
).takeIf { BuildConfig.DEBUG },
onBack = ::onBack,
- onQrCodeClick = {
- navigationRouter.forward(
- QrDialog(
- qr = qrData.orEmpty(),
- )
- )
- },
)
}.stateIn(viewModelScope, SharingStarted.WhileSubscribed(ANDROID_STATE_FLOW_TIMEOUT), null)
diff --git a/ui-lib/src/main/res/ui/qr_code/drawable/logo_zec_fill_stroke_white.xml b/ui-lib/src/main/res/ui/qr_code/drawable/logo_zec_fill_stroke_white.xml
new file mode 100644
index 000000000..eee50f2ec
--- /dev/null
+++ b/ui-lib/src/main/res/ui/qr_code/drawable/logo_zec_fill_stroke_white.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+