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