diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/card/CreditCardFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/card/CreditCardFragment.kt index 31672af480..196f272b1c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/card/CreditCardFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/card/CreditCardFragment.kt @@ -65,13 +65,13 @@ class CreditCardFragment : Fragment(R.layout.credit_card_fragment) { } } - binding.title.text = if (args.request.donateToSignalType == DonateToSignalType.MONTHLY) { + binding.continueButton.text = if (args.request.donateToSignalType == DonateToSignalType.MONTHLY) { getString( - R.string.CreditCardFragment__donation_amount_s_per_month, + R.string.CreditCardFragment__donate_s_month, FiatMoneyUtil.format(resources, args.request.fiat, FiatMoneyUtil.formatOptions().trimZerosAfterDecimal()) ) } else { - getString(R.string.CreditCardFragment__donation_amount_s, FiatMoneyUtil.format(resources, args.request.fiat)) + getString(R.string.CreditCardFragment__donate_s, FiatMoneyUtil.format(resources, args.request.fiat)) } binding.description.setLinkColor(ContextCompat.getColor(requireContext(), R.color.signal_colorPrimary)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/transfer/details/BankTransferDetailsFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/transfer/details/BankTransferDetailsFragment.kt index f40fa5ecd0..49cc32c154 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/transfer/details/BankTransferDetailsFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/transfer/details/BankTransferDetailsFragment.kt @@ -195,7 +195,7 @@ private fun BankTransferDetailsContent( onUrlClick = { onLearnMoreClick() }, - style = MaterialTheme.typography.bodyLarge.copy( + style = MaterialTheme.typography.bodyMedium.copy( color = MaterialTheme.colorScheme.onSurfaceVariant ), modifier = Modifier.padding(vertical = 12.dp) diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/transfer/mandate/BankTransferMandateFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/transfer/mandate/BankTransferMandateFragment.kt index e7ca49c4cb..dfb7f4cdd0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/transfer/mandate/BankTransferMandateFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/subscription/donate/transfer/mandate/BankTransferMandateFragment.kt @@ -5,6 +5,11 @@ package org.thoughtcrime.securesms.components.settings.app.subscription.donate.transfer.mandate +import android.os.Bundle +import android.view.View +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.defaultMinSize @@ -22,7 +27,9 @@ import androidx.compose.ui.Alignment.Companion.CenterHorizontally import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.graphics.vector.rememberVectorPainter +import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource @@ -38,6 +45,7 @@ import org.signal.core.ui.Texts import org.signal.core.ui.theme.SignalTheme import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.compose.ComposeFragment +import org.thoughtcrime.securesms.compose.StatusBarColorNestedScrollConnection import org.thoughtcrime.securesms.util.SpanUtil import org.thoughtcrime.securesms.util.navigation.safeNavigate @@ -48,6 +56,16 @@ class BankTransferMandateFragment : ComposeFragment() { private val args: BankTransferMandateFragmentArgs by navArgs() private val viewModel: BankTransferMandateViewModel by viewModels() + private lateinit var statusBarColorNestedScrollConnection: StatusBarColorNestedScrollConnection + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + statusBarColorNestedScrollConnection = StatusBarColorNestedScrollConnection(requireActivity()) + } + + override fun onResume() { + super.onResume() + statusBarColorNestedScrollConnection.setColorImmediate() + } @Composable override fun FragmentContent() { @@ -57,7 +75,8 @@ class BankTransferMandateFragment : ComposeFragment() { bankMandate = mandate, onNavigationClick = this::onNavigationClick, onContinueClick = this::onContinueClick, - onLearnMoreClick = this::onLearnMoreClick + onLearnMoreClick = this::onLearnMoreClick, + modifier = Modifier.nestedScroll(statusBarColorNestedScrollConnection) ) } @@ -96,12 +115,23 @@ fun BankTransferScreen( bankMandate: String, onNavigationClick: () -> Unit, onContinueClick: () -> Unit, - onLearnMoreClick: () -> Unit + onLearnMoreClick: () -> Unit, + modifier: Modifier = Modifier ) { Scaffolds.Settings( - title = "", + title = stringResource(id = R.string.BankTransferMandateFragment__bank_transfer), onNavigationClick = onNavigationClick, - navigationIconPainter = rememberVectorPainter(ImageVector.vectorResource(id = R.drawable.symbol_arrow_left_24)) + navigationIconPainter = rememberVectorPainter(ImageVector.vectorResource(id = R.drawable.symbol_arrow_left_24)), + titleContent = { contentOffset, title -> + AnimatedVisibility( + visible = contentOffset < 0f, + enter = fadeIn(), + exit = fadeOut() + ) { + Text(text = title, style = MaterialTheme.typography.titleLarge) + } + }, + modifier = modifier ) { LazyColumn( horizontalAlignment = CenterHorizontally, @@ -112,7 +142,7 @@ fun BankTransferScreen( ) { item { Image( - painter = painterResource(id = R.drawable.credit_card), // TODO [alex] -- final asset + painter = painterResource(id = R.drawable.bank_transfer), contentScale = ContentScale.Inside, contentDescription = null, modifier = Modifier @@ -144,7 +174,9 @@ fun BankTransferScreen( style = MaterialTheme.typography.bodyLarge.copy( color = MaterialTheme.colorScheme.onSurfaceVariant ), - modifier = Modifier.padding(bottom = 12.dp, start = 32.dp, end = 32.dp) + modifier = Modifier + .padding(bottom = 12.dp) + .padding(horizontal = dimensionResource(id = R.dimen.bank_transfer_mandate_gutter)) ) } @@ -156,7 +188,7 @@ fun BankTransferScreen( Text( text = bankMandate, color = MaterialTheme.colorScheme.onSurfaceVariant, - modifier = Modifier.padding(horizontal = 32.dp, vertical = 16.dp) + modifier = Modifier.padding(horizontal = dimensionResource(id = R.dimen.bank_transfer_mandate_gutter), vertical = 16.dp) ) } diff --git a/app/src/main/res/layout/credit_card_fragment.xml b/app/src/main/res/layout/credit_card_fragment.xml index 7e05ee4d3a..1b31a3f948 100644 --- a/app/src/main/res/layout/credit_card_fragment.xml +++ b/app/src/main/res/layout/credit_card_fragment.xml @@ -1,7 +1,6 @@ @@ -17,35 +16,26 @@ app:layout_constraintTop_toTopOf="parent" app:navigationContentDescription="@string/DSLSettingsToolbar__navigate_up" app:navigationIcon="@drawable/ic_arrow_left_24" + app:title="@string/CreditCardFragment__credit_or_debit_card" app:titleTextAppearance="@style/Signal.Text.TitleLarge" /> - - + app:layout_constraintTop_toBottomOf="@id/toolbar" /> diff --git a/app/src/main/res/values-sw360dp/dimens.xml b/app/src/main/res/values-sw360dp/dimens.xml index 4f91695c2c..ac2265aee2 100644 --- a/app/src/main/res/values-sw360dp/dimens.xml +++ b/app/src/main/res/values-sw360dp/dimens.xml @@ -15,6 +15,7 @@ 92dp 48dp + 32dp 260dp 24dp 22dp diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index e068d93aeb..f33bd73ed6 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -170,6 +170,7 @@ 49dp 32dp + 16dp 16dp 14dp 2dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 16c334df86..df77c665ca 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -120,11 +120,8 @@ Block - - Donation amount: %1$s - - Donation amount: %1$s/month - + + Credit or debit card Enter your card details. Signal does not collect or store your personal information. @@ -149,8 +146,10 @@ Year required Invalid year - - Continue + + Donate %1$s + + Donate %1$s/month Block and leave %1$s? diff --git a/core-ui/src/main/java/org/signal/core/ui/Scaffolds.kt b/core-ui/src/main/java/org/signal/core/ui/Scaffolds.kt index 558d31a398..fb723c85a3 100644 --- a/core-ui/src/main/java/org/signal/core/ui/Scaffolds.kt +++ b/core-ui/src/main/java/org/signal/core/ui/Scaffolds.kt @@ -25,6 +25,9 @@ import org.signal.core.ui.theme.SignalTheme @OptIn(ExperimentalMaterial3Api::class) object Scaffolds { + /** + * @param titleContent The title area content. First parameter is the contentOffset. + */ @Composable fun Settings( title: String, @@ -32,6 +35,9 @@ object Scaffolds { navigationIconPainter: Painter, modifier: Modifier = Modifier, navigationContentDescription: String? = null, + titleContent: @Composable (Float, String) -> Unit = { _, title -> + Text(text = title, style = MaterialTheme.typography.titleLarge) + }, content: @Composable (PaddingValues) -> Unit ) { val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior() @@ -40,10 +46,7 @@ object Scaffolds { topBar = { TopAppBar( title = { - Text( - text = title, - style = MaterialTheme.typography.titleLarge - ) + titleContent(scrollBehavior.state.contentOffset, title) }, navigationIcon = { IconButton( @@ -57,7 +60,7 @@ object Scaffolds { } }, scrollBehavior = scrollBehavior, - colors = TopAppBarDefaults.smallTopAppBarColors( + colors = TopAppBarDefaults.topAppBarColors( scrolledContainerColor = SignalTheme.colors.colorSurface2 ) )