diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 2e809690..38448568 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -35,7 +35,7 @@ android { applicationId = "ltd.grunt.brainwallet" minSdk = 29 targetSdk = 35 - versionCode = 202506324 + versionCode = 202506325 versionName = "v4.9.1" multiDexEnabled = true base.archivesName.set("${defaultConfig.versionName}(${defaultConfig.versionCode})") diff --git a/app/src/main/java/com/brainwallet/navigation/Route.kt b/app/src/main/java/com/brainwallet/navigation/Route.kt index 06726ae1..59b916f7 100644 --- a/app/src/main/java/com/brainwallet/navigation/Route.kt +++ b/app/src/main/java/com/brainwallet/navigation/Route.kt @@ -52,6 +52,12 @@ sealed class Route : JavaSerializable { @Serializable object Send : Route() + @Serializable + object TutorialWalkthrough : Route() + + @Serializable + object TutorialSend : Route() + @Serializable object GameHub : Route() diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialBentoEvent.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialBentoEvent.kt new file mode 100644 index 00000000..c05be7dd --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialBentoEvent.kt @@ -0,0 +1,7 @@ +package com.brainwallet.ui.bentosections.tutorials + +sealed class TutorialBentoEvent { + data object OnLoad : TutorialBentoEvent() + data object OnTapGeneralTutorial : TutorialBentoEvent() + data object OnTapSendTutorial : TutorialBentoEvent() +} diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialBentoState.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialBentoState.kt new file mode 100644 index 00000000..9cfc009c --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialBentoState.kt @@ -0,0 +1,5 @@ +package com.brainwallet.ui.bentosections.tutorials + +data class TutorialBentoState( + val darkMode: Boolean = true +) diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialGeneralBentoScreen.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialGeneralBentoScreen.kt new file mode 100644 index 00000000..fd6dad0f --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialGeneralBentoScreen.kt @@ -0,0 +1,121 @@ +package com.brainwallet.ui.bentosections.tutorials +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.pager.rememberPagerState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +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.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.PreviewLightDark +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.brainwallet.R +import com.brainwallet.ui.theme.IBMPlexSans + +@Composable +fun TutorialGeneralBentoScreen( + tutorialBentoState: TutorialBentoState, + modifier: Modifier = Modifier, + onClick: () -> Unit = {} +) { + val hubPageCount = 3 + val pagerState = rememberPagerState(pageCount = { hubPageCount }) + var resizedDescriptionFontSize by remember { mutableStateOf(12.sp) } + + Card( + modifier = modifier.fillMaxSize(), + shape = RoundedCornerShape(18.dp), + colors = CardDefaults.cardColors(containerColor = Color.Transparent), + onClick = onClick + ) { + Box( + modifier = Modifier + .fillMaxWidth(), + contentAlignment = Alignment.BottomCenter + ) { + Image( + painter = painterResource(R.drawable.fruits3), + contentDescription = "fruits_background", + modifier = Modifier.fillMaxWidth(0.8f) + .padding(bottom = 12.dp), + contentScale = ContentScale.Fit + ) + Column( + modifier = Modifier.fillMaxSize(), + horizontalAlignment = Alignment.Start + ) { + Text( + text = stringResource(com.brainwallet.R.string.brainwallet_walkthrough_title), + color = if (tutorialBentoState.darkMode) Color.White else Color.Black, + modifier = Modifier + .padding( + top = 35.dp, + start = 12.dp, + end = 12.dp + ), + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.SemiBold, + fontSize = 16.sp, + textAlign = TextAlign.Start + ), + maxLines = 2 + ) + + Text( + text = stringResource(com.brainwallet.R.string.brainwallet_walkthrough_description), + color = if (tutorialBentoState.darkMode) Color.White else Color.Black, + modifier = Modifier + .padding( + top = 10.dp, + start = 12.dp, + end = 12.dp + ), + onTextLayout = { textLayoutResult -> + if (textLayoutResult.hasVisualOverflow) { + resizedDescriptionFontSize *= 0.96f + } + }, + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.Normal, + fontSize = 14.sp, + textAlign = TextAlign.Start + ), + maxLines = 6 + ) + Spacer(modifier = Modifier.weight(1f)) + } + } + } +} + +@PreviewLightDark +@Composable +private fun TutorialGeneralBentoScreenPreview() { + Box(modifier = Modifier) { + TutorialGeneralBentoScreen( + modifier = Modifier, + tutorialBentoState = TutorialBentoState() + ) + } +} diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialSendBentoScreen.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialSendBentoScreen.kt new file mode 100644 index 00000000..3e716352 --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialSendBentoScreen.kt @@ -0,0 +1,125 @@ +package com.brainwallet.ui.bentosections.tutorials +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.pager.rememberPagerState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +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.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.PreviewLightDark +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.brainwallet.R +import com.brainwallet.constants.bentoCornerRadius +import com.brainwallet.ui.theme.IBMPlexSans + +@Composable +fun TutorialSendBentoScreen( + modifier: Modifier = Modifier, + tutorialBentoState: TutorialBentoState = TutorialBentoState(), + onClick: () -> Unit = {} +) { + val hubPageCount = 3 + val pagerState = rememberPagerState(pageCount = { hubPageCount }) + var resizedDescriptionFontSize by remember { mutableStateOf(12.sp) } + + Card( + modifier = modifier.fillMaxSize(), + shape = RoundedCornerShape(18.dp), + colors = CardDefaults.cardColors(containerColor = Color.Transparent), + onClick = onClick + ) { + Box( + modifier = Modifier + .fillMaxWidth() + .background(Color.Transparent), + contentAlignment = Alignment.BottomCenter + + ) { + Image( + painter = painterResource(R.drawable.send_tut_3x), + contentDescription = "fruits_background", + modifier = Modifier.fillMaxWidth() + .clip(RoundedCornerShape(bentoCornerRadius)) + .offset(y = 30.dp), + contentScale = ContentScale.Crop, + alignment = Alignment.BottomCenter + ) + Column( + modifier = Modifier.fillMaxSize(), + horizontalAlignment = Alignment.Start + ) { + Text( + text = stringResource(com.brainwallet.R.string.send_tutorial_title), + color = if (tutorialBentoState.darkMode) Color.White else Color.Black, + modifier = Modifier + .padding( + top = 35.dp, + start = 12.dp, + end = 12.dp + ), + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.SemiBold, + fontSize = 16.sp, + textAlign = TextAlign.Start + ), + maxLines = 2 + ) + + Text( + text = stringResource(com.brainwallet.R.string.send_tutorial_description), + color = if (tutorialBentoState.darkMode) Color.White else Color.Black, + modifier = Modifier + .padding( + top = 10.dp, + start = 12.dp + ), + onTextLayout = { textLayoutResult -> + if (textLayoutResult.hasVisualOverflow) { + resizedDescriptionFontSize *= 0.96f + } + }, + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.Normal, + fontSize = 14.sp, + textAlign = TextAlign.Start + ), + maxLines = 6 + ) + Spacer(modifier = Modifier.weight(1f)) + } + } + } +} + +@PreviewLightDark +@Composable +private fun TutorialSendBentoScreenPreview() { + Box(modifier = Modifier) { + TutorialSendBentoScreen() + } +} diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialsBentoScreen.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialsBentoPagerScreen.kt similarity index 52% rename from app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialsBentoScreen.kt rename to app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialsBentoPagerScreen.kt index dbc4eba3..ffebaef0 100644 --- a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialsBentoScreen.kt +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialsBentoPagerScreen.kt @@ -1,48 +1,60 @@ package com.brainwallet.ui.bentosections.tutorials -import androidx.compose.runtime.getValue -import androidx.compose.ui.Alignment -import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.brainwallet.ui.screens.main.MainViewModel import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.wrapContentSize +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.rememberPagerState +import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.PreviewLightDark import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.brainwallet.tools.manager.AnalyticsManager +import com.brainwallet.ui.screens.main.MainViewModel +import com.brainwallet.ui.theme.DesignTheme import com.brainwallet.ui.theme.IBMPlexSans import com.brainwallet.ui.theme.mainBentoSurface import org.koin.compose.viewmodel.koinViewModel @Composable -fun TutorialsBentoScreen( +fun TutorialsBentoPagerScreen( modifier: Modifier = Modifier, - onClick: () -> Unit = {}, + onClick: (Int) -> Unit = {}, viewModel: MainViewModel = koinViewModel() ) { + val hubPageCount = 2 + val pagerState = rememberPagerState(pageCount = { hubPageCount }) val context = LocalContext.current + val tutorialBentoState = TutorialBentoState() val appSetting by viewModel.appSetting.collectAsStateWithLifecycle() val isDarkMode = appSetting.isDarkMode Box( modifier = Modifier - .fillMaxSize() + .fillMaxWidth() .mainBentoSurface(isDarkMode) ) { Column( @@ -70,28 +82,57 @@ fun TutorialsBentoScreen( ) Spacer(modifier = Modifier.weight(1f)) } + HorizontalPager( + state = pagerState, + userScrollEnabled = true, + pageSpacing = 8.dp, + modifier = modifier.fillMaxSize() + .background(Color.Transparent) + ) { page -> - Text( - text = stringResource(com.brainwallet.R.string.coming_soon), - modifier = Modifier - .fillMaxSize() - .padding(30.dp) - .wrapContentSize(Alignment.Center), - style = TextStyle( - fontFamily = IBMPlexSans, - fontWeight = FontWeight.Normal, - fontSize = 14.sp, - color = if (isDarkMode) Color.White else Color.Black, - textAlign = TextAlign.Center - ), - ) + when (page) { + 0 -> TutorialGeneralBentoScreen( + tutorialBentoState = tutorialBentoState, + onClick = { + AnalyticsManager.logCustomAdHocEvent("user_tapped_walkthrough_tutorial") + onClick(page) + } + ) + 1 -> TutorialSendBentoScreen(onClick = { + AnalyticsManager.logCustomAdHocEvent("user_tapped_send_tutorial") + onClick(page) + }) + } + } + + Row( + Modifier + .height(32.dp) + .fillMaxWidth(0.35f) + .padding(bottom = 8.dp) + .background(color = Color.Black.copy(0.4f), shape = RoundedCornerShape(16.dp)) + .align(Alignment.BottomCenter), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically + ) { + repeat(pagerState.pageCount) { iteration -> + val color = if (pagerState.currentPage == iteration) Color.White else DesignTheme.colors.background + Box( + modifier = Modifier + .padding(4.dp) + .clip(CircleShape) + .background(color) + .size(8.dp) + ) + } + } } } @PreviewLightDark @Composable -private fun TutorialsBentoScreenPreview() { +private fun TutorialsBentoPagerScreenPreview() { Box(modifier = Modifier) { - TutorialsBentoScreen() + TutorialsBentoPagerScreen() } } diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialsBentoViewModel.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialsBentoViewModel.kt new file mode 100644 index 00000000..e4ef9547 --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/TutorialsBentoViewModel.kt @@ -0,0 +1,42 @@ +package com.brainwallet.ui.bentosections.tutorials + +import androidx.lifecycle.viewModelScope +import com.brainwallet.data.repository.SettingRepository +import com.brainwallet.ui.BrainwalletViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.flow.update +import kotlinx.coroutines.launch +import org.koin.android.annotation.KoinViewModel + +@KoinViewModel +class TutorialsBentoViewModel( + private val settingRepository: SettingRepository, +) : BrainwalletViewModel() { + + private val _state = MutableStateFlow(TutorialBentoState()) + val state: StateFlow = _state.asStateFlow() + init { + viewModelScope.launch { + settingRepository.settings.collect { setting -> + _state.update { + it.copy( + darkMode = setting.isDarkMode, + ) + } + } + } + } + + override fun onEvent(event: TutorialBentoEvent) { + when (event) { + is TutorialBentoEvent.OnLoad -> { + } + is TutorialBentoEvent.OnTapGeneralTutorial -> { + } + is TutorialBentoEvent.OnTapSendTutorial -> { + } + } + } +} diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/send/TutorialSendPage1.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/send/TutorialSendPage1.kt new file mode 100644 index 00000000..8028605c --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/send/TutorialSendPage1.kt @@ -0,0 +1,81 @@ +package com.brainwallet.ui.bentosections.tutorials.send + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shadow +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.brainwallet.ui.composable.CalloutWithPointers +import com.brainwallet.ui.theme.IBMPlexSans + +@Composable +fun TutorialSendPage1( + modifier: Modifier = Modifier +) { + Box( + modifier = Modifier + .fillMaxWidth() + .wrapContentWidth() + ) { + Column( + modifier = Modifier + .fillMaxWidth() + ) { + Text( + text = stringResource(com.brainwallet.R.string.send_tutorial_title), + color = Color.White, + modifier = Modifier.fillMaxWidth() + .padding( + top = 30.dp, + ), + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.SemiBold, + fontSize = 22.sp, + textAlign = TextAlign.Center, + shadow = Shadow( + color = Color.Black.copy(alpha = 0.4f), + offset = Offset(x = 4f, y = 4f), + blurRadius = 5f + ) + ), + ) + Spacer(modifier = Modifier.weight(0.2f)) + Row( + modifier = Modifier.fillMaxWidth(0.9f) + ) { + Spacer(modifier = Modifier.padding(40.dp)) + CalloutWithPointers( + title = stringResource(com.brainwallet.R.string.walkthrough_title_1), + subtitle = stringResource(com.brainwallet.R.string.walkthrough_description_1) + + ) + } + Spacer(modifier = Modifier.weight(1f)) + } + } +} + +@Preview +@Composable +private fun TutorialSendPage1Preview() { + Column { + TutorialSendPage1() + } +} diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/send/TutorialSendPage2.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/send/TutorialSendPage2.kt new file mode 100644 index 00000000..a9c4dedb --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/send/TutorialSendPage2.kt @@ -0,0 +1,83 @@ +package com.brainwallet.ui.bentosections.tutorials.send + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shadow +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.brainwallet.ui.composable.CalloutWithPointers +import com.brainwallet.ui.composable.Pointer +import com.brainwallet.ui.theme.IBMPlexSans + +@Composable +fun TutorialSendPage2( + modifier: Modifier = Modifier +) { + Box( + modifier = Modifier + .fillMaxWidth() + .wrapContentWidth() + ) { + Column( + modifier = Modifier + .fillMaxWidth() + ) { + Text( + text = stringResource(com.brainwallet.R.string.send_tutorial_title), + color = Color.White, + modifier = Modifier.fillMaxWidth() + .padding( + top = 30.dp, + ), + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.SemiBold, + fontSize = 22.sp, + textAlign = TextAlign.Center, + shadow = Shadow( + color = Color.Black.copy(alpha = 0.4f), + offset = Offset(x = 4f, y = 4f), + blurRadius = 5f + ) + ), + ) + Spacer(modifier = Modifier.weight(0.65f)) + Row( + modifier = Modifier.fillMaxWidth(0.9f) + ) { + Spacer(modifier = Modifier.padding(20.dp)) + CalloutWithPointers( + pointer = Pointer.BOTTOM_LEFT, + title = stringResource(com.brainwallet.R.string.send_tutorial_title_1a), + subtitle = stringResource(com.brainwallet.R.string.send_tutorial_description_1a), + calloutWidth = 250.dp, + ) + } + Spacer(modifier = Modifier.weight(0.1f)) + } + } +} + +@Preview +@Composable +private fun TutorialSendPage2Preview() { + Column { + TutorialSendPage2() + } +} diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/send/TutorialSendPage3.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/send/TutorialSendPage3.kt new file mode 100644 index 00000000..b2046db8 --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/send/TutorialSendPage3.kt @@ -0,0 +1,124 @@ +package com.brainwallet.ui.bentosections.tutorials.send +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shadow +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.brainwallet.R +import com.brainwallet.ui.composable.CalloutWithPointers +import com.brainwallet.ui.composable.Pointer +import com.brainwallet.ui.theme.IBMPlexSans + +@Composable +fun TutorialSendPage3( + modifier: Modifier = Modifier +) { + val sendSetupImage = R.drawable.sendsetup + + Box( + modifier = Modifier + .fillMaxWidth() + .wrapContentWidth(), + contentAlignment = Alignment.Center + ) { + Column( + modifier = Modifier + .fillMaxWidth() + ) { + Text( + text = stringResource(com.brainwallet.R.string.send_tutorial_title), + color = Color.White, + modifier = Modifier.fillMaxWidth() + .padding( + top = 30.dp, + ), + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.SemiBold, + fontSize = 22.sp, + textAlign = TextAlign.Center, + shadow = Shadow( + color = Color.Black.copy(alpha = 0.4f), + offset = Offset(x = 4f, y = 4f), + blurRadius = 5f + ) + ), + ) + Spacer(modifier = Modifier.weight(0.05f)) + Row( + modifier = Modifier.fillMaxWidth(1f), + horizontalArrangement = Arrangement.Center + ) { + CalloutWithPointers( + pointer = Pointer.NO_POINTER, + title = stringResource(com.brainwallet.R.string.send_tutorial_title_3a), + subtitle = stringResource(com.brainwallet.R.string.send_tutorial_description_3a), + calloutWidth = 250.dp, + calloutHeight = 150.dp, + + ) + } + Spacer(modifier = Modifier.weight(0.05f)) + Row( + modifier = Modifier.fillMaxWidth(1f), + horizontalArrangement = Arrangement.Center + + ) { + Image( + painter = painterResource(sendSetupImage), + contentDescription = "send_setup_image", + modifier = Modifier.fillMaxWidth(0.5f) + .clip(RoundedCornerShape(8.dp)) + .align(Alignment.CenterVertically), + contentScale = ContentScale.Fit, + ) + } + Spacer(modifier = Modifier.weight(0.05f)) + Row( + modifier = Modifier + .fillMaxWidth(1f), + horizontalArrangement = Arrangement.Center, + + ) { + CalloutWithPointers( + pointer = Pointer.NO_POINTER, + title = stringResource(com.brainwallet.R.string.send_tutorial_title_3b), + subtitle = stringResource(com.brainwallet.R.string.send_tutorial_description_3b), + calloutWidth = 250.dp, + calloutHeight = 150.dp, + ) + } + Spacer(modifier = Modifier.weight(0.1f)) + } + } +} + +@Preview +@Composable +private fun TutorialSendPage3Preview() { + Column { + TutorialSendPage3() + } +} diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/send/TutorialSendPagerScreen.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/send/TutorialSendPagerScreen.kt new file mode 100644 index 00000000..8cc45c14 --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/send/TutorialSendPagerScreen.kt @@ -0,0 +1,80 @@ +package com.brainwallet.ui.bentosections.tutorials.send + +import com.brainwallet.ui.bentosections.tutorials.TutorialsBentoViewModel +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.rememberPagerState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.unit.dp +import com.brainwallet.navigation.OnNavigate +import com.brainwallet.ui.theme.DesignTheme +import org.koin.compose.viewmodel.koinViewModel + +@Composable +fun TutorialSendPagerScreen( + onNavigate: OnNavigate, + modifier: Modifier = Modifier, + viewModel: TutorialsBentoViewModel = koinViewModel(), + onDismissTutorialSendModal: () -> Unit = {}, +) { + val hubPageCount = 3 + val pagerState = rememberPagerState(pageCount = { hubPageCount }) + val context = LocalContext.current + + Box( + modifier = Modifier + .fillMaxWidth() + ) { + HorizontalPager( + state = pagerState, + userScrollEnabled = true, + pageSpacing = 8.dp, + modifier = modifier.fillMaxSize() + ) { page -> + when (page) { + 0 -> TutorialSendPage1() + 1 -> TutorialSendPage2() + 2 -> TutorialSendPage3() + } + } + + Row( + Modifier + .height(32.dp) + .fillMaxWidth(0.35f) + .padding(bottom = 8.dp) + .background(color = Color.Black.copy(0.4f), shape = RoundedCornerShape(16.dp)) + .align(Alignment.BottomCenter), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically + ) { + repeat(pagerState.pageCount) { iteration -> + val color = if (pagerState.currentPage == iteration) Color.White else DesignTheme.colors.background + Box( + modifier = Modifier + .padding(4.dp) + .clip(CircleShape) + .background(color) + .size(8.dp) + ) + } + } + } +} diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthoughPagerScreen.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthoughPagerScreen.kt new file mode 100644 index 00000000..2c2e9354 --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthoughPagerScreen.kt @@ -0,0 +1,82 @@ +package com.brainwallet.ui.bentosections.tutorials.walkthrough + +import com.brainwallet.ui.bentosections.tutorials.TutorialsBentoViewModel +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.pager.HorizontalPager +import androidx.compose.foundation.pager.rememberPagerState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.unit.dp +import com.brainwallet.navigation.OnNavigate +import com.brainwallet.ui.theme.DesignTheme +import org.koin.compose.viewmodel.koinViewModel + +@Composable +fun TutorialWalkthroughPagerScreen( + onNavigate: OnNavigate, + modifier: Modifier = Modifier, + viewModel: TutorialsBentoViewModel = koinViewModel(), + onDismissTutorialWalkthroughModal: () -> Unit = {}, +) { + val hubPageCount = 4 + val pagerState = rememberPagerState(pageCount = { hubPageCount }) + val context = LocalContext.current + + Box( + modifier = Modifier + .fillMaxSize() + ) { + HorizontalPager( + state = pagerState, + userScrollEnabled = true, + pageSpacing = 8.dp, + modifier = modifier.fillMaxSize() + ) { page -> + when (page) { + 0 -> TutorialWalkthroughPage1() + 1 -> TutorialWalkthroughPage2() + 2 -> TutorialWalkthroughPage3() + 3 -> TutorialWalkthroughPage4() + } + } + + Row( + Modifier + .height(32.dp) + .fillMaxWidth(0.25f) + .padding(bottom = 16.dp) + .background( + color = Color.Black.copy(0.4f), + shape = RoundedCornerShape(16.dp) + ) + .align(Alignment.BottomCenter), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically + ) { + repeat(pagerState.pageCount) { iteration -> + val color = if (pagerState.currentPage == iteration) Color.White else DesignTheme.colors.background + Box( + modifier = Modifier + .padding(4.dp) + .clip(CircleShape) + .background(color) + .size(8.dp) + ) + } + } + } +} diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthroughPage1.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthroughPage1.kt new file mode 100644 index 00000000..15699ec5 --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthroughPage1.kt @@ -0,0 +1,81 @@ +package com.brainwallet.ui.bentosections.tutorials.walkthrough + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shadow +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.brainwallet.ui.composable.CalloutWithPointers +import com.brainwallet.ui.theme.IBMPlexSans + +@Composable +fun TutorialWalkthroughPage1( + modifier: Modifier = Modifier +) { + Box( + modifier = Modifier + .fillMaxWidth() + .wrapContentWidth() + ) { + Column( + modifier = Modifier + .fillMaxWidth() + ) { + Text( + text = stringResource(com.brainwallet.R.string.brainwallet_walkthrough_title), + color = Color.White, + modifier = Modifier.fillMaxWidth() + .padding( + top = 30.dp, + ), + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.SemiBold, + fontSize = 22.sp, + textAlign = TextAlign.Center, + shadow = Shadow( + color = Color.Black.copy(alpha = 0.4f), + offset = Offset(x = 4f, y = 4f), + blurRadius = 5f + ) + ), + ) + Spacer(modifier = Modifier.weight(0.2f)) + Row( + modifier = Modifier.fillMaxWidth(0.9f) + ) { + Spacer(modifier = Modifier.padding(40.dp)) + CalloutWithPointers( + title = stringResource(com.brainwallet.R.string.walkthrough_title_1), + subtitle = stringResource(com.brainwallet.R.string.walkthrough_description_1) + + ) + } + Spacer(modifier = Modifier.weight(1f)) + } + } +} + +@Preview +@Composable +private fun TutorialWalkthroughPage1Preview() { + Column { + TutorialWalkthroughPage1() + } +} diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthroughPage2.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthroughPage2.kt new file mode 100644 index 00000000..806cdb6b --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthroughPage2.kt @@ -0,0 +1,83 @@ +package com.brainwallet.ui.bentosections.tutorials.walkthrough +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shadow +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.brainwallet.ui.composable.CalloutWithPointers +import com.brainwallet.ui.composable.Pointer +import com.brainwallet.ui.theme.IBMPlexSans + +@Composable +fun TutorialWalkthroughPage2( + modifier: Modifier = Modifier +) { + Box( + modifier = Modifier + .fillMaxWidth() + .wrapContentWidth() + ) { + Column( + modifier = Modifier + .fillMaxWidth() + ) { + Text( + text = stringResource(com.brainwallet.R.string.brainwallet_walkthrough_title), + color = Color.White, + modifier = Modifier.fillMaxWidth() + .padding( + top = 30.dp, + ), + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.SemiBold, + fontSize = 22.sp, + textAlign = TextAlign.Center, + shadow = Shadow( + color = Color.Black.copy(alpha = 0.4f), + offset = Offset(x = 4f, y = 4f), + blurRadius = 5f + ) + ), + ) + Spacer(modifier = Modifier.weight(0.02f)) + + Row( + modifier = Modifier.fillMaxWidth(0.9f) + ) { + Spacer(modifier = Modifier.weight(1f)) + CalloutWithPointers( + pointer = Pointer.TOP_RIGHT, + title = stringResource(com.brainwallet.R.string.walkthrough_title_2), + subtitle = stringResource(com.brainwallet.R.string.walkthrough_description_2), + calloutWidth = 230.dp, + ) + } + Spacer(modifier = Modifier.weight(1f)) + } + } +} + +@Preview +@Composable +private fun TutorialWalkthroughPage2Preview() { + Column { + TutorialWalkthroughPage2() + } +} diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthroughPage3.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthroughPage3.kt new file mode 100644 index 00000000..3f4df7b8 --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthroughPage3.kt @@ -0,0 +1,96 @@ +package com.brainwallet.ui.bentosections.tutorials.walkthrough + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shadow +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.brainwallet.ui.composable.CalloutWithPointers +import com.brainwallet.ui.composable.Pointer +import com.brainwallet.ui.theme.IBMPlexSans + +@Composable +fun TutorialWalkthroughPage3( + modifier: Modifier = Modifier +) { + Box( + modifier = Modifier + .fillMaxWidth() + .wrapContentWidth() + ) { + Column( + modifier = Modifier + .fillMaxWidth() + ) { + Text( + text = stringResource(com.brainwallet.R.string.brainwallet_walkthrough_title), + color = Color.White, + modifier = Modifier.fillMaxWidth() + .padding( + top = 30.dp, + bottom = 60.dp + ), + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.SemiBold, + fontSize = 22.sp, + textAlign = TextAlign.Center, + shadow = Shadow( + color = Color.Black.copy(alpha = 0.4f), + offset = Offset(x = 4f, y = 4f), + blurRadius = 5f + ) + ), + ) + + Row( + modifier = Modifier.fillMaxWidth(0.9f) + ) { + Spacer(modifier = Modifier.weight(1f)) + CalloutWithPointers( + pointer = Pointer.BOTTOM_LEFT, + title = stringResource(com.brainwallet.R.string.walkthrough_title_3), + subtitle = stringResource(com.brainwallet.R.string.walkthrough_description_3), + calloutWidth = 250.dp, + ) + } + Spacer(modifier = Modifier.weight(0.9f)) + + Row( + modifier = Modifier.fillMaxWidth(0.9f) + ) { + Spacer(modifier = Modifier.weight(1f)) + CalloutWithPointers( + pointer = Pointer.BOTTOM_RIGHT, + title = stringResource(com.brainwallet.R.string.walkthrough_title_3a), + subtitle = stringResource(com.brainwallet.R.string.walkthrough_description_3a), + calloutWidth = 230.dp, + ) + } + Spacer(modifier = Modifier.weight(0.2f)) + } + } +} + +@Preview +@Composable +private fun TutorialWalkthroughPage3Preview() { + Column { + TutorialWalkthroughPage3() + } +} diff --git a/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthroughPage4.kt b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthroughPage4.kt new file mode 100644 index 00000000..1e1ab326 --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/bentosections/tutorials/walkthrough/TutorialWalkthroughPage4.kt @@ -0,0 +1,85 @@ +package com.brainwallet.ui.bentosections.tutorials.walkthrough + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shadow +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.brainwallet.ui.composable.CalloutWithPointers +import com.brainwallet.ui.composable.Pointer +import com.brainwallet.ui.theme.IBMPlexSans + +@Composable +fun TutorialWalkthroughPage4( + modifier: Modifier = Modifier +) { + Box( + modifier = Modifier + .fillMaxWidth() + .wrapContentWidth() + ) { + Column( + modifier = Modifier + .fillMaxWidth() + ) { + Text( + text = stringResource(com.brainwallet.R.string.brainwallet_walkthrough_title), + color = Color.White, + modifier = Modifier.fillMaxWidth() + .padding( + top = 30.dp, + bottom = 60.dp + ), + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.SemiBold, + fontSize = 22.sp, + textAlign = TextAlign.Center, + shadow = Shadow( + color = Color.Black.copy(alpha = 0.4f), + offset = Offset(x = 4f, y = 4f), + blurRadius = 5f + ) + ), + ) + + Spacer(modifier = Modifier.weight(0.2f)) + + Row( + modifier = Modifier.fillMaxWidth(1f) + ) { + Spacer(modifier = Modifier.padding(20.dp)) + CalloutWithPointers( + pointer = Pointer.BOTTOM_RIGHT, + title = stringResource(com.brainwallet.R.string.walkthrough_title_4), + subtitle = stringResource(com.brainwallet.R.string.walkthrough_description_4), + calloutWidth = 250.dp, + ) + } + Spacer(modifier = Modifier.weight(1f)) + } + } +} + +@Preview +@Composable +private fun TutorialWalkthroughPage4Preview() { + Column { + TutorialWalkthroughPage4() + } +} diff --git a/app/src/main/java/com/brainwallet/ui/composable/CalloutWithPointers.kt b/app/src/main/java/com/brainwallet/ui/composable/CalloutWithPointers.kt new file mode 100644 index 00000000..adbb11cc --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/composable/CalloutWithPointers.kt @@ -0,0 +1,227 @@ +package com.brainwallet.ui.composable + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.graphics.Path +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.sp +import com.brainwallet.ui.theme.IBMPlexSans + +enum class Pointer { + TOP_LEFT, + TOP_RIGHT, + BOTTOM_LEFT, + BOTTOM_RIGHT, + + NO_POINTER +} + +@Composable +fun CalloutWithPointers( + title: String, + subtitle: String, + modifier: Modifier = Modifier, + calloutWidth: Dp = 190.dp, + calloutHeight: Dp = 150.dp, + pointer: Pointer = Pointer.TOP_LEFT +) { + val pointerSize = 40.dp + val mainPadding = 22.dp + val cornerRadius = 10.dp + Box( + modifier = Modifier.width(calloutWidth).height(calloutHeight) + + ) { + Column( + modifier = Modifier + .fillMaxSize(1f), + verticalArrangement = Arrangement.SpaceBetween, + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .height(32.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween + + ) { + Box( + modifier = Modifier + .drawWithCache { + val path = Path().apply { + moveTo(0f, 0f) + lineTo(size.width, size.height) + lineTo(0f, size.height) + close() + } + + onDrawBehind { + drawPath( + path, + color = if (pointer == Pointer.TOP_LEFT) Color.White else Color.Transparent + ) + } + } + .size(pointerSize) + ) + Box( + modifier = Modifier + .drawWithCache { + val path = Path().apply { + moveTo(size.width, 0f) + lineTo(size.width, size.height) + lineTo(0f, size.height) + close() + } + + onDrawBehind { + drawPath( + path, + color = if (pointer == Pointer.TOP_RIGHT) Color.White else Color.Transparent + ) + } + } + .size(pointerSize) + ) + } + + Row( + modifier = Modifier + .fillMaxWidth() + .height(32.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween + + ) { + Box( + modifier = Modifier + .drawWithCache { + val path = Path().apply { + moveTo(0f, 0f) + lineTo(size.width, 0f) + lineTo(0f, size.height) + close() + } + + onDrawBehind { + drawPath( + path, + color = if (pointer == Pointer.BOTTOM_LEFT) Color.White else Color.Transparent + ) + } + } + .size(pointerSize) + ) + Box( + modifier = Modifier + .drawWithCache { + val path = Path().apply { + moveTo(0f, 0f) + lineTo(size.width, 0f) + lineTo(size.width, size.height) + close() + } + + onDrawBehind { + drawPath( + path, + color = if (pointer == Pointer.BOTTOM_RIGHT) Color.White else Color.Transparent + ) + } + } + .size(pointerSize) + ) + } + } + + Column( + modifier = Modifier + .padding(top = mainPadding, bottom = mainPadding) + .fillMaxSize(1f) + .clip(RoundedCornerShape(cornerRadius)) + .background(Color.White), + verticalArrangement = Arrangement.Top, + horizontalAlignment = Alignment.Start + ) { + Text( + modifier = Modifier + .padding(top = 10.dp, start = 12.dp, bottom = 2.dp), + text = title, + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.SemiBold, + fontSize = 13.sp, + color = Color.Black, + ), + textAlign = TextAlign.Start + ) + + Text( + modifier = Modifier + .padding(start = 12.dp, end = 12.dp), + text = subtitle, + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.Normal, + fontSize = 11.sp, + color = Color.Black, + ), + textAlign = TextAlign.Start, + maxLines = 5 + ) + } + } +} + +@Preview +@Composable +private fun CalloutWithPointersPreview() { + Column { + Box(modifier = Modifier.size(200.dp)) { + CalloutWithPointers(title = "Title", subtitle = "Subtitle") + } + Box(modifier = Modifier.size(200.dp)) { + CalloutWithPointers( + title = "Title", + subtitle = "Subtitle", + pointer = Pointer.TOP_RIGHT + ) + } + Box(modifier = Modifier.size(200.dp)) { + CalloutWithPointers( + title = "Title", + subtitle = "Subtitle", + pointer = Pointer.BOTTOM_LEFT + ) + } + Box(modifier = Modifier.size(200.dp)) { + CalloutWithPointers( + title = "Title", + subtitle = "Subtitle", + pointer = Pointer.BOTTOM_RIGHT + ) + } + } +} diff --git a/app/src/main/java/com/brainwallet/ui/composable/MoonPayButtonCallout.kt b/app/src/main/java/com/brainwallet/ui/composable/MoonPayButtonCallout.kt new file mode 100644 index 00000000..62d46279 --- /dev/null +++ b/app/src/main/java/com/brainwallet/ui/composable/MoonPayButtonCallout.kt @@ -0,0 +1,84 @@ +package com.brainwallet.ui.composable +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.sp +import com.brainwallet.R +import com.brainwallet.ui.theme.DesignTheme +import com.brainwallet.ui.theme.IBMPlexSans + +@Composable +fun MoonPayButtonCallout( + modifier: Modifier = Modifier +) { + val mainPadding = 22.dp + val cornerRadius = 10.dp + val calloutWidth = 190.dp + val calloutHeight = 130.dp + Box( + modifier = Modifier + .width(calloutWidth) + .height(calloutHeight) + ) { + Column( + modifier = Modifier + .padding(top = mainPadding, bottom = mainPadding) + .fillMaxSize(1f) + .clip(RoundedCornerShape(cornerRadius)) + .background(DesignTheme.colors.background.copy(0.9f)), + verticalArrangement = Arrangement.Top, + horizontalAlignment = Alignment.CenterHorizontally + ) { + Text( + modifier = Modifier + .padding(all = 12.dp), + text = stringResource(R.string.tap_moonpay_callout_title), + style = TextStyle( + fontFamily = IBMPlexSans, + fontWeight = FontWeight.SemiBold, + fontSize = 13.sp, + color = Color.White, + ), + textAlign = TextAlign.Center + ) + + Image( + modifier = Modifier + .fillMaxWidth(1f).padding(bottom = 5.dp), + painter = painterResource(R.drawable.powered_by_moonpay_wht), + contentDescription = "powered_by_moonpay_wht", + contentScale = ContentScale.Fit + ) + } + } +} + +@Preview +@Composable +private fun CalloutWithPointersPreview() { + Column { + MoonPayButtonCallout() + } +} diff --git a/app/src/main/java/com/brainwallet/ui/screens/main/MainScreen.kt b/app/src/main/java/com/brainwallet/ui/screens/main/MainScreen.kt index 5c0afdc6..7d7221e0 100644 --- a/app/src/main/java/com/brainwallet/ui/screens/main/MainScreen.kt +++ b/app/src/main/java/com/brainwallet/ui/screens/main/MainScreen.kt @@ -75,7 +75,9 @@ import com.brainwallet.ui.bentosections.favouritesbento.FavouritesBentoScreen import com.brainwallet.ui.bentosections.gamehubbento.GameHubBentoPagerScreen import com.brainwallet.ui.bentosections.ltcpickerbento.LTCPickerBentoScreen import com.brainwallet.ui.bentosections.transactionbento.TransactionsBentoScreen -import com.brainwallet.ui.bentosections.tutorials.TutorialsBentoScreen +import com.brainwallet.ui.bentosections.tutorials.TutorialsBentoPagerScreen +import com.brainwallet.ui.bentosections.tutorials.send.TutorialSendPagerScreen +import com.brainwallet.ui.bentosections.tutorials.walkthrough.TutorialWalkthroughPagerScreen import com.brainwallet.ui.composable.BentoBottomNavBar import com.brainwallet.ui.screens.main.MainScreenEvent import com.brainwallet.ui.screens.main.MainViewModel @@ -86,6 +88,7 @@ import com.brainwallet.ui.screens.settings.settingsrows.HomeSettingDrawerSheet import com.brainwallet.ui.theme.BrainwalletAppTheme import com.brainwallet.ui.theme.bentoClearGradient import com.brainwallet.ui.theme.bentoModalDarkGradient +import com.brainwallet.ui.theme.bentoSemiWhiteGradient import com.brainwallet.ui.theme.blurAnimatedWith import com.brainwallet.ui.theme.mainScreenDarkSurfaceGradient import com.brainwallet.ui.theme.mainScreenLightSurfaceGradient @@ -117,7 +120,12 @@ fun MainScreen( val showTransactionDetail = state.showTransactionDetail val noTxItemsPresent = state.transactionItems.isEmpty() val blurRadiusWhen by animateFloatAsState( - targetValue = if (isSheetOpen) 40f else 0f, + targetValue = when { + !isSheetOpen -> 0f + modalContentRoute == Route.TutorialSend || + modalContentRoute == Route.TutorialWalkthrough -> 0f + else -> 40f + }, animationSpec = tween(durationMillis = 400), label = "blurRadius" ) @@ -295,7 +303,18 @@ fun MainScreen( exit = fadeOut(tween(FADE_OUT_DURATION)), ) { Box(modifier = Modifier.height(availableHeight)) { - TutorialsBentoScreen() + TutorialsBentoPagerScreen(onClick = { page -> + when (page) { + 0 -> { + modalContentRoute = Route.TutorialWalkthrough + isSheetOpen = true + } + 1 -> { + modalContentRoute = Route.TutorialSend + isSheetOpen = true + } + } + }) } } } @@ -372,12 +391,24 @@ fun MainScreen( modifier = Modifier .fillMaxWidth() .wrapContentWidth() - .fillMaxHeight(0.85f) + .fillMaxHeight( + if (modalContentRoute == Route.TutorialSend || + modalContentRoute == Route.TutorialWalkthrough + ) { + 1f + } else { + 0.85f + } + ) .background( brush = if (modalContentRoute == Route.BuyReceive) { bentoClearGradient } else if (isDarkMode && modalContentRoute == Route.Send) { bentoModalDarkGradient + } else if (modalContentRoute == Route.TutorialSend || + modalContentRoute == Route.TutorialWalkthrough + ) { + bentoSemiWhiteGradient } else { mainScreenLightSurfaceGradient }, @@ -406,6 +437,16 @@ fun MainScreen( .align(Alignment.Center), onDismissRequest = { isSheetOpen = false } ) + + Route.TutorialSend -> TutorialSendPagerScreen( + onNavigate = onNavigate, + onDismissTutorialSendModal = { isSheetOpen = false } + ) + + Route.TutorialWalkthrough -> TutorialWalkthroughPagerScreen( + onNavigate = onNavigate, + onDismissTutorialWalkthroughModal = { isSheetOpen = false } + ) else -> {} } } diff --git a/app/src/main/java/com/brainwallet/ui/theme/Gradient.kt b/app/src/main/java/com/brainwallet/ui/theme/Gradient.kt index 6581354b..4cf1dd32 100644 --- a/app/src/main/java/com/brainwallet/ui/theme/Gradient.kt +++ b/app/src/main/java/com/brainwallet/ui/theme/Gradient.kt @@ -142,6 +142,18 @@ val bentoClearGradient: Brush start = Offset(Float.MIN_VALUE, Float.POSITIVE_INFINITY), end = Offset(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY), ) + +val bentoSemiWhiteGradient: Brush + + @Composable + get() = Brush.linearGradient( + colors = listOf( + Color(0xFFFFFFFF).copy(alpha = 0.2f), + Color(0xFFFFFFFF).copy(alpha = 0.2f) + ), + start = Offset(Float.MIN_VALUE, Float.POSITIVE_INFINITY), + end = Offset(Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY), + ) val bentoBalanceGameDarkBorderGradient: Brush @Composable diff --git a/app/src/main/res/drawable/fruits3.png b/app/src/main/res/drawable/fruits3.png new file mode 100644 index 00000000..0ed34dbb Binary files /dev/null and b/app/src/main/res/drawable/fruits3.png differ diff --git a/app/src/main/res/drawable/send_tut_3x.png b/app/src/main/res/drawable/send_tut_3x.png new file mode 100644 index 00000000..000d3ee7 Binary files /dev/null and b/app/src/main/res/drawable/send_tut_3x.png differ diff --git a/app/src/main/res/drawable/sendsetup.png b/app/src/main/res/drawable/sendsetup.png new file mode 100644 index 00000000..3e996b64 Binary files /dev/null and b/app/src/main/res/drawable/sendsetup.png differ diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 61828c7c..fcc153a2 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -85,7 +85,6 @@ مركز الأمن كمية الرصيد: %1$s - السماح بالوصول إلى الكاميرا في \الإعدادات\" > \""التطبيقات\"" > \""Brainwallet\"" > \""الأذونات\""""" لا يُسمح لـ Brainwallet بالوصول إلى الكاميرا الوجهة هي عنوانك الخاص. لا يمكنك أن ترسل لنفسك. مذكرة @@ -288,4 +287,26 @@ "يرجى قبول إذن إشعاراتنا " "معرّف المعاملة: " معاملات - \ No newline at end of file + كيفية إرسال Litecoin + جولة Brainwallet التعريفية + جرّب جميع ميزات Brainwallet، من إرسال واستقبال العملات المشفرة إلى إدارة مفاتيحك. + اتبع الخطوات السهلة لإرسال LTC إلى محفظة شخص آخر. سيتلقاها في ثوانٍ! + 1. تحقق من رصيدك + لا يمكنك الإرسال إذا كان الرصيد صفراً أو جاري المزامنة. أضف أموالاً في 5 دقائق باستخدام MoonPay إذا لزم الأمر. + اضغط هنا وأضف أموالاً! + 2. الإعدادات والوضع الليلي + اضبط الإعدادات بالضغط على خيار الإعدادات في أعلى اليمين. اضبط تفضيل الوضع الليلي بالضغط على☀️ في أعلى اليسار. + راجع معاملاتك + عندما تتلقى معاملات، تظهر هنا. مرّر لأعلى ولأسفل للتحقق. اضغط على الفلتر لتبديل بين الكل والاستقبال والإرسال. + انغمس أعمق! + اضغط على السجل لعرض المزيد من التفاصيل وتوسيع العرض. مرّر لأعلى أو لأسفل للتمرير عبر كل المعلومات. + تحقق من سعر LTC + يحدّث Brainwallet سعر Litecoin (LTC) بانتظام. اختر عملتك المحلية للحصول على السعر بالتمرير. استخدم العلم كدليل لك! + 2. اضغط على تبويب الإرسال + الرصيد أكبر من صفر؟ بدّل إلى العملة المحلية أو LTC لمعرفة المبلغ المراد إرساله. اضبط رسوم الشبكة في الإعدادات + 3. عيّن القيم + هل لديك بعض LTC؟ غيّر قيمتك بالعملة المحلية لمعرفة المبلغ الذي يمكنك إرساله. أو احسبها بـ LTC. انتقل إلى الإعدادات لضبط رسوم الشبكة المفضلة لديك + تحقق قبل الإرسال! + امسح أو الصق عنوان الوجهة. تحقق مرتين! غيّر قيمتك بالعملة المحلية لمعرفة المبلغ الذي يمكنك إرساله. أضف ملاحظة كتذكير مفيد. اضغط متابعة. + السماح بالوصول إلى الكاميرا من الإعدادات + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 137d47fb..1ea9915f 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -139,7 +139,6 @@ Guthaben: %1$s - Erlauben Sie den Kamerazugriff unter „Einstellungen” > „Apps” > „Loaf” > „Berechtigungen” Loaf hat keine Berechtigung für Kamerazugriff Das Ziel ist deine eigene Adresse. Du kannst nichts an dich selbst senden. @@ -418,4 +417,26 @@ "Bitte akzeptieren Sie die Berechtigung für unsere Benachrichtigungen " "TX ID: " Txns - \ No newline at end of file + Wie man Litecoin sendet + Brainwallet Anleitung + Probiere alle Funktionen von Brainwallet aus – vom Senden und Empfangen von Kryptowährungen bis zur Verwaltung deiner Schlüssel. + Folge den einfachen Schritten, um LTC an die Wallet eines anderen zu senden. Er erhält es in Sekunden! + 1. Überprüfe deinen Saldo + Du kannst nicht senden, wenn er null ist oder synchronisiert wird. Stocke bei Bedarf in 5 Minuten mit MoonPay auf. + Hier tippen & aufladen! + 2. Einstellungen & Dunkler Modus + Passe deine Einstellungen an, indem du oben rechts auf Einstellungen tippst. Stelle deine Dunkelmodus-Voreinstellung ein, indem du oben links auf das tippst. + Überprüfe deine Transaktionen + Wenn du Transaktionen erhältst, werden sie hier angezeigt. Wische nach oben und unten, um sie zu überprüfen. Tippe auf Filter, um zwischen Alle, Empfangen oder Gesendet zu wechseln. + Tiefer einsteigen! + Tippe auf Verlauf, um mehr Details anzuzeigen und die Ansicht zu erweitern. Wische nach oben oder unten, um durch alle Informationen zu blättern. + Überprüfe den LTC-Preis + Brainwallet aktualisiert den Litecoin-Preis (LTC) regelmäßig. Wähle deine Landeswährung, um den Kurs zu sehen, indem du wischst. Verwende deine Flagge als Orientierungshilfe! + 2. Tippe auf den Senden-Tab + Saldo größer null? Wechsle zwischen Währung und LTC, um herauszufinden, wie viel du senden möchtest. Passe die Netzwerkgebühr in den Einstellungen an. + 3. Gib die Werte ein + Hast du etwas LTC? Ändere deine lokale Währung, um herauszufinden, wie viel du senden kannst. Oder berechne in LTC. Gehe zu den Einstellungen, um deine bevorzugte Netzwerkgebühr anzupassen. + Überprüfe vor dem Senden! + Scanne oder füge die Zieladresse ein. Überprüfe sie genau! Ändere deine lokale Währung, um herauszufinden, wie viel du senden kannst. Füge eine Notiz als praktische Erinnerung hinzu. Tippe auf Weiter. + Kamerazugriff in den Einstellungen aktivieren + diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 346b4e98..f16181cd 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -238,7 +238,6 @@ Saldo: %1$s - Para permitir el acceso a la cámara, ve a «Ajustes», selecciona «Aplicaciones», busca la aplicación «Loaf» y selecciona la opción «Permisos» Loaf no tiene permitido el acceso a la cámara El destino es tu propia dirección. No puedes hacerte un envío a ti mismo. @@ -493,4 +492,26 @@ "Por favor, acepta el permiso para nuestras notificaciones " "ID de TX: " txns - \ No newline at end of file + Cómo enviar Litecoin + Tutorial de Brainwallet + Prueba todas las características de Brainwallet, desde enviar y recibir criptomonedas hasta gestionar tus claves. + Sigue los pasos sencillos para enviar LTC a la cartera de otra persona. ¡Lo recibirá en segundos! + 1. Verifica tu saldo + No puedes enviar si es cero o se está sincronizando. Recarga en 5 minutos con MoonPay si es necesario. + ¡Toca aquí y recarga! + 2. Configuración y Modo Oscuro + Personaliza tocando Configuración en la esquina superior derecha. Establece tu preferencia de Modo Oscuro tocando el en la esquina superior izquierda. + Revisa tus transacciones + Cuando recibas transacciones, aparecerán aquí. Desliza hacia arriba y hacia abajo para verificar. Toca el filtro para alternar entre Todas, Recibidas o Enviadas. + ¡Profundiza! + Toca Historial para mostrar más detalles y expandir la vista. Desliza hacia arriba o hacia abajo para desplazarte por toda la información. + Comprueba el precio de LTC + Brainwallet actualiza el precio de Litecoin (LTC) regularmente. Elige tu moneda local para obtener la tasa deslizando. ¡Usa tu bandera como guía! + 2. Toca la pestaña Enviar + ¿Saldo superior a cero? Cambia entre moneda local o LTC para determinar cuánto enviar. Ajusta la comisión de red en configuración + 3. Establece los valores + ¿Tienes algo de LTC? Cambia tu moneda fiduciaria local para determinar cuánto puedes enviar. O calcula en LTC. Ve a configuración para ajustar tu comisión de red preferida + ¡Verifica antes de enviar! + Escanea o pega la dirección de destino. ¡Verifica dos veces! Cambia tu moneda fiduciaria local para determinar cuánto puedes enviar. Añade una nota como recordatorio útil. Toca Continuar. + Permitir acceso a la cámara en Configuración + diff --git a/app/src/main/res/values-fa/strings.xml b/app/src/main/res/values-fa/strings.xml index 2d867e68..f93b78db 100644 --- a/app/src/main/res/values-fa/strings.xml +++ b/app/src/main/res/values-fa/strings.xml @@ -255,7 +255,6 @@ موجودی: %1$s - دسترسی دوربین را در "تنظیمات" > "برنامه‌ها" > "Brainwallet" > "مجوزها" فعال کنید دیوار مغزی اجازه دسترسی به دوربین را ندارد @@ -629,4 +628,26 @@ "شناسه تراکنش: " هنوز چیزی نیست. همین الآن شارژ کنید! تراکنش‌ها - \ No newline at end of file + نحوه ارسال Litecoin + آموزش Brainwallet + تمامی ویژگی‌های Brainwallet را امتحان کنید، از ارسال و دریافت رمزارز تا مدیریت کلیدهای خود. + مراحل ساده را دنبال کنید تا LTC را به کیف پول شخص دیگری ارسال کنید. آنها آن را در ثانیه‌ها دریافت می‌کنند! + ۱. موجودی خود را بررسی کنید + اگر موجودی صفر باشد یا در حال همگام‌سازی باشد، نمی‌توانید ارسال کنید. در صورت نیاز، با MoonPay در ۵ دقیقه شارژ کنید. + اینجا ضربه بزنید و شارژ کنید! + ۲. تنظیمات و حالت تاریک + با ضربه زدن بر روی تنظیمات در گوشه بالا سمت راست، تنظیمات را دقیق کنید. ترجیح حالت تاریک خود را با ضربه زدن بر روی در گوشه بالا سمت چپ تعیین کنید. + تراکنش‌های خود را بررسی کنید + هنگامی که تراکنش‌ها را دریافت کنید، آنها اینجا نمایش داده می‌شوند. برای بررسی، به بالا و پایین بکشید. برای تغییر بین همه، دریافت یا ارسال، بر روی فیلتر ضربه بزنید. + عمیق‌تر بروید! + برای نمایش جزئیات بیشتر و گسترش نمایش، بر روی تاریخچه ضربه بزنید. برای پیمایش در تمامی اطلاعات، به بالا یا پایین بکشید. + قیمت LTC را بررسی کنید + Brainwallet قیمت Litecoin (LTC) را به طور منظم به‌روزرسانی می‌کند. ارز محلی خود را انتخاب کنید تا نرخ را با کشیدن به دست آورید. از پرچم خود به عنوان راهنما استفاده کنید! + ۲. بر روی تب ارسال ضربه بزنید + موجودی بیش از صفر است؟ برای تعیین میزان ارسال بین ارز محلی و LTC تبدیل کنید. هزینه شبکه را در تنظیمات تنظیم کنید + ۳. مقادیر را تعیین کنید + آیا LTC دارید؟ ارز محلی خود را تغییر دهید تا بفهمید چقدر می‌توانید ارسال کنید. یا در LTC محاسبه کنید. برای تنظیم هزینه شبکه ترجیحی خود به تنظیمات بروید + قبل از ارسال تأیید کنید! + آدرس مقصد را اسکن یا جایگذاری کنید. دوبار بررسی کنید! ارز محلی خود را تغییر دهید تا بفهمید چقدر می‌توانید ارسال کنید. یادداشتی به عنوان یادآوری اضافه کنید. بر روی ادامه ضربه بزنید. + دسترسی دوربین را در تنظیمات فعال کنید + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 0db306d4..0c51e2e5 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -278,7 +278,6 @@ Solde : %1$s - Autoriser l\'accès à l\'appareil photo en allant dans « Paramètres » > « Apps » > « Loaf » > « Permissions » Loaf n\'est pas autorisé à accéder à l\'appareil photo @@ -644,4 +643,26 @@ "Veuillez accepter la permission pour nos notifications " "ID TX : " txns - \ No newline at end of file + Comment envoyer du Litecoin + Présentation de Brainwallet + Explorez toutes les fonctionnalités de Brainwallet, de l\'envoi et la réception de crypto à la gestion de vos clés. + Suivez les étapes simples pour envoyer du LTC au portefeuille de quelqu\'un d\'autre. Ils le reçoivent en quelques secondes! + 1. Vérifiez votre solde + Vous ne pouvez pas envoyer si le solde est zéro ou s\'il se synchronise. Complétez en 5 minutes avec MoonPay si nécessaire. + Appuyez ici et complétez! + 2. Paramètres et mode sombre + Ajustez les paramètres en appuyant sur Paramètres en haut à droite. Définissez votre préférence de mode sombre en appuyant sur le en haut à gauche. + Examinez vos transactions + Quand vous recevez des transactions, elles s\'affichent ici. Glissez vers le haut et le bas pour vérifier. Appuyez sur filtre pour basculer entre Tous, Reçus ou Envoyés. + Allez plus loin! + Appuyez sur Historique pour afficher plus de détails et agrandir la vue. Glissez vers le haut ou le bas pour parcourir toutes les informations. + Vérifiez le prix du LTC + Brainwallet met à jour régulièrement le prix du Litecoin (LTC). Choisissez votre devise locale pour obtenir le taux en glissant. Utilisez votre drapeau comme guide! + 2. Appuyez sur l\'onglet Envoyer + Solde supérieur à zéro? Basculez entre devise locale et LTC pour déterminer le montant à envoyer. Ajustez les frais réseau dans les paramètres. + 3. Définissez les montants + Avez-vous du LTC? Convertissez en devise locale pour calculer le montant à envoyer. Ou calculez directement en LTC. Allez aux paramètres pour ajuster vos frais réseau préférés. + Vérifiez avant d\'envoyer! + Scannez ou collez l\'adresse de destination. Vérifiez bien! Convertissez en devise locale pour déterminer le montant à envoyer. Ajoutez un mémo comme aide-mémoire. Appuyez sur Continuer. + Autoriser l\'accès à la caméra dans les Paramètres + diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index 30eb5d55..c2bc5af7 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -85,7 +85,6 @@ सुरक्षा केंद्र मात्रा शेष राशि: %1$s - \Settings\" > \""Apps\"" > \""Brainwallet\"" > \""Permissions\"""" में कैमरा एक्सेस की अनुमति दें" ब्रेनवॉलेट को कैमरे तक पहुंचने की अनुमति नहीं है मंजिल आपका अपना पता है. आप स्वयं को नहीं भेज सकते. ज्ञापन @@ -288,4 +287,26 @@ "कृपया हमारी सूचनाओं के लिए अनुमति स्वीकार करें " "TX ID: " लेनदेन - \ No newline at end of file + Litecoin कैसे भेजें + Brainwallet वॉकथ्रू + Brainwallet की सभी सुविधाओं को आजमाएं, क्रिप्टो भेजने और प्राप्त करने से लेकर अपनी कुंजियों को प्रबंधित करने तक। + किसी और के वॉलेट में LTC भेजने के लिए आसान चरणों का पालन करें। वे इसे सेकंडों में प्राप्त करते हैं! + 1. अपनी शेष राशि जांचें + यदि यह शून्य है या सिंक हो रहा है तो आप भेज नहीं सकते। यदि आवश्यक हो तो MoonPay के साथ 5 मिनट में टॉप अप करें। + यहां टैप करें और टॉप अप करें! + 2. सेटिंग्स और डार्क मोड + शीर्ष दाईं ओर सेटिंग्स पर टैप करके सूक्ष्म समायोजन करें। शीर्ष बाईं ओर पर टैप करके अपनी डार्क मोड प्राथमिकता सेट करें। + अपने लेनदेन की समीक्षा करें + जब आप लेनदेन प्राप्त करते हैं, तो वे यहां दिखाई देते हैं। जांचने के लिए ऊपर और नीचे स्वाइप करें। सभी, प्राप्त या भेजे गए को टॉगल करने के लिए फ़िल्टर पर टैप करें। + गहराई में जाएं! + अधिक विवरण दिखाने और दृश्य को विस्तृत करने के लिए इतिहास पर टैप करें। सभी जानकारी के माध्यम से स्क्रॉल करने के लिए ऊपर या नीचे स्वाइप करें। + LTC मूल्य जांचें + Brainwallet नियमित रूप से Litecoin (LTC) की कीमत को अपडेट करता है। दर प्राप्त करने के लिए स्वाइप करके अपनी स्थानीय मुद्रा चुनें। अपने फ्लैग को गाइड के रूप में उपयोग करें! + 2. भेजें टैब पर टैप करें + शेष राशि शून्य से अधिक है? कितना भेजना है यह जानने के लिए मुद्रा या LTC पर स्विच करें। सेटिंग्स में नेटवर्क शुल्क समायोजित करें + 3. मान सेट करें + क्या आपके पास कुछ LTC है? आप कितना भेज सकते हैं यह जानने के लिए अपनी स्थानीय फिएट आकृति को बदलें। या, LTC में गणना करें। पसंदीदा नेटवर्क शुल्क को समायोजित करने के लिए सेटिंग्स पर जाएं + भेजने से पहले सत्यापित करें! + गंतव्य पता स्कैन या पेस्ट करें। दोबारा जांचें! आप कितना भेज सकते हैं यह जानने के लिए अपनी स्थानीय फिएट को बदलें। एक सहायक स्मरणीय के रूप में एक मेमो जोड़ें। जारी रखें पर टैप करें। + सेटिंग्स में कैमरा एक्सेस की अनुमति दें + diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index c2b609e1..f5de1c1a 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -278,7 +278,6 @@ Keseimbangan: %1$s - Izinkan akses kamera di \"Pengaturan\" > \"Aplikasi\" > \"Brainwallet\" > \"Izin\" Brainwallet tidak diizinkan untuk mengakses kamera @@ -644,4 +643,26 @@ "Mohon izinkan notifikasi dari kami " "ID TX: " txn - \ No newline at end of file + Cara mengirim Litecoin + Panduan Brainwallet + Coba semua fitur Brainwallet, dari mengirim dan menerima crypto hingga mengelola kunci Anda. + Ikuti langkah-langkah mudah untuk mengirim LTC ke dompet orang lain. Mereka akan menerimanya dalam hitungan detik! + 1. Periksa saldo Anda + Anda tidak dapat mengirim jika saldo nol atau sedang sinkronisasi. Isi ulang dalam 5 menit dengan MoonPay jika diperlukan. + Ketuk di sini & isi ulang! + 2. Pengaturan & Mode Gelap + Sesuaikan dengan mengetuk Pengaturan di pojok kanan atas. Atur preferensi Mode Gelap dengan mengetuk di pojok kiri atas. + Tinjau transaksi Anda + Ketika Anda mendapatkan transaksi, mereka muncul di sini. Geser ke atas dan ke bawah untuk memeriksa. Ketuk filter untuk beralih antara Semua, Terima, atau Kirim. + Lihat Lebih Detail! + Ketuk Riwayat untuk menampilkan detail lebih lanjut dan memperluas tampilan. Geser ke atas atau ke bawah untuk scroll melalui semua informasi. + Periksa Harga LTC + Brainwallet memperbarui harga Litecoin (LTC) secara teratur. Pilih mata uang lokal Anda untuk mendapatkan kurs dengan menggeser. Gunakan bendera Anda sebagai panduan! + 2. Ketuk tab Kirim + Saldo lebih dari nol? Alihkan ke mata uang atau LTC untuk mengetahui jumlah yang akan dikirim. Sesuaikan biaya jaringan di pengaturan + 3. Atur nilai + Apakah Anda memiliki beberapa LTC? Ubah angka fiat lokal Anda untuk mengetahui berapa banyak yang dapat Anda kirim. Atau, hitung dalam LTC. Buka pengaturan untuk menyesuaikan biaya jaringan pilihan Anda + Verifikasi sebelum mengirim! + Pindai atau tempel alamat tujuan. Periksa dua kali! Ubah fiat lokal Anda untuk mengetahui berapa banyak yang dapat Anda kirim. Tambahkan memo sebagai pengingat praktis. Ketuk Lanjutkan. + Izinkan akses kamera di Pengaturan + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 6afb126c..1a1ed883 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -278,7 +278,6 @@ Saldo: %1$s - Consenti l’accesso alla fotocamera in “Impostazioni” > “Apps” > “Loaf” > “Permessi” L’accesso alla fotocamera non è consentito a Loaf. @@ -644,4 +643,26 @@ "Accetta l'autorizzazione per le nostre notifiche " "ID TX: " txns - \ No newline at end of file + Come inviare Litecoin + Brainwallet Walkthrough + Prova tutte le funzionalità di Brainwallet, dall\'invio e ricezione di criptovalute alla gestione delle tue chiavi. + Segui i semplici passaggi per inviare LTC al portafoglio di qualcun altro. Lo ricevono in pochi secondi! + 1. Controlla il tuo saldo + Non puoi inviare se è zero o se è in sincronizzazione. Se necessario, ricarica in 5 minuti con MoonPay. + Tocca qui e ricarica! + 2. Impostazioni e Modalità Scura + Perfeziona toccando le Impostazioni in alto a destra. Imposta la tua preferenza di Modalità Scura toccando il in alto a sinistra. + Rivedi le tue transazioni + Quando ricevi transazioni, vengono visualizzate qui. Scorri verso l\'alto e verso il basso per verificare. Tocca filtro per alternare Tutte, Ricevute o Inviate. + Vai più a fondo! + Tocca Cronologia per mostrare più dettagli e ampliare la visualizzazione. Scorri verso l\'alto o verso il basso per navigare tra tutte le informazioni. + Controlla il prezzo del LTC + Brainwallet aggiorna regolarmente il prezzo di Litecoin (LTC). Scegli la tua valuta locale per ottenere il tasso scorrendo. Usa la tua bandiera come guida! + 2. Tocca la scheda Invia + Saldo maggiore di zero? Passa a valuta o LTC per capire quanto inviare. Regola la commissione di rete nelle impostazioni + 3. Imposta i valori + Hai un po\' di LTC? Cambia da valuta fiat locale per capire quanto puoi inviare. Oppure, calcola in LTC. Vai alle impostazioni per regolare la commissione di rete preferita + Verifica prima di inviare! + Scansiona o incolla l\'indirizzo di destinazione. Verifica! Cambia la tua valuta fiat locale per capire quanto puoi inviare. Aggiungi una nota come promemoria utile. Tocca Continua. + Consenti l\'accesso alla fotocamera in Impostazioni + diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index f114137b..06123ab5 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -278,7 +278,6 @@ 残高: %1$s - 「設定」 > 「アプリ」 > 「ブレッド」 > 「許可」でカメラへのアクセスを許可してください ブレッドはカメラへのアクセスを許可されていません @@ -644,4 +643,26 @@ "通知の許可をお願いします " "TX ID: " トランザクション - \ No newline at end of file + Litecoinの送信方法 + Brainwallet チュートリアル + 送受信からキー管理まで、Brainwalletのすべての機能をお試しください。 + 簡単なステップに従って、LTCを他のウォレットに送信します。数秒で到着します! + 1. 残高を確認 + 残高がゼロまたは同期中の場合は送信できません。必要に応じてMoonPayで5分でチャージしてください。 + ここをタップしてチャージ! + 2. 設定とダークモード + 右上の設定をタップして調整します。左上の☀をタップしてダークモードの設定を行います。 + トランザクションを確認 + トランザクションがここに表示されます。上下にスワイプして確認できます。フィルターをタップして、すべて、受信、送信を切り替えます。 + 詳細を確認! + 履歴をタップして詳細を表示し、ビューを展開します。上下にスワイプしてすべての情報をスクロールできます。 + LTC価格をチェック + Brainwalletは定期的にLitecoin(LTC)の価格を更新します。スワイプして現地通貨を選択してレートを確認できます。フラグを参考にしてください! + 2. 送信タブをタップ + 残高がゼロ以上ですか?通貨またはLTCに切り替えて、送信額を計算します。設定でネットワーク手数料を調整できます + 3. 金額を設定 + LTCをお持ちですか?現地通貨で計算して送信可能な金額を確認できます。または、LTCで計算してください。設定で希望のネットワーク手数料を調整できます + 送信前に確認! + 宛先アドレスをスキャンまたは貼り付けます。よく確認してください!現地通貨で計算して送信可能な金額を確認します。メモを追加して便利に管理できます。続けるをタップします。 + 設定からカメラへのアクセスを許可してください + diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 5a391f67..31a63b98 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -278,7 +278,6 @@ 잔액: %1$s - \"설정\" > \"앱\" > \"Loaf\" > \"허용\"에서 카메라 접속을 허용해 주세요 Loaf의 카메라 접속이 허용되지 않았습니다 @@ -644,4 +643,26 @@ "알림 권한을 허용해 주세요 " "TX ID: " 거래 - \ No newline at end of file + Litecoin을 보내는 방법 + Brainwallet 둘러보기 + 암호화폐 송수신부터 키 관리까지 Brainwallet의 모든 기능을 체험해보세요. + 간단한 단계에 따라 LTC를 다른 사람의 지갑으로 보내세요. 몇 초 안에 도착합니다! + 1. 잔액 확인 + 잔액이 0이거나 동기화 중이면 보낼 수 없습니다. 필요하면 MoonPay로 5분 안에 충전하세요. + 여기를 탭하고 충전하세요! + 2. 설정 및 다크 모드 + 우측 상단의 설정을 탭하여 조정하세요. 좌측 상단의 를 탭하여 다크 모드 설정을 변경하세요. + 거래내역 확인 + 거래가 발생하면 여기에 표시됩니다. 위아래로 스와이프하여 확인하세요. 필터를 탭하여 모두, 수신 또는 발송을 전환하세요. + 자세히 보기! + 히스토리를 탭하면 더 자세한 정보가 표시되고 보기가 확장됩니다. 위아래로 스와이프하여 모든 정보를 살펴보세요. + LTC 가격 확인 + Brainwallet은 Litecoin(LTC) 가격을 정기적으로 업데이트합니다. 스와이프로 현지 통화를 선택하여 환율을 확인하세요. 국기를 참고하세요! + 2. 보내기 탭 탭하기 + 잔액이 0보다 많나요? 통화 또는 LTC로 전환하여 보낼 금액을 계산하세요. 설정에서 네트워크 수수료를 조정하세요. + 3. 금액 설정 + LTC를 보유하고 있나요? 현지 통화로 변경하여 보낼 수 있는 금액을 계산하세요. 또는 LTC로 계산하세요. 설정에서 선호하는 네트워크 수수료를 조정하세요. + 보내기 전에 확인하세요! + 수신자 주소를 스캔하거나 붙여넣기하세요. 확인하세요! 현지 통화로 변경하여 보낼 수 있는 금액을 계산하세요. 편리한 참고를 위해 메모를 추가하세요. 계속을 탭하세요. + 설정에서 카메라 접근을 허용해주세요 + diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 37e292a8..e2338533 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -85,7 +85,6 @@ Beveiligingscentrum Bedrag Saldo: %1$s - Sta cameratoegang toe in \"Instellingen\" > \"Apps\" > \"Brainwallet\" > \"Machtigingen\" Brainwallet mag niet op de camera zugreifen Het doeladdres is je eigen adres. Je kunt niet naar jezelf versturen. Notitie @@ -288,4 +287,26 @@ LTC Prijs "TX ID: " txns - \ No newline at end of file + Hoe u Litecoin verzendt + Brainwallet-rondleiding + Probeer alle functies van Brainwallet uit, van het verzenden en ontvangen van crypto tot het beheren van uw sleutels. + Volg de eenvoudige stappen om LTC naar de portemonnee van iemand anders te verzenden. Ze ontvangen het in enkele seconden! + 1. Controleer uw saldo + U kunt niet verzenden als het nul is of als het synchroniseert. Vul indien nodig in 5 minuten bij met MoonPay. + Tik hier en vul aan! + 2. Instellingen & Donkere modus + Verfijn de instellingen door rechtsboven op Instellingen te tikken. Stel uw voorkeur voor donkere modus in door linksboven op de te tikken. + Controleer uw transacties + Wanneer u transacties ontvangt, worden deze hier weergegeven. Veeg omhoog en omlaag om te controleren. Tik op filter om tussen Alles, Ontvangen of Verzonden te schakelen. + Duik dieper! + Tik op Geschiedenis om meer details weer te geven en de weergave uit te breiden. Veeg omhoog of omlaag om door alle informatie te scrollen. + Controleer de LTC-prijs + Brainwallet werkt de prijs van Litecoin (LTC) regelmatig bij. Kies uw lokale valuta om het tarief te zien door te vegen. Gebruik uw vlag als gids! + 2. Tik op het tabblad Verzenden + Saldo groter dan nul? Schakel tussen valuta of LTC om uit te rekenen hoeveel u wilt verzenden. Pas de netwerkvergoeding aan in de instellingen + 3. Stel de waarden in + Heeft u wat LTC? Wijzig uw lokale bedrag in fiat om uit te rekenen hoeveel u kunt verzenden. Of bereken in LTC. Ga naar instellingen om uw voorkeursnetwerkvergoeding aan te passen + Verifieer voordat u verzendt! + Scan of plak het doeladdres. Dubbel controleren! Wijzig uw lokale fiat om uit te rekenen hoeveel u kunt verzenden. Voeg een memo toe als handige herinnering. Tik op Doorgaan. + Sta cameratoegang toe in Instellingen + diff --git a/app/src/main/res/values-pa/strings.xml b/app/src/main/res/values-pa/strings.xml index dd540503..4968ff33 100644 --- a/app/src/main/res/values-pa/strings.xml +++ b/app/src/main/res/values-pa/strings.xml @@ -278,7 +278,6 @@ توازن: %1$s - "سیٹنگز" > "ایپس" > "برین والٹ" > "پرمیشرز" وچ کیمرہ رسائی دی اجازت دو۔ برین والٹ کو کیمرے تک رسائی کی اجازت نہیں ہے۔ @@ -654,4 +653,26 @@ "ਕਿਰਪਾ ਕਰਕੇ ਸਾਡੀਆਂ ਸੂਚਨਾਵਾਂ ਲਈ ਅਨੁਮਤੀ ਦਿਓ " "TX ID: " ਲੈਣ-ਦੇਣ - \ No newline at end of file + Litecoin ਭੇਜਣਾ ਕਿਵੇਂ ਹੈ + Brainwallet ਵਾਕਥਰੂ + Brainwallet ਦੀਆਂ ਸਾਰੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਆਜ਼ਮਾਓ, ਕ੍ਰਿਪਟੋ ਭੇਜਣ ਅਤੇ ਪ੍ਰਾਪਤ ਕਰਨ ਤੋਂ ਲੈ ਕੇ ਆਪਣੀਆਂ ਕੁੰਜੀਆਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨ ਤੱਕ। + LTC ਕਿਸੇ ਹੋਰ ਦੇ ਵਾਲਟ ਵਿੱਚ ਭੇਜਣ ਲਈ ਆਸਾਨ ਕਦਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰੋ। ਉਹਨਾਂ ਨੂੰ ਸਕਿੰਟਾਂ ਵਿੱਚ ਮਿਲ ਜਾਂਦਾ ਹੈ! + 1. ਆਪਣਾ ਬਕਾਇਆ ਚੈਕ ਕਰੋ + ਜੇ ਇਹ ਜ਼ੀਰੋ ਹੈ ਜਾਂ ਸਿੰਕ ਹੋ ਰਿਹਾ ਹੈ ਤਾਂ ਤੁਸੀਂ ਭੇਜ ਨਹੀਂ ਸਕ ਸਕਦੇ। ਲੋੜ ਪਵੇ ਤਾਂ MoonPay ਨਾਲ 5 ਮਿੰਟਾਂ ਵਿੱਚ ਟੌਪ ਅੱਪ ਕਰੋ। + ਇੱਥੇ ਟੈਪ ਕਰੋ ਅਤੇ ਟੌਪ ਅੱਪ ਕਰੋ! + 2. ਸੈਟਿੰਗਸ ਅਤੇ ਡਾਰਕ ਮੋਡ + ਸੱਜੇ ਪਾਸੇ ਸਟੀਕ ਅਪਣਾਉਣ ਲਈ ਸੈਟਿੰਗਸ \'ਤੇ ਟੈਪ ਕਰੋ। ਉੱਪਰ ਖੱਬੇ ਪਾਸੇ \'ਤੇ ਟੈਪ ਕਰ ਕੇ ਆਪਣੀ ਡਾਰਕ ਮੋਡ ਤਰਜੀਹ ਸੈਟ ਕਰੋ। + ਆਪਣੀਆਂ ਲੈਣ-ਦੇਣ ਦੀ ਸਮੀਖਿਆ ਕਰੋ + ਜਦੋਂ ਤੁਹਾਨੂੰ ਲੈਣ-ਦੇਣ ਮਿਲਦੀ ਹੈ, ਉਹ ਇੱਥੇ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ। ਚੈਕ ਕਰਨ ਲਈ ਉੱਪਰ ਅਤੇ ਹੇਠਾਂ ਸਵਾਈਪ ਕਰੋ। ਸਭ, ਪ੍ਰਾਪਤ ਜਾਂ ਭੇਜੇ ਗਏ ਨੂੰ ਟੋਗਲ ਕਰਨ ਲਈ ਫਿਲਟਰ \'ਤੇ ਟੈਪ ਕਰੋ। + ਡੂੰਘੇ ਹੋ ਜਾਓ! + ਹੋਰ ਵਿਸਥਾਰ ਦਿਖਾਉਣ ਅਤੇ ਵਿਊ ਨੂੰ ਵਿਸਤਾਰ ਕਰਨ ਲਈ ਹਿਸਟਰੀ \'ਤੇ ਟੈਪ ਕਰੋ। ਸਾਰੀ ਜਾਣਕਾਰੀ ਵਿਚੋਂ ਸਕ੍ਰੋਲ ਕਰਨ ਲਈ ਉੱਪਰ ਜਾਂ ਹੇਠਾਂ ਸਵਾਈਪ ਕਰੋ। + LTC ਮੁੱਲ ਦੀ ਜਾਂਚ ਕਰੋ + Brainwallet ਨਿਯਮਿਤ ਰੂਪ ਨਾਲ Litecoin (LTC) ਦੀ ਕੀਮਤ ਅਪਡੇਟ ਕਰਦਾ ਹੈ। ਦਰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਵਾਈਪ ਕਰ ਕੇ ਆਪਣੀ ਸਥਾਨਕ ਮੁਦਰਾ ਚੁਣੋ। ਆਪਣਾ ਝੰਡਾ ਗਾਈਡ ਦੇ ਰੂਪ ਵਿੱਚ ਵਰਤੋ! + 2. ਭੇਜੋ ਟੈਬ \'ਤੇ ਟੈਪ ਕਰੋ + ਬਕਾਇਆ ਜ਼ੀਰੋ ਤੋਂ ਵੱਧ ਹੈ? ਇਹ ਪਤਾ ਲਗਾਉਣ ਲਈ ਮੁਦਰਾ ਜਾਂ LTC ਵਿੱਚ ਸਵਿੱਚ ਕਰੋ ਕਿ ਕਿੰਨਾ ਭੇਜਣਾ ਹੈ। ਸੈਟਿੰਗਸ ਵਿੱਚ ਨੈਟਵਰਕ ਫੀਸ ਨੂੰ ਸਮਾਯੋਜਿਤ ਕਰੋ + 3. ਮੁੱਲ ਸੈਟ ਕਰੋ + ਕੀ ਤੁਹਾਡੇ ਕੋਲ ਕੁਝ LTC ਹੈ? ਇਹ ਪਤਾ ਲਗਾਉਣ ਲਈ ਆਪਣੀ ਸਥਾਨਕ ਫਿਆਟ ਸੰਖਿਆ ਨੂੰ ਬਦਲੋ ਕਿ ਤੁਸੀਂ ਕਿੰਨਾ ਭੇਜ ਸਕਦੇ ਹੋ। ਜਾਂ, LTC ਵਿੱਚ ਗਣਨਾ ਕਰੋ। ਆਪਣੀ ਪਸੰਦ ਦੀ ਨੈਟਵਰਕ ਫੀਸ ਨੂੰ ਸਮਾਯੋਜਿਤ ਕਰਨ ਲਈ ਸੈਟਿੰਗਸ ਵਿੱਚ ਜਾਓ + ਭੇਜਣ ਤੋਂ ਪਹਿਲਾਂ ਤਸਦੀਕ ਕਰੋ! + ਮੰਜ਼ਿਲ ਦਾ ਪਤਾ ਸਕੈਨ ਕਰੋ ਜਾਂ ਚਿਪਕਾਓ। ਦੋ ਵਾਰ ਚੈਕ ਕਰੋ! ਇਹ ਪਤਾ ਲਗਾਉਣ ਲਈ ਆਪਣੀ ਸਥਾਨਕ ਫਿਆਟ ਨੂੰ ਬਦਲੋ ਕਿ ਤੁਸੀਂ ਕਿੰਨਾ ਭੇਜ ਸਕਦੇ ਹੋ। ਆਸਾਨ ਯਾਦ ਦਿਖਾਉਣ ਲਈ ਇੱਕ ਯਾਦ ਸ਼ਾਮਲ ਕਰੋ। ਜਾਰੀ ਰੱਖੋ \'ਤੇ ਟੈਪ ਕਰੋ। + ਸੈਟਿੰਗਜ਼ ਵਿੱਚ ਕੈਮਰੇ ਦੀ ਅਨੁਮਤੀ ਦਿਓ + diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 900259f9..dca7e0c9 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -278,7 +278,6 @@ Równowaga: %1$s - Zezwól na dostęp do kamery w "Ustawienia" > "Aplikacje" > "Brainwallet" > "Uprawnienia". Brainwallet nie ma dostępu do kamery @@ -649,4 +648,26 @@ "Proszę wyraź zgodę na nasze powiadomienia " "ID transakcji: " transakcje - \ No newline at end of file + Jak wysłać Litecoin + Przewodnik po Brainwallet + Spróbuj wszystkich funkcji Brainwallet, od wysyłania i otrzymywania kryptowalut po zarządzanie swoimi kluczami. + Postępuj zgodnie z łatwymi krokami, aby wysłać LTC do portfela innej osoby. Otrzyma to w sekundy! + 1. Sprawdź swoje saldo + Nie możesz wysłać, jeśli wynosi zero lub trwa synchronizacja. W razie potrzeby doładuj się za 5 minut za pośrednictwem MoonPay. + Kliknij tutaj i doładuj! + 2. Ustawienia i tryb ciemny + Dostosuj ustawienia, dotykając przycisku Ustawienia w prawym górnym rogu. Ustaw preferowanie trybu ciemnego, dotykając w lewym górnym rogu. + Przejrzyj swoje transakcje + Gdy otrzymasz transakcje, pojawią się tutaj. Przesuń w górę i w dół, aby sprawdzić. Kliknij filtr, aby przełączać się między Wszystkie, Otrzymane lub Wysłane. + Zagłęb się! + Dotknij Historii, aby wyświetlić więcej szczegółów i rozwinąć widok. Przesuń w górę lub w dół, aby przewinąć wszystkie informacje. + Sprawdź cenę LTC + Brainwallet regularnie aktualizuje cenę Litecoin (LTC). Wybierz swoją walutę lokalną, aby uzyskać kurs, przesuwając. Użyj swojej flagi jako przewodnika! + 2. Dotknij zakładkę Wyślij + Saldo większe od zera? Przełącz się na walutę lub LTC, aby sprawdzić, ile wysłać. Dostosuj opłatę sieciową w ustawieniach + 3. Ustaw wartości + Masz LTC? Zmień swoją lokalną walutę fiat, aby sprawdzić, ile możesz wysłać. Lub oblicz w LTC. Przejdź do ustawień, aby dostosować preferowaną opłatę sieciową + Sprawdź przed wysłaniem! + Zeskanuj lub wklej adres docelowy. Sprawdź dokładnie! Zmień swoją lokalną walutę fiat, aby sprawdzić, ile możesz wysłać. Dodaj notatkę jako przydatne przypomnienie. Dotknij Kontynuuj. + Zezwól na dostęp do aparatu w Ustawieniach + diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 59545547..83815989 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -85,7 +85,6 @@ Central de Segurança Valor Saldo: %1$s - Permita acesso à câmera em \"Configurações\" > \"Apps\" > \"Brainwallet\" > \"Permissões\" Brainwallet não tem permissão para acessar a câmera O destino é seu próprio endereço. Você não pode enviar para si mesmo. Memorando @@ -288,4 +287,26 @@ "Por favor, aceite a permissão para nossas notificações " "ID TX: " txns - \ No newline at end of file + Como enviar Litecoin + Passo a Passo Brainwallet + Experimente todos os recursos do Brainwallet, desde enviar e receber criptomoedas até gerenciar suas chaves. + Siga os passos fáceis para enviar LTC para a carteira de outra pessoa. Ela recebe em segundos! + 1. Verifique seu saldo + Você não pode enviar se o saldo for zero ou estiver sincronizando. Complete em 5 minutos com MoonPay se necessário. + Toque aqui & complete! + 2. Configurações & Modo Escuro + Ajuste as configurações tocando em Configurações no canto superior direito. Defina sua preferência de Modo Escuro tocando no no canto superior esquerdo. + Revise suas transações + Quando você receber transações, elas aparecem aqui. Deslize para cima e para baixo para verificar. Toque em filtro para alternar entre Todas, Recebidas ou Enviadas. + Aprofunde-se! + Toque em Histórico para mostrar mais detalhes e expandir a visualização. Deslize para cima ou para baixo para percorrer todas as informações. + Verifique o Preço do LTC + Brainwallet atualiza o preço do Litecoin (LTC) regularmente. Escolha sua moeda local para obter a taxa deslizando. Use sua bandeira como guia! + 2. Toque na aba Enviar + Saldo maior que zero? Alterne entre moeda local ou LTC para calcular quanto enviar. Ajuste a taxa de rede nas configurações + 3. Defina os valores + Você tem alguns LTC? Mude seu valor em moeda fiduciária local para calcular quanto pode enviar. Ou calcule em LTC. Vá para configurações para ajustar sua taxa de rede preferida + Verifique antes de enviar! + Escaneie ou cole o endereço de destino. Verifique bem! Mude sua moeda fiduciária local para calcular quanto pode enviar. Adicione um memorando como lembrete útil. Toque em Continuar. + Permita o acesso à câmera nas Configurações + diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml deleted file mode 100644 index 2efac42b..00000000 --- a/app/src/main/res/values-pt/strings.xml +++ /dev/null @@ -1,624 +0,0 @@ - - - - - Blog - - - Política de Privacidade - - - - Sobre - - Fechar - - - - - - - - Erro - - - Os seus dados encriptados pelo Loaf foram recentemente invalidados porque o seu ecrã de bloqueio do Android estava desativado. - - Erro na KeyStore do Android - - - - - - - - PIN Definido - - Falha no envio - - Confirmação de Envio - - Dinheiro Enviado! - - Impressão digital reconhecida - - - - - Cancelar - - - - Não - - OK - - - enviar - - - - Sim - - Montante a enviar: - - - - - - Para - - Custo total - - - - Moeda de apresentação da Litecoin - - Taxa de Câmbio - - - - Brainwallet não pode ser autenticado devido a um bug na sua versão do Android. [Toque aqui para mais informações.] - - - Impressão digital não reconhecida. Por favor, tente novamente. - - - - - - - - - A verificar o saldo da chave privada... - - Enviar %1$s desta chave privada para a sua carteira? A rede Litecoin receberá uma taxa de %2$s. - - - Esta chave privada está vazia. - - - Não é uma chave privada válida - - Erro a assinar transação - - - - - - Esta chave privada está protegida com uma palavra-passe. - - - - - - - - - - - - Ignorar - - - - AVISO - - - - - - - - - - Bloquear Carteira - - Centro de Segurança - - Definições - - Suporte ao cliente - - Criar Nova Carteira - - Menu - - - Mudar para o modo automático - - Ligação estabelecida - - Introduza o endereço de IP e porta do nó (opcional) - - Introduza o nó - - Trocar para modo manual - - Nó primário atual - - Ligação não estabelecida - - Estado da ligação do nó - - Nós de Litecoin - - Pedido de Pagamento Inválido - - Documento não suportado ou corrompido - - - o pedido expirou - - - Os pagamentos em Litecoin não podem ser inferiores a %1$s. - - As saídas de transações em Litecoin não podem ser inferiores a %1$s. - - - certificado não fidedigno - - - - - - - - A sua carteira pode estar dessincronizada. Isto pode ser frequentemente resolvido ao voltar a digitalizar a blockchain. - - Transação Rejeitada - - - - - - - - - A Loaf foi atualizada para usar um PIN de 6-dígitos. Toque aqui para atualizar. - - Atualizar PIN - - Ative as notificações para receber mensagens especiais da Loaf no futuro. - - Notificações Push - - - - Notificações - - Copiado para a área de transferência. - - Email - - - Partilhar - - - Receber - - Feito - - Recuperar Carteira - - - - Recupere a sua Loaf com a sua chave de papel. - - A chave de papel que introduziu é inválida. Por favor verifique cada palavra e tente novamente. - - - Seguinte - - - - - - - - Sincronizar - - - Sincronizar com a Blockchain? - - - Se uma transação aparece como concluída na sua rede Litecoin mas não na sua Loaf. - - Recebe repetidamente uma mensagem de erro dizendo que a sua transação foi rejeitada. - - Começar Sincronização - - Não será capaz de enviar dinheiro enquanto estiver a sincronizar com a blockchain. - - - - Quando sincronizar? - - - - - - - Ativar todos os recursos de segurança para máxima proteção. - - A única forma de aceder às suas Litecoins se perder ou atualizar o seu telefone. - - Chave de Papel - - Protege a sua Loaf de utilizadores não autorizados. - - PIN de 4-Dígitos - - Centro de Segurança - - - - - Quantia - - Saldo: %1$s - - Permita o acesso à câmara em \"Definições\" > \"Aplicações\" > \"Loaf\" > \"Permissões\" - - O Loaf não tem autorização para aceder à câmara - - - - O destino é o seu próprio endereço. Não pode enviar a si mesmo. - - - Nota - - A área de transferência está vazia - - - - - - Endereço Inválido - - O envio encontra-se desativado durante a reanálise completa. - - - - - Colar - - - Não foi possível carregar a solicitação de pagamento - - Digitalizar - - Enviar - - Enviar - - Introduzir um endereço Litecoin - - - - - - - - Os endereços de Litecoin destinam-se apenas a uma única utilização. - - A reutilização reduz a sua privacidade e a do destinatário e pode resultar em perdas se o destinatário não controlar diretamente o endereço. - - - Sobre - - Definições avançadas - - Mostrar moeda - - - - - Gerir - - - - Partilhar Dados Anónimos - - Sincronizar Blockchain - - - - - Carteira - - - Ajude a melhorar a Loaf partilhando os seus dados anónimos connosco. Isto não inclui quaisquer informações financeiras. Respeitamos a sua privacidade financeira. - - Partilhar Dados? - - Partilhar Dados Anónimos? - - - A chave de papel é a única forma de restaurar a sua Loaf se o seu telefone for perdido, roubado, partido ou atualizado.\n\nVamos mostrar-lhe uma lista de palavras para escrever numa folha de papel e manter em segurança. - - Escrever Chave de Papel - - - - - A Sincronizar - - - - - - - - - - - - - - - - - - - - - Pedir sempre um código de acesso - - Ser-lhe-á pedido para introduzir o seu PIN de 6-dígitos para enviar qualquer transação acima do seu limite de gastos, e a cada 48 horas após a última utilização do seu PIN de 6-dígitos. - - - Limite de Gastos da Autorização por Impressão Digital - - Disponível para Gastar - - Concluída - - Saldo final: %1$s - - - - - INVÁLIDA - - - - - Saldo inicial: %1$s - - - - - - Nota - - As suas transações aparecerão aqui. - - em %1$s - - - - - - Recebeu %1$s - - - Enviou %1$s - - - Estado - - Detalhes da Transação - - para %1$s - - ID da Transação de Litecoin - - Recebida neste endereço - - Enviada para este endereço - - - Meu Endereço - - Redefinir PIN - - - Introduzir PIN - - Sensor de Toque - - - Desbloqueie o seu dispositivo Android para continuar. - - - Ver no blockchain - Autenticação necessária - - Carteira Desbloqueada - - Esqueceu-se da sua frase-semente ou PIN? - - Lembre-se deste PIN. Se o esquecer, não será capaz de aceder às suas Litecoins. - - O seu PIN será usado para desbloquear a sua Loaf e para enviar dinheiro. - - Definir PIN - - Reintroduzir PIN - - Introduza o seu PIN atual. - - Introduza o seu novo PIN. - - Reintroduza o seu novo PIN. - - - - Atualizar PIN - - - - - Copiar - - - - - - - - - A Atualizar... - - - - Tem a certeza de que quer eliminar esta carteira? - - Limpar carteira? - - - - - - - - Limpar - - - - - - HISTORY - Saldo - Valor LTC atual em %1$s - Línguas - Mostrar - Mostrar minha frase de semente - Preferência de sincronização: %1$s falsos positivos - "Baixa privacidade (~19 minutos) " - "Semiprivado (~42 minutos) " - "Anônimo (~ 77 minutos) " - - - Serviço - Rede - Tarifas: - Cancelar - OK - Conceda permissão de notificação - Informações de permissão - Permissão de notificação concedida - Voltar - Suas palavras-semente - "Só para você. \n É o que permite enviar." - Blockchain: Litecoin - Eu salvei em papel ou metal - Você salvou, certo? - Prove!\nArraste as palavras na ordem correta. - Jogo e sincronização - Pronto para começar? - Isto é somente para você. - Configure a senha do aplicativo, abra seu gerenciador de senhas ou pegue uma caneta para registrá-la junto com sua nova frase-semente. - Não sabemos e nem temos uma cópia! - Configurar senha do aplicativo - Escolha uma senha para desbloquear seu Brainwallet - Não é um código de bloqueio do telefone! - Faça diferente. Deixe legal. - Você salvou suas chaves. - Esmague o próximo nível. - Restaure seu poder - Você pode voltar de onde começou - Restaurar minha Brainwallet - Claro - Não adivinhe.\n\nSeriam necessárias \n5.444.517.950.000.000.000.000.000.000.000.000.000.000.000.000.000 tentativas - Confirmar - Você não esqueceu, não é? Digite novamente. Ou volte para começar de novo. - Restaurar com frase semente - Senha incorreta, tente novamente! - seta para baixo à esquerda - alternar modo escuro - Toque em uma palavra e arraste-a para o lugar - Recarregar? - Obtenha Litecoin em 5 minutos - Obtenha um pouco de Litecoin! - Talvez mais tarde. - Segurança - Linguagem - Moeda - Jogos - Apoiar - Mídias Sociais - Trancar - Desbloquear - Tema - Versão do aplicativo: - Sincronizar - Duração da sincronização: >20 minutos - Jogo %1$d: - Frase semente - Compartilhar dados analíticos - Atualizar PIN - Mostrar - Taxa de rede (por kb): valor mais alto significa que a transação é concluída mais cedo - Principal - Médio - Baixo - Sincronizar metadados: - Comprar LTC - Desenvolvido por Moonpay - Carregando... - O valor está abaixo do limite mínimo (%1$f) - O valor excede o limite máximo (%1$f) - Comprar Litecoin - Seja depositado em seu endereço LTC: - Compre com Moonpay - Novo endereço - Comprar / Receber - Personalizado - Redefinir / Recomeçar - Exportar dados da transação - Central de jogos - Você é bom o suficiente para ser o número 1? - Ícone de avião de papel para representar a ação de Enviar - Duas setas representando a compra e o recebimento de Litecoin - controle de videogame - seta circular girando no sentido anti-horário - Histórico - em %1$s - MEU SALDO - Sincronização impossível sem internet! - Por favor, reconecte-se para concluir a sincronização. - Total de tx da carteira: - desenho simples de uma casa - Início - "Memo: " - "Bloco: " - "Data: " - "Valor: " - "Taxas: " - Nada ainda. Faça um depósito agora! - HISTÓRICO DE TRANSAÇÕES - - diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 8d00ae8b..0aed26ed 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -278,7 +278,6 @@ Баланс: %1$s - Разрешить доступ к камере в: \"Настройки\" > \"Приложения\" > \"Loaf\" > \"Разрешения\" Приложению Loaf не разрешен доступ к камере @@ -644,4 +643,26 @@ "Пожалуйста, разрешите отправку уведомлений " "ID транзакции: " транзакции - \ No newline at end of file + Как отправить Litecoin + Обзор Brainwallet + Попробуйте все возможности Brainwallet: отправку и получение криптовалюты, управление ключами. + Следуйте простым шагам для отправки LTC на кошелек другого пользователя. Он получит это за секунды! + 1. Проверьте баланс + Вы не сможете отправить, если баланс равен нулю или идет синхронизация. При необходимости пополните через MoonPay за 5 минут. + Нажмите и пополните! + 2. Настройки и тёмный режим + Настройте параметры, нажав на Настройки в верхнем правом углу. Выберите тёмный режим, нажав в верхнем левом углу. + Проверьте ваши транзакции + Транзакции отображаются здесь. Проведите вверх и вниз для просмотра. Нажмите фильтр для переключения между Всеми, Полученными или Отправленными. + Узнайте подробнее! + Нажмите на История для более подробного просмотра. Проведите вверх или вниз для прокрутки всей информации. + Проверьте цену LTC + Brainwallet регулярно обновляет цену Litecoin (LTC). Выберите вашу местную валюту, проведя пальцем. Используйте флаг как ориентир! + 2. Нажмите вкладку Отправить + Баланс больше нуля? Переключайтесь между валютой и LTC, чтобы рассчитать сумму отправки. Настройте комиссию сети в параметрах + 3. Установите значения + У вас есть LTC? Конвертируйте между фиатом и LTC, чтобы узнать, сколько вы можете отправить. Или рассчитывайте в LTC. Перейдите в настройки для выбора предпочитаемой комиссии сети + Проверьте перед отправкой! + Отсканируйте или вставьте адрес получателя. Проверьте дважды! Конвертируйте между фиатом и LTC, чтобы узнать сумму отправки. Добавьте заметку в качестве напоминания. Нажмите Продолжить. + Разрешите доступ к камере в Настройках + diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index f6b0f7d3..a4e26f46 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -85,7 +85,6 @@ Säkerhetscenter Belopp Saldo: %1$s - Tillåt kameraåtkomst i \Settings\"> \""Appar\"" > \""Brainwallet\"" > \""Behörigheter\""""" Brainwallet får inte komma åt kameran Destinationen är din egen adress. Du kan inte skicka till dig själv. Pm @@ -288,4 +287,26 @@ LTC-pris "TX-ID: " transaktioner - \ No newline at end of file + Hur du skickar Litecoin + Brainwallet Genomgång + Prova alla funktioner i Brainwallet, från att skicka och ta emot krypto till att hantera dina nycklar. + Följ de enkla stegen för att skicka LTC till någon annans plånbok. De får det på sekunder! + 1. Kontrollera ditt saldo + Du kan inte skicka om det är noll eller synkroniseras. Fyll på på 5 minuter med MoonPay om det behövs. + Tryck här & fyll på! + 2. Inställningar & Mörkt läge + Finjustera genom att trycka på Inställningar i det övre högra hörnet. Ställ in ditt mörklägesinställningar genom att trycka på i det övre vänstra hörnet. + Granska dina transaktioner + När du får transaktioner visas de här. Svep upp och ned för att kontrollera. Tryck på filter för att växla mellan Alla, Mottagna eller Skickade. + Gå djupare! + Tryck på Historik för att visa mer detalj och expandera vyn. Svep upp eller ned för att bläddra genom all information. + Kontrollera LTC-priset + Brainwallet uppdaterar priset på Litecoin (LTC) regelbundet. Välj din lokala valuta för att få växelkursen genom att svepa. Använd din flagga som guide! + 2. Tryck på Skicka-fliken + Saldo över noll? Växla mellan valuta och LTC för att räkna ut hur mycket du ska skicka. Justera nätverksavgiften i inställningar. + 3. Ställ in värdena + Har du något LTC? Ändra din lokala fiat-valuta för att räkna ut hur mycket du kan skicka. Eller beräkna i LTC. Gå till inställningar för att justera din föredragna nätverksavgift. + Verifiera innan du skickar! + Skanna eller klistra in destinationsadressen. Dubbelkolla! Ändra din lokala fiat-valuta för att räkna ut hur mycket du kan skicka. Lägg till en anteckning som en praktisk påminnelse. Tryck Fortsätt. + Tillåt kameraåtkomst i Inställningar + diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index f39b72aa..df5f24a4 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -85,7 +85,6 @@ ศูนย์ความปลอดภัย จำนวนเงิน ยอดคงเหลือ: %1$s - อนุญาตการเข้าถึงกล้องใน "Settings" > "Apps" > "Brainwallet" > "Permissions" Brainwallet ไม่ได้รับอนุญาตให้เข้าถึงกล้อง ที่อยู่ปลายทางเป็นที่อยู่ของคุณเอง คุณไม่สามารถส่งเงินให้ตัวเองได้ หมายเหตุ @@ -288,4 +287,26 @@ ราคา LTC "TX ID: " รายการทำธุรกรรม - \ No newline at end of file + วิธีการส่ง Litecoin + Brainwallet ทำความคุ้นเคย + ลองใช้ฟีเจอร์ทั้งหมดของ Brainwallet ตั้งแต่การส่งและรับคริปโตไปจนถึงการจัดการคีย์ของคุณ + ทำตามขั้นตอนง่าย ๆ เพื่อส่ง LTC ไปยังกระเป๋าของคนอื่น พวกเขาจะได้รับภายในไม่กี่วินาที! + 1. ตรวจสอบยอดคงเหลือของคุณ + คุณไม่สามารถส่งได้หากเป็นศูนย์หรือกำลังซิงค์ อัปเกรดใน 5 นาทีด้วย MoonPay หากจำเป็น + แตะที่นี่และอัปเกรด! + 2. การตั้งค่าและโหมดมืด + ปรับแต่งโดยแตะการตั้งค่าที่มุมขวาบน ตั้งค่าความชอบโหมดมืดของคุณโดยแตะ ที่มุมซ้ายบน + ตรวจสอบธุรกรรมของคุณ + เมื่อคุณได้รับธุรกรรม ธุรกรรมเหล่านั้นจะแสดงที่นี่ เลื่อนขึ้นและลงเพื่อตรวจสอบ แตะตัวกรองเพื่อสลับระหว่างทั้งหมด รับหรือส่ง + เจาะลึก! + แตะประวัติเพื่อแสดงรายละเอียดเพิ่มเติมและขยายมุมมอง เลื่อนขึ้นหรือลงเพื่อดูข้อมูลทั้งหมด + ตรวจสอบราคา LTC + Brainwallet อัปเดตราคา Litecoin (LTC) อย่างสม่ำเสมอ เลือกสกุลเงินท้องถิ่นของคุณเพื่อรับอัตราโดยการเลื่อน ใช้ธงของคุณเป็นแนวทาง! + 2. แตะแท็บส่ง + ยอดคงเหลือมากกว่าศูนย์? สลับไปยังสกุลเงินหรือ LTC เพื่อคำนวณจำนวนที่จะส่ง ปรับค่าธรรมเนียมเครือข่ายในการตั้งค่า + 3. ตั้งค่าจำนวนเงิน + คุณมี LTC หรือไม่ เปลี่ยนตัวเลขเงินฟิแอตท้องถิ่นของคุณเพื่อคำนวณจำนวนที่คุณสามารถส่งได้ หรือคำนวณใน LTC ไปที่การตั้งค่าเพื่อปรับค่าธรรมเนียมเครือข่ายที่คุณต้องการ + ตรวจสอบก่อนส่ง! + สแกนหรือวาง address ปลายทาง ตรวจสอบอีกครั้ง! เปลี่ยนตัวเลขเงินฟิแอตท้องถิ่นของคุณเพื่อคำนวณจำนวนที่คุณสามารถส่งได้ เพิ่มบันทึกเป็นการเตือนที่มีประโยชน์ แตะ ดำเนินการต่อ + อนุญาตการเข้าถึงกล้องในการตั้งค่า + diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index 6be7b336..0230b22d 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -293,7 +293,6 @@ Denge: %1$s - İçinde kamera erişimine izin ver \"Ayarlar\" > \"Uygulamalar\" > \"Brainwallet\" > \"İzinler\" Brainwallet\'in kameraya erişmesine izin verilmiyor @@ -576,7 +575,6 @@ karanlık moda geçiş Bir kelimeye dokunun ve yerine sürükleyin Tamamlansın mı?\n - Tamamlansın mı? 5 dakikada Litecoin\'i edinin Biraz Litecoin alın! Belki daha sonra. @@ -663,4 +661,26 @@ LTC Fiyatı "İŞLEM KİMLİĞİ: " işlem - \ No newline at end of file + Litecoin Nasıl Gönderilir + Brainwallet Rehberi + Brainwallet\'ın tüm özelliklerini deneyin: kripto gönderme ve alma işlemlerinden anahtar yönetimine kadar. + LTC\'yi başka birinin cüzdanına göndermek için basit adımları izleyin. Saniyeler içinde ulaşır! + 1. Bakiyenizi Kontrol Edin + Bakiye sıfırsa veya senkronize oluyorsa gönderemezsiniz. Gerekirse MoonPay ile 5 dakikada yükleyin. + Buraya Dokunun & Yükleyin! + 2. Ayarlar & Koyu Mod + Sağ üst köşedeki Ayarlar\'a dokunarak ayrıntılı ayarlamalar yapın. Sol üst köşedeki simgesine dokunarak Koyu Mod tercihini ayarlayın. + İşlemlerinizi Gözden Geçirin + İşlem aldığınızda burada görüntülenir. Kontrol etmek için yukarı ve aşağı kaydırın. Filtre seçeneğini kullanarak Tüm, Al veya Gönder\'i değiştirin. + Daha Derine İn! + Daha ayrıntılı bilgi görmek ve görünümü genişletmek için Geçmiş\'e dokunun. Tüm bilgileri görmek için yukarı veya aşağı kaydırın. + LTC Fiyatını Kontrol Edin + Brainwallet, Litecoin (LTC) fiyatını düzenli olarak günceller. Kaydırarak yerel para biriminizi seçin ve oranı öğrenin. Rehberiniz olarak bayrağınızı kullanın! + 2. Gönder Sekmesine Dokunun + Bakiye sıfırdan fazla mı? Ne kadar göndereceğinizi öğrenmek için para birimini veya LTC\'ye değiştirin. Ayarlardan ağ ücretini ayarlayın. + 3. Değerleri Ayarlayın + Biraz LTC\'niz var mı? Ne kadar gönderebileceğinizi öğrenmek için yerel para biriminizi değiştirin. Veya LTC cinsinden hesaplayın. Tercih ettiğiniz ağ ücretini ayarlamak için Ayarlar\'a gidin. + Göndermeden Önce Doğrulayın! + Hedef adresini tarayın veya yapıştırın. İki kez kontrol edin! Ne kadar gönderebileceğinizi öğrenmek için yerel para biriminizi değiştirin. Hatırlatıcı olması için not ekleyin. Devam Et\'e dokunun. + Ayarlar\'da kamera erişimine izin verin + diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index ca781c9c..33114592 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -508,7 +508,6 @@ Баланс Поточне значення LTC в %1$s Мови - Дозволити доступ до камери в \"Налаштуваннях\" > \"Програми\" > \\Brainwallet\" > \"Дозволи\" Потрібна автентифікація Поганий запит на оплату Підключено @@ -646,4 +645,26 @@ Ціна LTC "ID транзакції: " транз. - \ No newline at end of file + Як відправити Litecoin + Огляд Brainwallet + Спробуйте всі функції Brainwallet: від відправлення та отримання криптовалюти до управління вашими ключами. + Виконайте прості кроки, щоб відправити LTC на гаманець іншої людини. Вони отримають це за кілька секунд! + 1. Перевірте свій баланс + Ви не можете відправити, якщо баланс нульовий або синхронізується. За потреби поповніть його за 5 хвилин через MoonPay. + Натисніть сюди й поповніть! + 2. Налаштування та темний режим + Налаштуйте параметри, натиснувши «Налаштування» у верхньому правому куті. Установіть режим темної тематики, натиснувши на у верхньому лівому куті. + Переглядайте ваші транзакції + Коли ви отримуєте транзакції, вони відображаються тут. Проведіть пальцем вгору та вниз для перевірки. Натисніть на фільтр, щоб переключатися між «Усі», «Отримані» або «Відправлені». + Дивіться детальніше! + Натисніть на «Історія», щоб показати більше деталей та розширити вид. Проведіть пальцем вгору або вниз для перегляду всієї інформації. + Перевірте ціну LTC + Brainwallet регулярно оновлює ціну Litecoin (LTC). Виберіть вашу місцеву валюту, щоб дізнатися курс, проведіть пальцем. Використовуйте вашу країну як орієнтир! + 2. Натисніть на вкладку «Відправити» + Баланс більший за нуль? Перейдіть на вашу валюту або LTC, щоб визначити суму для відправлення. Відрегулюйте комісію мережі в налаштуваннях + 3. Установіть суми + У вас є деякі LTC? Змініть вашу місцеву валюту на фіатну, щоб дізнатися, скільки можна відправити. Або розраховуйте в LTC. Перейдіть у налаштування, щоб відрегулювати бажану комісію мережі + Перевірте перед відправленням! + Відсканюйте або вставте адресу призначення. Перевірте двічі! Змініть вашу місцеву валюту на фіатну, щоб дізнатися, скільки можна відправити. Додайте замітку як корисне нагадування. Натисніть «Продовжити». + Дозвольте доступ до камери в Налаштуваннях + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index c0c06eab..6698319e 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -278,7 +278,6 @@ 余额:%1$s - 在“设置”>“应用”>“Loaf”>“权限”中允许访问相机 Loaf 没有访问相机的权限 @@ -644,4 +643,26 @@ LTC 价格 "交易 ID: " 笔交易 - \ No newline at end of file + 如何发送 Litecoin + Brainwallet 使用指南 + 体验 Brainwallet 的所有功能,从发送和接收加密货币到管理您的密钥。 + 按照简单步骤将 LTC 发送到他人的钱包。瞬间到账! + 1. 检查您的余额 + 如果余额为零或正在同步,您无法发送。如需要,使用 MoonPay 在 5 分钟内充值。 + 点击这里充值! + 2. 设置与深色模式 + 点击右上角的设置进行微调。点击左上角的 设置您的深色模式偏好。 + 查看您的交易 + 当您收到交易时,它们会显示在这里。向上或向下滑动查看。点击筛选以切换全部、接收或已发送。 + 深入了解! + 点击历史记录以显示更多详情并展开视图。向上或向下滑动滚动查看所有信息。 + 查看 LTC 价格 + Brainwallet 定期更新 Litecoin (LTC) 的价格。滑动选择您的本地货币以获取汇率。使用您的国旗作为指南! + 2. 点击发送标签 + 余额大于零?切换到货币或 LTC 以计算发送金额。在设置中调整网络费用 + 3. 设置金额 + 您有一些 LTC 吗?更改您的本地法币以计算可以发送的金额。或者用 LTC 计算。进入设置以调整您的首选网络费用 + 发送前验证! + 扫描或粘贴目标地址。仔细检查!更改您的本地法币以计算可以发送的金额。添加备忘录作为便捷提醒。点击继续。 + 在设置中允许摄像头访问 + diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index cbee36d8..8d3d9bc4 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -277,7 +277,6 @@ 餘額:%1$s - 到「設定」 > 「應用程式」 > 「Loaf」 > 「權限」允許相機存取 Loaf 尚未獲准存取相機 @@ -644,4 +643,26 @@ LTC 價格 "交易 ID:" 交易 - \ No newline at end of file + 如何發送Litecoin + Brainwallet 功能導覽 + 探索Brainwallet的所有功能,從發送和接收加密貨幣到管理您的密鑰。 + 按照簡單步驟將LTC發送到他人的錢包。幾秒鐘內即可完成! + 1. 檢查您的餘額 + 餘額為零或正在同步時無法發送。如果需要,可透過MoonPay在5分鐘內充值。 + 點擊這裡進行充值! + 2. 設定與深色模式 + 點擊右上角的設定進行調整。點擊左上角的 圖示可設定深色模式偏好。 + 檢查您的交易 + 交易會顯示在這裡。向上或向下滑動查看。點擊篩選器可切換全部、接收或已發送。 + 深入瞭解! + 點擊歷史記錄以顯示更多詳細資訊並展開檢視。向上或向下滑動以瀏覽所有資訊。 + 查看LTC價格 + Brainwallet會定期更新Litecoin (LTC)的價格。滑動選擇您的本地貨幣以取得匯率。使用旗幟作為參考! + 2. 點擊發送標籤 + 餘額大於零?切換至本地貨幣或LTC以確定發送金額。在設定中調整網絡費用。 + 3. 設定金額 + 您有LTC嗎?將本地法幣轉換為LTC以確定可發送金額。或以LTC計算。進入設定以調整您的首選網絡費用。 + 發送前驗證! + 掃描或貼上目標地址。仔細核實!將本地法幣轉換為LTC以確定可發送金額。新增備忘錄作為方便的提醒。點擊繼續。 + 在設定中允許相機存取 + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b13abc11..b2268658 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -182,7 +182,7 @@ Balance: %1$s - Allow camera access in \"Settings\" > \"Apps\" > \"Brainwallet\" > \"Permissions\" + Allow camera access in Settings Brainwallet is not allowed to access the camera @@ -477,5 +477,26 @@ LTC Price Sign up to updates, news and contests! "Please accept permission for our notifications " + How to send Litecoin + Brainwallet Walkthrough + Try all the features of Brainwallet, from sending and receiving crypto to managing your keys. + Follow the easy steps to send LTC to someone else\'s wallet. They get it in seconds! + 1. Check your balance + You cannot send if it\'s zero or it\'s syncing. Top up in 5 minutes with MoonPay if needed. + + 2. Settings & Dark Mode + Fine tune by tapping on Settings to the top right. Set your Dark Mode preference by tapping on the on the top left. + Review your transactions + When you get transactions, they show here. Swipe up & down to check. Tap filter to toggle All, Receive or Sent. + Go Deep! + Tap on History to show more detail and expand the view. Swipe up or down to scroll through the all information. + Check the LTC Price + Brainwallet updates the price of Litecoin (LTC) regularly. Pick your local currency to get the rate by swiping. Use your flag as a guide! + 2. Tap the Send tab + Balance over zero? Switch to currency or LTC to figure out how much to send. Adjust the network fee in settings + 3. Set the values + Do you have some LTC? Change your local figure fiat to figure out how much you can send. Or, calculate in LTC. Go to settings to adjust your preferred network fee + Verify before sending! + Scan or paste the destination address. Double check! Change your local fiat to figure out how much you can send. Add a memo as a handy reminder. Tap Continue. diff --git a/app/src/test/java/com/brainwallet/ui/screens/send/BWSenderTest.kt b/app/src/test/java/com/brainwallet/ui/screens/send/BWSenderTest.kt index a43a0e1e..c5768083 100644 --- a/app/src/test/java/com/brainwallet/ui/screens/send/BWSenderTest.kt +++ b/app/src/test/java/com/brainwallet/ui/screens/send/BWSenderTest.kt @@ -180,7 +180,7 @@ class BWSenderTest { any() ) } answers { - Thread.sleep(200) + Thread.sleep(500) validSerializedTx }