diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/mailbox/MailboxSetupScreen.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/mailbox/MailboxSetupScreen.kt index 8ea09bfd6ee793d3aa2f3f464645242425fdfe96..035f105ba1ba2542902ae14f438fff950360f040 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/mailbox/MailboxSetupScreen.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/mailbox/MailboxSetupScreen.kt @@ -20,13 +20,14 @@ package org.briarproject.briar.desktop.mailbox import androidx.compose.foundation.Image import androidx.compose.foundation.VerticalScrollbar -import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Arrangement.spacedBy import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredHeight import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.rememberScrollbarAdapter @@ -40,6 +41,7 @@ import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.ui.Alignment.Companion.Center import androidx.compose.ui.Alignment.Companion.CenterEnd import androidx.compose.ui.Alignment.Companion.CenterHorizontally import androidx.compose.ui.Alignment.Companion.End @@ -50,7 +52,6 @@ import androidx.compose.ui.unit.dp import org.briarproject.bramble.api.FormatException import org.briarproject.briar.desktop.mailbox.MailboxPairingUiState.NotSetup import org.briarproject.briar.desktop.ui.Constants.DIALOG_WIDTH -import org.briarproject.briar.desktop.ui.HorizontalDivider import org.briarproject.briar.desktop.utils.AccessibilityUtils.description import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n @@ -62,53 +63,72 @@ fun MailboxSetupScreen(viewModel: MailboxViewModel, showError: Boolean) { ) { viewModel.onPairingErrorSeen() } - Box { + Box( + contentAlignment = Center, + modifier = Modifier.fillMaxSize(), + ) { val scrollState = rememberScrollState() VerticalScrollbar( adapter = rememberScrollbarAdapter(scrollState), - modifier = Modifier.align(CenterEnd).fillMaxHeight() + modifier = Modifier.align(CenterEnd).fillMaxHeight(), ) - Column( - verticalArrangement = Arrangement.spacedBy(16.dp), - horizontalAlignment = CenterHorizontally, - modifier = Modifier.verticalScroll(scrollState).padding(16.dp).fillMaxSize(), + Row( + horizontalArrangement = spacedBy(32.dp, CenterHorizontally), + modifier = Modifier.fillMaxWidth().verticalScroll(scrollState), ) { val theme = if (MaterialTheme.colors.isLight) "light" else "dark" // NON-NLS - Image( - painter = painterResource("images/il_mailbox_$theme.svg"), // NON-NLS - contentDescription = i18n("access.logo"), - ) - Text( - text = i18n("mailbox.setup.intro"), - modifier = Modifier.widthIn(max = DIALOG_WIDTH), - ) - Image( - painter = painterResource("images/il_mailbox_setup_$theme.svg"), // NON-NLS - contentDescription = i18n("access.logo"), - ) - HorizontalDivider(Modifier.widthIn(max = DIALOG_WIDTH * 2)) - Text( - text = i18n("mailbox.setup.download"), - modifier = Modifier.widthIn(max = DIALOG_WIDTH).padding(top = 16.dp), - ) - Text( - text = i18n("mailbox.setup.link"), + Column( + verticalArrangement = spacedBy(16.dp), modifier = Modifier.widthIn(max = DIALOG_WIDTH), - ) - - val isInvalid = rememberSaveable { mutableStateOf(false) } - val onNameChanged = { changedName: String -> - viewModel.onPairingLinkChanged(changedName) - isInvalid.value = false + ) { + Image( + painter = painterResource("images/il_mailbox_$theme.svg"), // NON-NLS + contentDescription = null, + modifier = Modifier.align(CenterHorizontally), + ) + Text( + text = i18n("mailbox.setup.intro.title"), + style = MaterialTheme.typography.h5, + ) + Text( + text = i18n("mailbox.setup.intro"), + ) + Text( + text = i18n("mailbox.setup.download.title"), + style = MaterialTheme.typography.h5, + ) + Text( + text = i18n("mailbox.setup.download"), + ) } - val onOkButtonClicked = { - try { - viewModel.pairMailbox(viewModel.pairingLink.value) - } catch (e: FormatException) { - isInvalid.value = true + Column( + verticalArrangement = spacedBy(16.dp), + modifier = Modifier.widthIn(max = DIALOG_WIDTH), + ) { + Image( + painter = painterResource("images/il_mailbox_setup_$theme.svg"), // NON-NLS + contentDescription = null, + modifier = Modifier.align(CenterHorizontally), + ) + Text( + text = i18n("mailbox.setup.link.title"), + style = MaterialTheme.typography.h5, + ) + Text( + text = i18n("mailbox.setup.link"), + ) + val isInvalid = rememberSaveable { mutableStateOf(false) } + val onNameChanged = { changedName: String -> + viewModel.onPairingLinkChanged(changedName) + isInvalid.value = false + } + val onOkButtonClicked = { + try { + viewModel.pairMailbox(viewModel.pairingLink.value) + } catch (e: FormatException) { + isInvalid.value = true + } } - } - Column(Modifier.widthIn(max = DIALOG_WIDTH * 2)) { OutlinedTextField( value = viewModel.pairingLink.value, onValueChange = onNameChanged, @@ -119,6 +139,7 @@ fun MailboxSetupScreen(viewModel: MailboxViewModel, showError: Boolean) { errorMessage = i18n("mailbox.setup.link.error"), modifier = Modifier .fillMaxWidth() + .requiredHeight(96.dp) .description(i18n("mailbox.setup.hint")), ) if (viewModel.pairingUiState.value is NotSetup) Button( diff --git a/briar-desktop/src/main/resources/strings/BriarDesktop.properties b/briar-desktop/src/main/resources/strings/BriarDesktop.properties index 80dd5e2f3a09ef3dc8aa89de5693aaa73948f896..7f2d2194c5852dbe981ddd5bdf94bc56814df3cf 100644 --- a/briar-desktop/src/main/resources/strings/BriarDesktop.properties +++ b/briar-desktop/src/main/resources/strings/BriarDesktop.properties @@ -291,9 +291,12 @@ about.contact=Contact about.website=Website # Mailbox +mailbox.setup.intro.title=Mailbox mailbox.setup.intro=A Mailbox enables your contacts to send you messages while you are offline. The Mailbox will receive your messages and store them until you come online.\n\nYou can install the Briar Mailbox app on a spare device. Keep it connected to power and Wi-Fi so it's always online. +mailbox.setup.download.title=Install Briar Mailbox mailbox.setup.download=First, install the Mailbox app on another device by searching for "Briar Mailbox" on Google Play or wherever you downloaded Briar. -mailbox.setup.link=Then link your Mailbox with Briar by pasting the text from the mailbox app below.\n\nYou can find the text by tapping the little dots in the top right corner of the QR code screen and select "Show as text". +mailbox.setup.link.title=Mailbox setup +mailbox.setup.link=Link your Mailbox with Briar by pasting the text from the mailbox app below.\n\nTip: You can find the text by tapping the three dots in the top right corner of the QR code screen and select "Show as text". mailbox.setup.hint=briar-mailbox:// text mailbox.setup.button=Link Mailbox mailbox.setup.link.error=Invalid mailbox text