Repackage Loading and MessageNotifications
parent
c6952cfcc1
commit
b18561acb4
@ -0,0 +1,48 @@
|
||||
package org.thoughtcrime.securesms.onboarding.loading
|
||||
|
||||
import androidx.compose.animation.core.Animatable
|
||||
import androidx.compose.animation.core.TweenSpec
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.LaunchedEffect
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import network.loki.messenger.R
|
||||
import org.thoughtcrime.securesms.ui.ProgressArc
|
||||
import org.thoughtcrime.securesms.ui.base
|
||||
import org.thoughtcrime.securesms.ui.contentDescription
|
||||
import org.thoughtcrime.securesms.ui.h7
|
||||
|
||||
@Composable
|
||||
fun LoadingScreen(state: State) {
|
||||
val animatable = remember { Animatable(initialValue = 0f, visibilityThreshold = 0.005f) }
|
||||
|
||||
LaunchedEffect(state) {
|
||||
animatable.stop()
|
||||
animatable.animateTo(
|
||||
targetValue = 1f,
|
||||
animationSpec = TweenSpec(durationMillis = state.duration.inWholeMilliseconds.toInt())
|
||||
)
|
||||
}
|
||||
|
||||
Column(horizontalAlignment = Alignment.CenterHorizontally) {
|
||||
Spacer(modifier = Modifier.weight(1f))
|
||||
ProgressArc(
|
||||
animatable.value,
|
||||
modifier = Modifier.contentDescription(R.string.AccessibilityId_loading_animation)
|
||||
)
|
||||
Text(
|
||||
stringResource(R.string.waitOneMoment),
|
||||
style = h7
|
||||
)
|
||||
Text(
|
||||
stringResource(R.string.loadAccountProgressMessage),
|
||||
style = base
|
||||
)
|
||||
Spacer(modifier = Modifier.weight(2f))
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package org.thoughtcrime.securesms.onboarding
|
||||
package org.thoughtcrime.securesms.onboarding.loading
|
||||
|
||||
import android.content.Context
|
||||
import androidx.lifecycle.ViewModel
|
@ -0,0 +1,79 @@
|
||||
package org.thoughtcrime.securesms.onboarding.messagenotifications
|
||||
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material.Text
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import network.loki.messenger.R
|
||||
import org.thoughtcrime.securesms.ui.LocalDimensions
|
||||
import org.thoughtcrime.securesms.ui.PreviewTheme
|
||||
import org.thoughtcrime.securesms.ui.SessionColorsParameterProvider
|
||||
import org.thoughtcrime.securesms.ui.base
|
||||
import org.thoughtcrime.securesms.ui.color.Colors
|
||||
import org.thoughtcrime.securesms.ui.components.NotificationRadioButton
|
||||
import org.thoughtcrime.securesms.ui.components.OutlineButton
|
||||
import org.thoughtcrime.securesms.ui.contentDescription
|
||||
import org.thoughtcrime.securesms.ui.h4
|
||||
|
||||
|
||||
@Preview
|
||||
@Composable
|
||||
fun MessageNotificationsScreenPreview(
|
||||
@PreviewParameter(SessionColorsParameterProvider::class) colors: Colors
|
||||
) {
|
||||
PreviewTheme(colors) {
|
||||
MessageNotificationsScreen()
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun MessageNotificationsScreen(
|
||||
state: MessageNotificationsState = MessageNotificationsState(),
|
||||
setEnabled: (Boolean) -> Unit = {},
|
||||
onContinue: () -> Unit = {}
|
||||
) {
|
||||
Column {
|
||||
Spacer(Modifier.weight(1f))
|
||||
Column(modifier = Modifier.padding(horizontal = LocalDimensions.current.marginMedium)) {
|
||||
Text(stringResource(R.string.notificationsMessage), style = h4)
|
||||
Spacer(Modifier.height(LocalDimensions.current.marginExtraSmall))
|
||||
Text(stringResource(R.string.onboardingMessageNotificationExplaination), style = base)
|
||||
Spacer(Modifier.height(LocalDimensions.current.marginExtraSmall))
|
||||
NotificationRadioButton(
|
||||
R.string.activity_pn_mode_fast_mode,
|
||||
R.string.activity_pn_mode_fast_mode_explanation,
|
||||
R.string.activity_pn_mode_recommended_option_tag,
|
||||
contentDescription = R.string.AccessibilityId_fast_mode_notifications_button,
|
||||
selected = state.pushEnabled,
|
||||
onClick = { setEnabled(true) }
|
||||
)
|
||||
Spacer(Modifier.height(LocalDimensions.current.marginExtraSmall))
|
||||
NotificationRadioButton(
|
||||
R.string.activity_pn_mode_slow_mode,
|
||||
R.string.activity_pn_mode_slow_mode_explanation,
|
||||
contentDescription = R.string.AccessibilityId_slow_mode_notifications_button,
|
||||
selected = state.pushDisabled,
|
||||
onClick = { setEnabled(false) }
|
||||
)
|
||||
}
|
||||
Spacer(Modifier.weight(1f))
|
||||
OutlineButton(
|
||||
stringResource(R.string.continue_2),
|
||||
modifier = Modifier
|
||||
.padding(horizontal = LocalDimensions.current.marginLarge)
|
||||
.contentDescription(R.string.AccessibilityId_continue)
|
||||
.align(Alignment.CenterHorizontally)
|
||||
.fillMaxWidth(),
|
||||
onClick = onContinue
|
||||
)
|
||||
Spacer(modifier = Modifier.height(LocalDimensions.current.marginExtraExtraSmall))
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue