diff --git a/mobile/src/main/AndroidManifest.xml b/mobile/src/main/AndroidManifest.xml
index b6ec9f4..89ddf59 100644
--- a/mobile/src/main/AndroidManifest.xml
+++ b/mobile/src/main/AndroidManifest.xml
@@ -13,17 +13,14 @@
-
DbHelper) {
}
Page(stringResource(R.string.backup), innerPadding) {
- FullWidthButton(
+ AdaptiveButton(
+ modifier = Modifier.fillMaxWidth(),
onClick = {
createBackupLauncher.launch("omnicards-backup.json")
}
) {
Text(stringResource(R.string.do_backup))
}
- FullWidthButton(
+ AdaptiveButton(
+ modifier = Modifier.fillMaxWidth(),
onClick = {
restoreFromBackupLauncher.launch("application/json")
}
diff --git a/mobile/src/main/java/ru/omni_devel/cards/ChooseColorActivity.kt b/mobile/src/main/java/ru/omni_devel/cards/ChooseColorActivity.kt
index 8b6df75..235fdc5 100644
--- a/mobile/src/main/java/ru/omni_devel/cards/ChooseColorActivity.kt
+++ b/mobile/src/main/java/ru/omni_devel/cards/ChooseColorActivity.kt
@@ -100,7 +100,7 @@ fun EditColorPage(innerPadding: PaddingValues, currentColor: String?) {
}
)
- Button(
+ AdaptiveButton(
modifier = Modifier.fillMaxWidth(),
onClick = {
val resultIntent = Intent()
diff --git a/mobile/src/main/java/ru/omni_devel/cards/EditCardActivity.kt b/mobile/src/main/java/ru/omni_devel/cards/EditCardActivity.kt
index b39d438..416647d 100644
--- a/mobile/src/main/java/ru/omni_devel/cards/EditCardActivity.kt
+++ b/mobile/src/main/java/ru/omni_devel/cards/EditCardActivity.kt
@@ -2,7 +2,6 @@ package ru.omni_devel.cards
import android.app.Activity
import android.content.Intent
-import android.content.res.Configuration
import android.os.Bundle
import android.widget.Toast
import androidx.activity.ComponentActivity
@@ -17,15 +16,10 @@ import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
-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.width
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
-import androidx.compose.material3.Button
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.OutlinedTextField
@@ -37,17 +31,10 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.setValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
-import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
-import androidx.core.graphics.toColorInt
-import com.github.skydoves.colorpicker.compose.ColorEnvelope
-import com.github.skydoves.colorpicker.compose.HsvColorPicker
-import com.github.skydoves.colorpicker.compose.rememberColorPickerController
import com.google.zxing.BarcodeFormat
import com.journeyapps.barcodescanner.ScanContract
import com.journeyapps.barcodescanner.ScanOptions
@@ -145,14 +132,14 @@ fun CardEditable(
label = { Text(stringResource(R.string.card_value)) }
)
- Button(
+ AdaptiveButton(
modifier = Modifier.fillMaxWidth(),
onClick = {
scanLauncher.launch(
ScanOptions().apply {
setPrompt(context.getString(R.string.scan_your_card))
setBeepEnabled(true)
- setOrientationLocked(false)
+ setOrientationLocked(true)
}
)
}
@@ -160,7 +147,7 @@ fun CardEditable(
Text(stringResource(R.string.do_scan_card))
}
- Button(
+ AdaptiveButton(
modifier = Modifier.fillMaxWidth(),
onClick = {
val intent = Intent(context, SelectTemplateActivity::class.java)
@@ -207,9 +194,10 @@ fun CardEditable(
Row(
modifier = fieldModifier,
- horizontalArrangement = Arrangement.SpaceBetween
+ horizontalArrangement = Arrangement.spacedBy(8.dp)
) {
- Button(
+ AdaptiveButton(
+ modifier = Modifier.fillMaxWidth().weight(1.0f),
enabled = isColorEnabled,
onClick = {
val intent = Intent(context, ChooseColorActivity::class.java)
@@ -263,7 +251,7 @@ fun AddCard(innerPadding: PaddingValues, getDbFun: () -> DbHelper) {
onColorChange = { color = it }
)
- Button(
+ AdaptiveButton(
modifier = Modifier.fillMaxWidth(),
onClick = {
cardName = cardName.trim()
@@ -312,7 +300,7 @@ fun EditCard(cardInfo: CardInfo, innerPadding: PaddingValues, getDbFun: () -> Db
onColorChange = { color = it }
)
- Button(
+ AdaptiveButton(
modifier = Modifier.fillMaxWidth(),
onClick = {
cardName = cardName.trim()
diff --git a/mobile/src/main/java/ru/omni_devel/cards/Elements.kt b/mobile/src/main/java/ru/omni_devel/cards/Elements.kt
index 1fca4ed..c6f7e92 100644
--- a/mobile/src/main/java/ru/omni_devel/cards/Elements.kt
+++ b/mobile/src/main/java/ru/omni_devel/cards/Elements.kt
@@ -3,15 +3,18 @@ package ru.omni_devel.cards
import android.content.Intent
import androidx.activity.compose.BackHandler
import androidx.activity.compose.LocalActivity
+import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.gestures.detectTapGestures
+import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
@@ -20,7 +23,9 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.Button
+import androidx.compose.material3.ButtonColors
import androidx.compose.material3.ButtonDefaults
+import androidx.compose.material3.ButtonElevation
import androidx.compose.material3.DrawerValue
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
@@ -40,7 +45,9 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
+import androidx.compose.ui.Modifier.Companion
import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
@@ -119,7 +126,9 @@ fun Page(name: String, innerPadding: PaddingValues, pages: List Unit) {
}
)
},
- shape = RoundedCornerShape(12.dp),
+ shape = ButtonDefaults.shape,
color = MaterialTheme.colorScheme.primaryContainer,
tonalElevation = 2.dp
) {
@@ -232,11 +241,30 @@ fun CardButton(cardInfo: CardInfo, onDeleteCard: (Int) -> Unit) {
}
@Composable
-fun FullWidthButton(onClick: () -> Unit, content: @Composable () -> Unit) {
+fun AdaptiveButton(
+ onClick: () -> Unit,
+ modifier: Modifier = Modifier,
+ enabled: Boolean = true,
+ shape: Shape = ButtonDefaults.shape,
+ elevation: ButtonElevation? = ButtonDefaults.buttonElevation(),
+ border: BorderStroke? = null,
+ contentPadding: PaddingValues = ButtonDefaults.ContentPadding,
+ interactionSource: MutableInteractionSource? = null,
+ content: @Composable RowScope.() -> Unit
+) {
Button(
- modifier = Modifier.fillMaxWidth(),
- onClick = onClick
- ) {
- content()
- }
+ onClick = onClick,
+ modifier = modifier,
+ enabled = enabled,
+ shape = shape,
+ colors = ButtonDefaults.buttonColors(
+ containerColor = MaterialTheme.colorScheme.primaryContainer,
+ contentColor = MaterialTheme.colorScheme.onPrimaryContainer
+ ),
+ elevation = elevation,
+ border = border,
+ contentPadding = contentPadding,
+ interactionSource = interactionSource,
+ content = content
+ )
}
diff --git a/mobile/src/main/java/ru/omni_devel/cards/FillTemplateActivity.kt b/mobile/src/main/java/ru/omni_devel/cards/FillTemplateActivity.kt
index a575a4f..9d8278a 100644
--- a/mobile/src/main/java/ru/omni_devel/cards/FillTemplateActivity.kt
+++ b/mobile/src/main/java/ru/omni_devel/cards/FillTemplateActivity.kt
@@ -92,7 +92,7 @@ fun FillTemplatePage(template: Template, innerPadding: PaddingValues) {
)
}
- Button(
+ AdaptiveButton(
modifier = Modifier.fillMaxWidth(),
onClick = {
var isSuccess = true
@@ -106,7 +106,7 @@ fun FillTemplatePage(template: Template, innerPadding: PaddingValues) {
if (!isSuccess) {
Toast.makeText(context, context.getString(R.string.error_in_data), Toast.LENGTH_LONG).show()
- return@Button
+ return@AdaptiveButton
}
var result = template.template
diff --git a/mobile/src/main/java/ru/omni_devel/cards/SelectTemplateActivity.kt b/mobile/src/main/java/ru/omni_devel/cards/SelectTemplateActivity.kt
index d3edd45..f2e4925 100644
--- a/mobile/src/main/java/ru/omni_devel/cards/SelectTemplateActivity.kt
+++ b/mobile/src/main/java/ru/omni_devel/cards/SelectTemplateActivity.kt
@@ -109,8 +109,8 @@ fun SelectTemplatePage(innerPadding: PaddingValues) {
)
} else {
for (template in templates) {
- Button(
- modifier = Modifier.fillMaxWidth().background(MaterialTheme.colorScheme.primaryContainer),
+ AdaptiveButton(
+ modifier = Modifier.fillMaxWidth(),
onClick = {
val intent = Intent(context, FillTemplateActivity::class.java)
diff --git a/mobile/src/main/res/values-ru/strings.xml b/mobile/src/main/res/values-ru/strings.xml
index 39b21b7..149a4fb 100644
--- a/mobile/src/main/res/values-ru/strings.xml
+++ b/mobile/src/main/res/values-ru/strings.xml
@@ -37,7 +37,7 @@
Выбрать цвет
Выбор цвета
Выбор шаблона
- Ошибка в данных
+ Ошибка в данных. Пожалуйста, заполните все необходимые (*) поля
Имя карты не должно быть пустым
Значение карты не должно быть пустым
Имя карты должно быть короче 32 символов
diff --git a/mobile/src/main/res/values/strings.xml b/mobile/src/main/res/values/strings.xml
index b8e9684..c5ae562 100644
--- a/mobile/src/main/res/values/strings.xml
+++ b/mobile/src/main/res/values/strings.xml
@@ -42,13 +42,10 @@
Choose color
Choosing color
Choosing template
- Error in data
+ Error in data. Please, fill all required (*) fields
Card name must not be empty
Card value must not be empty
Card name must be shorter than 32 characters
Failed to generate card code. Check the card data
- ChooseColorActivity
- SelectTemplateActivity
- FillTemplateActivity
\ No newline at end of file