diff --git a/mobile/src/main/AndroidManifest.xml b/mobile/src/main/AndroidManifest.xml index 83ff95f..7f036b9 100644 --- a/mobile/src/main/AndroidManifest.xml +++ b/mobile/src/main/AndroidManifest.xml @@ -16,6 +16,10 @@ android:name=".EditCardActivity" android:exported="false" android:theme="@style/Theme.OmniCards" /> + + EditColorPage(innerPadding, currentColor) + } + } + } + } +} + +@Composable +fun EditColorPage(innerPadding: PaddingValues, currentColor: String?) { + val activityContext = LocalActivity.current + + var color by rememberSaveable { mutableStateOf(currentColor) } + + val colorPickerController = rememberColorPickerController() + + Page( + stringResource(R.string.choosing_color), + innerPadding + ) { + Column( + modifier = Modifier.verticalScroll(rememberScrollState()), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + HsvColorPicker( + modifier = Modifier + .fillMaxWidth() + .height(450.dp) + .padding(10.dp), + initialColor = currentColor?.let { Color(it.toColorInt()) }, + controller = colorPickerController, + onColorChanged = { colorEnvelope: ColorEnvelope -> + color = "#${colorEnvelope.hexCode.substring(2)}" + } + ) + + Button( + modifier = Modifier.fillMaxWidth(), + onClick = { + val resultIntent = Intent() + + resultIntent.putExtra("color", color) + + activityContext!!.setResult(Activity.RESULT_OK, resultIntent) + activityContext.finish() + } + ) { + Text(stringResource(R.string.do_save)) + } + } + } +} + @Composable fun CardEditable( cardName: String, @@ -84,10 +149,8 @@ fun CardEditable( val context = LocalContext.current var isCodeTypeDropdownExpanded by rememberSaveable { mutableStateOf(false) } - var isColorPickerExpanded by rememberSaveable { mutableStateOf(false) } var isColorEnabled by rememberSaveable { mutableStateOf(color != null) } - - val colorPickerController = rememberColorPickerController() + var currentColor by rememberSaveable { mutableStateOf(color) } val fieldModifier = Modifier.fillMaxWidth() @@ -105,6 +168,17 @@ fun CardEditable( } } + val editColorLauncher = rememberLauncherForActivityResult( + contract = ActivityResultContracts.StartActivityForResult() + ) { result -> + if (result.resultCode == Activity.RESULT_OK) { + val color = result.data?.getStringExtra("color") + + currentColor = color + onColorChange(color) + } + } + OutlinedTextField( value = cardName, onValueChange = onCardNameChange, @@ -177,11 +251,16 @@ fun CardEditable( Button( enabled = isColorEnabled, onClick = { - isColorPickerExpanded = !isColorPickerExpanded + val intent = Intent(context, SelectColorActivity::class.java) + + intent.putExtra("currentColor", currentColor) + + editColorLauncher.launch(intent) } ) { Text(stringResource(R.string.do_choose_color)) } + Switch( checked = isColorEnabled, onCheckedChange = { @@ -193,20 +272,6 @@ fun CardEditable( } ) } - - if (isColorPickerExpanded && isColorEnabled) { - HsvColorPicker( - modifier = Modifier - .fillMaxWidth() - .height(450.dp) - .padding(10.dp), - initialColor = color?.let { Color(it.toColorInt()) }, - controller = colorPickerController, - onColorChanged = { colorEnvelope: ColorEnvelope -> - onColorChange("#${colorEnvelope.hexCode.substring(2)}") - } - ) - } } @Composable diff --git a/mobile/src/main/res/values-ru/strings.xml b/mobile/src/main/res/values-ru/strings.xml index 3edbc59..bb12f4e 100644 --- a/mobile/src/main/res/values-ru/strings.xml +++ b/mobile/src/main/res/values-ru/strings.xml @@ -34,6 +34,7 @@ Отсканируйте вашу карту Тип кода карты Выбрать цвет + Выбор цвета Имя карты не должно быть пустым Значение карты не должно быть пустым Имя карты должно быть короче 32 символов diff --git a/mobile/src/main/res/values/strings.xml b/mobile/src/main/res/values/strings.xml index efbc9b2..dac6b7d 100644 --- a/mobile/src/main/res/values/strings.xml +++ b/mobile/src/main/res/values/strings.xml @@ -39,6 +39,7 @@ Scan your card Card code type Choose color + Choosing color Card name must not be empty Card value must not be empty Card name must be shorter than 32 characters