diff --git a/app/src/main/java/org/thoughtcrime/securesms/onboarding/LoadingActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/onboarding/LoadingActivity.kt index af1b551631..4492cbe4f2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/onboarding/LoadingActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/onboarding/LoadingActivity.kt @@ -33,7 +33,9 @@ import org.thoughtcrime.securesms.onboarding.messagenotifications.startMessageNo import org.thoughtcrime.securesms.onboarding.pickname.startPickDisplayNameActivity import org.thoughtcrime.securesms.ui.AppTheme import org.thoughtcrime.securesms.ui.ProgressArc +import org.thoughtcrime.securesms.ui.base import org.thoughtcrime.securesms.ui.contentDescription +import org.thoughtcrime.securesms.ui.h7 import org.thoughtcrime.securesms.util.setUpActionBarSessionLogo import javax.inject.Inject @@ -104,11 +106,20 @@ class LoadingActivity: BaseActionBarActivity() { } AppTheme { - Column { + Column(horizontalAlignment = Alignment.CenterHorizontally) { Spacer(modifier = Modifier.weight(1f)) - ProgressArc(animatable.value, modifier = Modifier.align(Alignment.CenterHorizontally).contentDescription(R.string.AccessibilityId_loading_animation)) - Text(stringResource(R.string.waitOneMoment), modifier = Modifier.align(Alignment.CenterHorizontally), style = MaterialTheme.typography.h6) - Text(stringResource(R.string.loadAccountProgressMessage), modifier = Modifier.align(Alignment.CenterHorizontally)) + ProgressArc( + animatable.value, + modifier = Modifier.contentDescription(R.string.AccessibilityId_loading_animation) + ) + Text( + stringResource(R.string.waitOneMoment), + style = MaterialTheme.typography.h7 + ) + Text( + stringResource(R.string.loadAccountProgressMessage), + style = MaterialTheme.typography.base + ) Spacer(modifier = Modifier.weight(2f)) } } 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 31f2f39c7d..3b2ac331b3 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 @@ -40,6 +40,7 @@ import org.thoughtcrime.securesms.notifications.PushRegistry import org.thoughtcrime.securesms.ui.AppTheme import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.ThemeResPreviewParameterProvider +import org.thoughtcrime.securesms.ui.base import org.thoughtcrime.securesms.ui.components.OutlineButton import org.thoughtcrime.securesms.ui.contentDescription import org.thoughtcrime.securesms.ui.h8 @@ -106,7 +107,7 @@ fun MessageNotificationsScreen( Spacer(Modifier.weight(1f)) Text(stringResource(R.string.notificationsMessage), style = MaterialTheme.typography.h4) Spacer(Modifier.height(16.dp)) - Text(stringResource(R.string.onboardingMessageNotificationExplaination)) + Text(stringResource(R.string.onboardingMessageNotificationExplaination), style = MaterialTheme.typography.base) Spacer(Modifier.height(16.dp)) NotificationRadioButton( R.string.activity_pn_mode_fast_mode, diff --git a/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameActivity.kt index 36a2f6f99d..3808eda2c2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameActivity.kt @@ -7,6 +7,7 @@ import androidx.activity.viewModels import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape @@ -37,10 +38,12 @@ import org.thoughtcrime.securesms.BaseActionBarActivity import org.thoughtcrime.securesms.onboarding.messagenotifications.MessageNotificationsActivity import org.thoughtcrime.securesms.onboarding.messagenotifications.startMessageNotificationsActivity import org.thoughtcrime.securesms.ui.AppTheme +import org.thoughtcrime.securesms.ui.GetString import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.base import org.thoughtcrime.securesms.ui.baseBold import org.thoughtcrime.securesms.ui.components.OutlineButton +import org.thoughtcrime.securesms.ui.components.SessionOutlinedTextField import org.thoughtcrime.securesms.ui.contentDescription import org.thoughtcrime.securesms.ui.outlinedTextFieldColors import org.thoughtcrime.securesms.util.setUpActionBarSessionLogo @@ -106,32 +109,17 @@ class PickDisplayNameActivity : BaseActionBarActivity() { style = MaterialTheme.typography.base, modifier = Modifier.padding(bottom = 12.dp)) - OutlinedTextField( - value = state.displayName, - modifier = Modifier.contentDescription(R.string.AccessibilityId_enter_display_name), - onValueChange = { onChange(it) }, - placeholder = { Text(stringResource(R.string.displayNameEnter)) }, - colors = outlinedTextFieldColors(state.error != null), - singleLine = true, - keyboardActions = KeyboardActions( - onDone = { onContinue() }, - onGo = { onContinue() }, - onSearch = { onContinue() }, - onSend = { onContinue() }, - ), - isError = state.error != null, - shape = RoundedCornerShape(12.dp) + SessionOutlinedTextField( + text = state.displayName, + modifier = Modifier + .fillMaxWidth() + .contentDescription(R.string.AccessibilityId_enter_display_name), + placeholder = stringResource(R.string.displayNameEnter), + onChange = onChange, + onContinue = onContinue, + error = state.error?.let { stringResource(it) } ) - state.error?.let { - Text( - stringResource(it), - modifier = Modifier.contentDescription(R.string.AccessibilityId_error_message), - style = MaterialTheme.typography.baseBold, - color = MaterialTheme.colors.error - ) - } - Spacer(modifier = Modifier.weight(2f)) OutlineButton( diff --git a/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameViewModel.kt index 3da9bcf31a..62f64fe884 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/onboarding/pickname/PickDisplayNameViewModel.kt @@ -73,7 +73,8 @@ class PickDisplayNameViewModel( } fun onChange(value: String) { - state.update { state -> state.copy( + state.update { state -> + state.copy( displayName = value, error = value.takeIf { it.length > NAME_PADDED_LENGTH }?.let { R.string.displayNameErrorDescriptionShorter } ) 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 c744b7469c..b0a2a48e7e 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 @@ -26,7 +26,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter @@ -41,6 +40,7 @@ import org.thoughtcrime.securesms.ui.PreviewTheme import org.thoughtcrime.securesms.ui.SessionShieldIcon import org.thoughtcrime.securesms.ui.ThemeResPreviewParameterProvider import org.thoughtcrime.securesms.ui.base +import org.thoughtcrime.securesms.ui.baseBold import org.thoughtcrime.securesms.ui.classicDarkColors import org.thoughtcrime.securesms.ui.components.DestructiveButtons import org.thoughtcrime.securesms.ui.components.OutlineButton @@ -49,7 +49,7 @@ import org.thoughtcrime.securesms.ui.components.QrImage import org.thoughtcrime.securesms.ui.components.SmallButtons import org.thoughtcrime.securesms.ui.contentDescription import org.thoughtcrime.securesms.ui.h8 -import org.thoughtcrime.securesms.ui.small +import org.thoughtcrime.securesms.ui.smallMonospace class RecoveryPasswordActivity : BaseActionBarActivity() { @@ -135,14 +135,20 @@ fun RecoveryPasswordCell(seed: String, copySeed:() -> Unit = {}) { CellWithPaddingAndMargin { Column { Row { - Text(stringResource(R.string.sessionRecoveryPassword), style = MaterialTheme.typography.h8) - Spacer(Modifier.width(8.dp)) + Text( + stringResource(R.string.sessionRecoveryPassword), + style = MaterialTheme.typography.h8 + ) + Spacer(Modifier.width(LocalDimensions.current.itemSpacingExtraSmall)) SessionShieldIcon() } Spacer(modifier = Modifier.height(LocalDimensions.current.marginTiny)) - Text(stringResource(R.string.recoveryPasswordDescription), style = MaterialTheme.typography.base) + Text( + stringResource(R.string.recoveryPasswordDescription), + style = MaterialTheme.typography.base + ) AnimatedVisibility(!showQr) { RecoveryPassword(seed) @@ -155,7 +161,7 @@ fun RecoveryPasswordCell(seed: String, copySeed:() -> Unit = {}) { QrImage( seed, modifier = Modifier - .padding(vertical = 24.dp) + .padding(vertical = LocalDimensions.current.marginSmall) .contentDescription(R.string.AccessibilityId_qr_code), icon = R.drawable.session_shield ) @@ -169,9 +175,16 @@ fun RecoveryPasswordCell(seed: String, copySeed:() -> Unit = {}) { .contentDescription(R.string.AccessibilityId_copy_button), onClick = copySeed ) { isTemporary -> - Text(stringResource( if (isTemporary) R.string.copied else R.string.copy)) + Text( + stringResource( if (isTemporary) R.string.copied else R.string.copy), + style = MaterialTheme.typography.baseBold + ) } - OutlineButton(textId = R.string.qrView, modifier = Modifier.weight(1f), onClick = { showQr = !showQr }) + OutlineButton( + textId = R.string.qrView, + modifier = Modifier.weight(1f), + onClick = { showQr = !showQr } + ) } } @@ -191,15 +204,15 @@ private fun RecoveryPassword(seed: String) { seed, modifier = Modifier .contentDescription(R.string.AccessibilityId_recovery_password_container) - .padding(vertical = 24.dp) + .padding(vertical = LocalDimensions.current.marginSmall) .border( width = 1.dp, color = classicDarkColors[3], shape = RoundedCornerShape(11.dp) ) - .padding(24.dp), + .padding(LocalDimensions.current.marginSmall), textAlign = TextAlign.Center, - style = MaterialTheme.typography.small.copy(fontFamily = FontFamily.Monospace), + style = MaterialTheme.typography.smallMonospace, color = MaterialTheme.colors.run { if (isLight) onSurface else secondary }, ) } @@ -211,8 +224,14 @@ private fun HideRecoveryPasswordCell(onHide: () -> Unit = {}) { Column( Modifier.weight(1f) ) { - Text(text = stringResource(R.string.recoveryPasswordHideRecoveryPassword), style = MaterialTheme.typography.h8) - Text(text = stringResource(R.string.recoveryPasswordHideRecoveryPasswordDescription)) + Text( + stringResource(R.string.recoveryPasswordHideRecoveryPassword), + style = MaterialTheme.typography.h8 + ) + Text( + stringResource(R.string.recoveryPasswordHideRecoveryPasswordDescription), + style = MaterialTheme.typography.base + ) } DestructiveButtons { OutlineButton( 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 454c123dbd..ee36ea82c4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/preferences/SettingsActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/preferences/SettingsActivity.kt @@ -23,6 +23,7 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.material.MaterialTheme import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect @@ -79,6 +80,7 @@ import org.thoughtcrime.securesms.ui.Cell import org.thoughtcrime.securesms.ui.Divider import org.thoughtcrime.securesms.ui.ItemButton import org.thoughtcrime.securesms.ui.ItemButtonWithDrawable +import org.thoughtcrime.securesms.ui.baseBold import org.thoughtcrime.securesms.ui.components.OutlineButton import org.thoughtcrime.securesms.ui.components.OutlineTemporaryStateButton import org.thoughtcrime.securesms.ui.contentDescription @@ -394,18 +396,20 @@ class SettingsActivity : PassphraseRequiredActionBarActivity() { horizontalArrangement = Arrangement.spacedBy(16.dp), ) { OutlineButton( + stringResource(R.string.share), modifier = Modifier.weight(1f), onClick = { sendInvitationToUseSession() } - ) { - Text(stringResource(R.string.share)) - } + ) OutlineTemporaryStateButton( modifier = Modifier.weight(1f) .contentDescription(R.string.AccessibilityId_copy_button), onClick = { copyPublicKey() }, ) { isTemporary -> - Text(stringResource(if (isTemporary) R.string.copied else R.string.copy)) + Text( + stringResource(if (isTemporary) R.string.copied else R.string.copy), + style = MaterialTheme.typography.baseBold + ) } } 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 0ba995351c..ca41cf7369 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt @@ -91,7 +91,10 @@ data class RadioOption( @Composable fun OptionsCard(card: OptionsCard, callbacks: Callbacks) { - Text(text = card.title()) + Text( + card.title(), + style = MaterialTheme.typography.base + ) CellNoMargin { LazyColumn( modifier = Modifier.heightIn(max = 5000.dp) @@ -348,7 +351,12 @@ fun ProgressArc(progress: Float, modifier: Modifier = Modifier) { Box(modifier = modifier) { Arc(percentage = progress, modifier = Modifier.align(Alignment.Center)) - Text("${text}%", color = Color.White, modifier = Modifier.align(Alignment.Center), style = MaterialTheme.typography.h2) + Text( + "${text}%", + color = Color.White, + modifier = Modifier.align(Alignment.Center), + style = MaterialTheme.typography.h2 + ) } } 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 b0339038f9..a90e2fc0dc 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/Themes.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/Themes.kt @@ -143,6 +143,7 @@ val Typography.base get() = defaultStyle(14.sp) val Typography.baseBold get() = boldStyle(14.sp) val Typography.baseMonospace get() = defaultStyle(14.sp).copy(fontFamily = FontFamily.Monospace) val Typography.small get() = defaultStyle(12.sp) +val Typography.smallMonospace get() = defaultStyle(12.sp).copy(fontFamily = FontFamily.Monospace) val Typography.extraSmall get() = defaultStyle(11.sp) val Typography.fine get() = defaultStyle(9.sp) 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 fc8c4b887b..ce9e9115a8 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 @@ -56,6 +56,7 @@ import kotlinx.coroutines.flow.buffer import kotlinx.coroutines.flow.filter import network.loki.messenger.R import org.session.libsignal.utilities.Log +import org.thoughtcrime.securesms.ui.base import java.util.concurrent.Executors private const val TAG = "NewMessageFragment" @@ -89,23 +90,22 @@ fun MaybeScanQrCode( ) { Text( stringResource(R.string.activity_link_camera_permission_permanently_denied_configure_in_settings), + style = MaterialTheme.typography.base, textAlign = TextAlign.Center ) Spacer(modifier = Modifier.size(20.dp)) OutlineButton( + stringResource(R.string.sessionSettings), modifier = Modifier.align(Alignment.CenterHorizontally), onClick = onClickSettings - ) { - Text(stringResource(R.string.sessionSettings)) - } + ) } } else { OutlineButton( + stringResource(R.string.cameraGrantAccess), modifier = Modifier.align(Alignment.Center), onClick = { cameraPermissionState.run { launchPermissionRequest() } } - ) { - Text(stringResource(R.string.cameraGrantAccess)) - } + ) } } } @@ -117,8 +117,8 @@ fun ScanQrCode(errors: Flow, onScan: (String) -> Unit) { val preview = Preview.Builder().build() val selector = CameraSelector.Builder() - .requireLensFacing(CameraSelector.LENS_FACING_BACK) - .build() + .requireLensFacing(CameraSelector.LENS_FACING_BACK) + .build() runCatching { cameraProvider.get().unbindAll() 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 7374f9ac84..be4c6c0209 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 @@ -12,6 +12,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp +import org.thoughtcrime.securesms.ui.LocalDimensions import org.thoughtcrime.securesms.ui.base import org.thoughtcrime.securesms.ui.baseBold import org.thoughtcrime.securesms.ui.outlinedTextFieldColors @@ -51,7 +52,7 @@ fun SessionOutlinedTextField( error?.let { Text( it, - modifier = Modifier.padding(top = 12.dp), + modifier = Modifier.padding(top = LocalDimensions.current.marginExtraExtraSmall), textAlign = TextAlign.Center, style = MaterialTheme.typography.baseBold, color = MaterialTheme.colors.error