Created ComposeDimens to Centralize dimensions and avoiding harcoding the values everwhere in code for better maintainability and consistency

This commit is contained in:
MohitMaliFtechiz 2025-03-01 21:18:30 +05:30 committed by Kelson
parent 307b6b080c
commit fd47586e40
4 changed files with 91 additions and 20 deletions

View File

@ -29,9 +29,12 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.em
import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.BUTTON_DEFAULT_ELEVATION
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.BUTTON_DEFAULT_PADDING
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.BUTTON_PRESSED_ELEVATION
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.BUTTON_ROUND_CORNER_SHAPE
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.DEFAULT_LETTER_SPACING
/** /**
* This is our custom composable button according to our theme. * This is our custom composable button according to our theme.
@ -47,13 +50,16 @@ fun ComposeButton(
containerColor = colorResource(id = R.color.denim_blue800), containerColor = colorResource(id = R.color.denim_blue800),
contentColor = Color.White contentColor = Color.White
), ),
modifier = Modifier.padding(4.dp), modifier = Modifier.padding(BUTTON_DEFAULT_PADDING),
shape = RoundedCornerShape(5.dp), shape = RoundedCornerShape(BUTTON_ROUND_CORNER_SHAPE),
elevation = ButtonDefaults.buttonElevation(defaultElevation = 2.dp, pressedElevation = 4.dp) elevation = ButtonDefaults.buttonElevation(
defaultElevation = BUTTON_DEFAULT_ELEVATION,
pressedElevation = BUTTON_PRESSED_ELEVATION
)
) { ) {
Text( Text(
text = stringResource(id = buttonTextId).uppercase(), text = stringResource(id = buttonTextId).uppercase(),
letterSpacing = 0.0333.em letterSpacing = DEFAULT_LETTER_SPACING
) )
} }
} }

View File

@ -28,18 +28,18 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState import androidx.compose.runtime.MutableState
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.CRASH_CHECKBOX_START_PADDING
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.CRASH_CHECKBOX_TOP_PADDING
@Composable @Composable
fun CrashCheckBox(checkBoxItem: Pair<Int, MutableState<Boolean>>) { fun CrashCheckBox(checkBoxItem: Pair<Int, MutableState<Boolean>>) {
Row( Row(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.padding(start = 100.dp, top = 8.dp), .padding(start = CRASH_CHECKBOX_START_PADDING, top = CRASH_CHECKBOX_TOP_PADDING),
verticalAlignment = Alignment.CenterVertically verticalAlignment = Alignment.CenterVertically
) { ) {
Checkbox( Checkbox(
@ -48,13 +48,13 @@ fun CrashCheckBox(checkBoxItem: Pair<Int, MutableState<Boolean>>) {
colors = CheckboxDefaults.colors( colors = CheckboxDefaults.colors(
checkedColor = colorResource(id = R.color.denim_blue200), checkedColor = colorResource(id = R.color.denim_blue200),
checkmarkColor = colorResource(id = R.color.error_activity_background), checkmarkColor = colorResource(id = R.color.error_activity_background),
uncheckedColor = Color.White uncheckedColor = colorResource(R.color.denim_blue200)
) )
) )
Text( Text(
text = stringResource(id = checkBoxItem.first), text = stringResource(id = checkBoxItem.first),
color = colorResource(id = R.color.white), color = colorResource(id = R.color.white),
modifier = Modifier.padding(start = 8.dp) modifier = Modifier.padding(start = CRASH_CHECKBOX_TOP_PADDING)
) )
} }
} }

View File

@ -41,12 +41,19 @@ import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.tonyodev.fetch2.R.string import com.tonyodev.fetch2.R.string
import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.composeviews.ComposeButton import org.kiwix.kiwixmobile.core.composeviews.ComposeButton
import org.kiwix.kiwixmobile.core.composeviews.CrashCheckBox import org.kiwix.kiwixmobile.core.composeviews.CrashCheckBox
import org.kiwix.kiwixmobile.core.extensions.loadBitmapFromMipmap import org.kiwix.kiwixmobile.core.extensions.loadBitmapFromMipmap
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.CRASH_IMAGE_SIZE
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.CRASH_MESSAGE_TEXT_SIZE
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.CRASH_TITLE_TEXT_SIZE
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.EIGHT_DP
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.SIXTEEN_DP
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.SIXTY_DP
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.THIRTY_TWO_DP
import org.kiwix.kiwixmobile.core.utils.ComposeDimens.TWELVE_DP
@Composable @Composable
fun ErrorActivityScreen( fun ErrorActivityScreen(
@ -60,30 +67,30 @@ fun ErrorActivityScreen(
modifier = Modifier modifier = Modifier
.fillMaxSize() .fillMaxSize()
.background(colorResource(id = R.color.error_activity_background)) .background(colorResource(id = R.color.error_activity_background))
.padding(16.dp), .padding(SIXTEEN_DP),
horizontalAlignment = Alignment.CenterHorizontally horizontalAlignment = Alignment.CenterHorizontally
) { ) {
Text( Text(
text = stringResource(crashTitleStringId), text = stringResource(crashTitleStringId),
fontSize = 24.sp, fontSize = CRASH_TITLE_TEXT_SIZE,
color = colorResource(id = R.color.alabaster_white), color = colorResource(id = R.color.alabaster_white),
modifier = Modifier.padding(top = 60.dp, start = 8.dp, end = 8.dp) modifier = Modifier.padding(top = SIXTY_DP, start = EIGHT_DP, end = EIGHT_DP)
) )
Image( Image(
bitmap = ImageBitmap.loadBitmapFromMipmap(LocalContext.current, R.mipmap.ic_launcher), bitmap = ImageBitmap.loadBitmapFromMipmap(LocalContext.current, R.mipmap.ic_launcher),
contentDescription = stringResource(id = string.app_name), contentDescription = stringResource(id = string.app_name),
modifier = Modifier modifier = Modifier
.height(70.dp) .height(CRASH_IMAGE_SIZE)
.padding(top = 12.dp, start = 8.dp, end = 8.dp) .padding(top = TWELVE_DP, start = EIGHT_DP, end = EIGHT_DP)
) )
Text( Text(
text = stringResource(messageStringId), text = stringResource(messageStringId),
fontSize = 14.sp, fontSize = CRASH_MESSAGE_TEXT_SIZE,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
color = colorResource(id = R.color.white), color = colorResource(id = R.color.white),
modifier = Modifier.padding(start = 8.dp, top = 8.dp, end = 8.dp) modifier = Modifier.padding(start = EIGHT_DP, top = EIGHT_DP, end = EIGHT_DP)
) )
Column(modifier = Modifier.weight(1f)) { Column(modifier = Modifier.weight(1f)) {
@ -99,7 +106,7 @@ fun ErrorActivityScreen(
Row( Row(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.padding(bottom = 32.dp), .padding(bottom = THIRTY_TWO_DP),
horizontalArrangement = Arrangement.SpaceEvenly horizontalArrangement = Arrangement.SpaceEvenly
) { ) {
ComposeButton( ComposeButton(

View File

@ -0,0 +1,58 @@
/*
* Kiwix Android
* Copyright (c) 2025 Kiwix <android.kiwix.org>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.kiwix.kiwixmobile.core.utils
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.em
import androidx.compose.ui.unit.sp
object ComposeDimens {
// Crash checkbox dimens
val CRASH_CHECKBOX_START_PADDING = 100.dp
val CRASH_CHECKBOX_TOP_PADDING = 8.dp
// Our default Button dimens
val BUTTON_ROUND_CORNER_SHAPE = 5.dp
val BUTTON_DEFAULT_ELEVATION = 2.dp
val BUTTON_PRESSED_ELEVATION = 4.dp
val BUTTON_DEFAULT_PADDING = 4.dp
// Error screen dimens
val CRASH_TITLE_TEXT_SIZE = 24.sp
val CRASH_MESSAGE_TEXT_SIZE = 14.sp
val CRASH_IMAGE_SIZE = 70.dp
// Padding & Margins
val SIXTY_DP = 60.dp
val THIRTY_TWO_DP = 30.dp
val SIXTEEN_DP = 16.dp
val TWELVE_DP = 12.dp
val EIGHT_DP = 8.dp
val FIVE_DP = 5.dp
val FOUR_DP = 4.dp
val TWO_DP = 2.dp
val SEVENTY_DP = 70.dp
// Font Sizes
val TWENTY_FOUR_SP = 24.sp
val FOURTEEN_SP = 14.sp
// Default letter spacing in text according to theme
val DEFAULT_LETTER_SPACING = 0.0333.em
}