Skip to content

Commit

Permalink
πŸ› Fixed problems with preview of locale formatted strings
Browse files Browse the repository at this point in the history
  • Loading branch information
lorenzovngl committed Sep 5, 2023
1 parent 039d69b commit f832370
Show file tree
Hide file tree
Showing 4 changed files with 63 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import com.lorenzovainigli.foodexpirationdates.view.preview.DefaultPreviews
import com.lorenzovainigli.foodexpirationdates.view.preview.LanguagePreviews
import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Locale

const val DateFormatDialog = "DateFormatDialog"

Expand Down Expand Up @@ -77,7 +76,7 @@ const val DateFormatRow = "DateFormatRow"
@Composable
fun DateFormatRow(item: String, onDismissRequest: () -> Unit){
val context = LocalContext.current
val sdf = SimpleDateFormat(item, Locale.getDefault())
val sdf = SimpleDateFormat(item, context.resources.configuration.locales[0])
ClickableText(
modifier = Modifier.padding(2.dp).testTag(DateFormatRow),
text = AnnotatedString(sdf.format(Calendar.getInstance().time)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,25 +29,24 @@ import androidx.compose.ui.draw.clip
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringArrayResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.lorenzovainigli.foodexpirationdates.R
import com.lorenzovainigli.foodexpirationdates.model.PreferencesProvider
import com.lorenzovainigli.foodexpirationdates.model.entity.ExpirationDate
import com.lorenzovainigli.foodexpirationdates.ui.theme.DarkOrange
import com.lorenzovainigli.foodexpirationdates.ui.theme.LightRed
import com.lorenzovainigli.foodexpirationdates.ui.theme.DarkRed
import com.lorenzovainigli.foodexpirationdates.ui.theme.DarkYellow
import com.lorenzovainigli.foodexpirationdates.ui.theme.LightOrange
import com.lorenzovainigli.foodexpirationdates.ui.theme.LightRed
import com.lorenzovainigli.foodexpirationdates.ui.theme.LightYellow
import com.lorenzovainigli.foodexpirationdates.ui.theme.TonalElevation
import com.lorenzovainigli.foodexpirationdates.view.composable.activity.getItemsForPreview
import com.lorenzovainigli.foodexpirationdates.view.preview.DefaultPreviews
import com.lorenzovainigli.foodexpirationdates.view.preview.LanguagePreviews
import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Locale

@Composable
fun FoodCard(
Expand All @@ -58,7 +57,7 @@ fun FoodCard(
) {
val context = LocalContext.current
val dateFormat = PreferencesProvider.getUserDateFormat(context)
val sdf = SimpleDateFormat(dateFormat, Locale.getDefault())
val sdf = SimpleDateFormat(dateFormat, context.resources.configuration.locales[0])
val today = Calendar.getInstance()
val twoDaysAgo = Calendar.getInstance()
twoDaysAgo.add(Calendar.DAY_OF_MONTH, -2)
Expand Down Expand Up @@ -154,16 +153,14 @@ fun FoodCard(
@LanguagePreviews
@Composable
fun FoodCardPreview() {
val expirations = intArrayOf(0, 1, 7)
val items = getItemsForPreview(LocalContext.current)
Column {
for (i in 0..2) {
val expirationDate = Calendar.getInstance()
expirationDate.add(Calendar.DAY_OF_MONTH, expirations[i])
items.forEach {
FoodCard(
item = ExpirationDate(
id = 0,
foodName = stringArrayResource(id = R.array.example_foods)[i],
expirationDate = expirationDate.time.time
foodName = it.foodName,
expirationDate = it.expirationDate
),
onClickEdit = {},
onClickDelete = {},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.lorenzovainigli.foodexpirationdates.view.composable

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.TimePicker
import androidx.compose.material3.TimePickerState
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.material3.rememberTimePickerState
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun NotificationTimeBottomSheet(
timePickerState: TimePickerState = rememberTimePickerState(11, 0, true),
onDismissRequest: () -> Unit = {}
){
ModalBottomSheet(
sheetState = rememberModalBottomSheetState(
skipPartiallyExpanded = true
),
content = {
Column(
modifier = Modifier
.align(Alignment.CenterHorizontally)
.padding(4.dp)
) {
TimePicker(
state = timePickerState
)
}
},
onDismissRequest = onDismissRequest
)
}

@OptIn(ExperimentalMaterial3Api::class)
@Preview
@Composable
fun NotificationTimeBottomSheetPreview(){
NotificationTimeBottomSheet()
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,17 @@ import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.ModalBottomSheet
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
import androidx.compose.material3.Switch
import androidx.compose.material3.Text
import androidx.compose.material3.TimePicker
import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.material3.rememberTimePickerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.testTag
Expand All @@ -46,11 +42,12 @@ import com.lorenzovainigli.foodexpirationdates.model.PreferencesProvider
import com.lorenzovainigli.foodexpirationdates.ui.theme.FoodExpirationDatesTheme
import com.lorenzovainigli.foodexpirationdates.view.composable.DateFormatDialog
import com.lorenzovainigli.foodexpirationdates.view.composable.MyTopAppBar
import com.lorenzovainigli.foodexpirationdates.view.composable.NotificationTimeBottomSheet
import com.lorenzovainigli.foodexpirationdates.view.composable.SettingsItem
import com.lorenzovainigli.foodexpirationdates.view.preview.DefaultPreviews
import com.lorenzovainigli.foodexpirationdates.view.preview.LanguagePreviews
import java.text.SimpleDateFormat
import java.util.Calendar
import java.util.Locale

@RequiresApi(Build.VERSION_CODES.O)
@OptIn(ExperimentalMaterial3Api::class)
Expand All @@ -61,7 +58,7 @@ fun SettingsActivityLayout(
val context = LocalContext.current
val activity = (LocalContext.current as? Activity)
var dateFormat = PreferencesProvider.getUserDateFormat(context)
var sdf = SimpleDateFormat(dateFormat, Locale.getDefault())
var sdf = SimpleDateFormat(dateFormat, context.resources.configuration.locales[0])
var isDateFormatDialogOpened by remember {
mutableStateOf(false)
}
Expand Down Expand Up @@ -110,26 +107,13 @@ fun SettingsActivityLayout(
isDialogOpen = isDateFormatDialogOpened,
onDismissRequest = {
dateFormat = PreferencesProvider.getUserDateFormat(context)
sdf = SimpleDateFormat(dateFormat, Locale.getDefault())
sdf = SimpleDateFormat(dateFormat, context.resources.configuration.locales[0])
isDateFormatDialogOpened = false
}
)
if (isNotificationTimeBottomSheetOpen) {
ModalBottomSheet(
sheetState = rememberModalBottomSheetState(
skipPartiallyExpanded = true
),
content = {
Column(
modifier = Modifier
.align(Alignment.CenterHorizontally)
.padding(4.dp)
) {
TimePicker(
state = timePickerState
)
}
},
NotificationTimeBottomSheet(
timePickerState = timePickerState,
onDismissRequest = {
PreferencesProvider.setUserNotificationTime(
context,
Expand Down Expand Up @@ -243,7 +227,8 @@ fun SettingsActivityLayout(

@RequiresApi(Build.VERSION_CODES.O)
@DefaultPreviews
@LanguagePreviews
@Composable
fun SettingsActivityLayoutPreview() {
SettingsActivityLayout(null)
SettingsActivityLayout()
}

0 comments on commit f832370

Please sign in to comment.