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