diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/RIADigiDocAppNavigation.kt b/app/src/main/kotlin/ee/ria/DigiDoc/RIADigiDocAppNavigation.kt index bdeb3cfc..09064da0 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/RIADigiDocAppNavigation.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/RIADigiDocAppNavigation.kt @@ -207,6 +207,7 @@ fun RIADigiDocAppScreen( modifier = Modifier.safeDrawingPadding(), navController = navController, sharedMenuViewModel = sharedMenuViewModel, + sharedSettingsViewModel = sharedSettingsViewModel, ) } composable(route = Route.Diagnostics.route) { diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/InfoFragment.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/InfoFragment.kt index c90a2ffb..24737101 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/InfoFragment.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/InfoFragment.kt @@ -39,6 +39,7 @@ import androidx.navigation.compose.rememberNavController import ee.ria.DigiDoc.fragment.screen.InfoScreen import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme import ee.ria.DigiDoc.viewmodel.shared.SharedMenuViewModel +import ee.ria.DigiDoc.viewmodel.shared.SharedSettingsViewModel @OptIn(ExperimentalComposeUiApi::class) @Composable @@ -46,6 +47,7 @@ fun InfoFragment( navController: NavHostController, modifier: Modifier = Modifier, sharedMenuViewModel: SharedMenuViewModel, + sharedSettingsViewModel: SharedSettingsViewModel, ) { Surface( modifier = @@ -61,6 +63,7 @@ fun InfoFragment( navController = navController, modifier = modifier, sharedMenuViewModel = sharedMenuViewModel, + sharedSettingsViewModel = sharedSettingsViewModel, ) } } @@ -73,6 +76,7 @@ fun InfoFragmentPreview() { InfoFragment( navController = rememberNavController(), sharedMenuViewModel = hiltViewModel(), + sharedSettingsViewModel = hiltViewModel(), ) } } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InfoScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InfoScreen.kt index 947e7e79..6787924f 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InfoScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InfoScreen.kt @@ -23,17 +23,19 @@ package ee.ria.DigiDoc.fragment.screen import android.content.Intent import android.content.res.Configuration -import androidx.compose.foundation.Image +import androidx.compose.foundation.isSystemInDarkTheme +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.Spacer +import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.foundation.layout.wrapContentSize +import androidx.compose.foundation.layout.widthIn import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.ButtonDefaults @@ -54,20 +56,25 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.BlendMode +import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.imageResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource +import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.heading +import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.sp +import androidx.compose.ui.unit.IntSize import androidx.core.net.toUri import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel import androidx.lifecycle.asFlow @@ -75,6 +82,7 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.rememberNavController import ee.ria.DigiDoc.BuildConfig import ee.ria.DigiDoc.R +import ee.ria.DigiDoc.domain.model.theme.ThemeSetting import ee.ria.DigiDoc.ui.component.info.InfoComponent import ee.ria.DigiDoc.ui.component.info.InfoComponentItem import ee.ria.DigiDoc.ui.component.menu.SettingsMenuBottomSheet @@ -85,12 +93,15 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.MCornerRadius import ee.ria.DigiDoc.ui.theme.Dimensions.MPadding import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding import ee.ria.DigiDoc.ui.theme.Dimensions.XSPadding +import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXL import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeXXS import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme import ee.ria.DigiDoc.ui.theme.buttonRoundCornerShape import ee.ria.DigiDoc.utils.extensions.notAccessible import ee.ria.DigiDoc.utilsLib.text.TextUtil import ee.ria.DigiDoc.viewmodel.shared.SharedMenuViewModel +import ee.ria.DigiDoc.viewmodel.shared.SharedSettingsViewModel +import kotlin.math.roundToInt @OptIn(ExperimentalComposeUiApi::class) @Composable @@ -98,6 +109,7 @@ fun InfoScreen( modifier: Modifier = Modifier, navController: NavHostController, sharedMenuViewModel: SharedMenuViewModel, + sharedSettingsViewModel: SharedSettingsViewModel, ) { val context = LocalContext.current @@ -106,6 +118,23 @@ fun InfoScreen( val isEstonianLanguageUsed = remember { mutableStateOf(false) } val isTtsInitialized by sharedMenuViewModel.isTtsInitialized.asFlow().collectAsState(false) + val themeSetting = remember { sharedSettingsViewModel.dataStore.getThemeSetting() } + val isDarkTheme = + when (themeSetting) { + ThemeSetting.DARK -> true + ThemeSetting.LIGHT -> false + ThemeSetting.SYSTEM -> isSystemInDarkTheme() + } + val cofundedLogo = + ImageBitmap.imageResource( + if (isDarkTheme) R.drawable.cofunded_eu else R.drawable.cofunded_eu_tp, + ) + // Remove border from image + val cofundedLogoWidthPx = cofundedLogo.width - XSPadding.value.toInt() + val cofundedLogoBlendMode = if (isDarkTheme) BlendMode.Lighten else BlendMode.SrcOver + val logoSurfaceColor = MaterialTheme.colorScheme.surface + val logoDescription = stringResource(R.string.main_about_digidoc_and_el_logos) + LaunchedEffect(isTtsInitialized) { if (isTtsInitialized) { isEstonianLanguageUsed.value = sharedMenuViewModel.isEstonianLanguageUsed() @@ -157,48 +186,33 @@ fun InfoScreen( ) { Row( modifier = - modifier + Modifier .padding(horizontal = XSPadding, vertical = SPadding), + verticalAlignment = Alignment.CenterVertically, ) { - Column( + Box( modifier = - modifier + Modifier + .fillMaxWidth(0.4f) + .widthIn(max = iconSizeXXL) .padding(end = XSPadding) - .weight(.35f), - horizontalAlignment = Alignment.CenterHorizontally, - ) { - Image( - painter = painterResource(id = R.drawable.eesti_flag), - alignment = Alignment.Center, - modifier = modifier.wrapContentSize(), - contentDescription = stringResource(id = R.string.main_about_1_logo_text), - ) - Text( - modifier = modifier.notAccessible(), - text = stringResource(id = R.string.main_about_1_logo_text), - style = MaterialTheme.typography.labelSmall, - fontSize = 9.sp, - textAlign = TextAlign.Center, - ) - Image( - painter = painterResource(id = R.drawable.eu_flag), - alignment = Alignment.Center, - modifier = modifier.wrapContentSize(), - contentDescription = stringResource(id = R.string.main_about_2_logo_text), - ) - Text( - modifier = modifier.notAccessible(), - text = stringResource(id = R.string.main_about_2_logo_text), - style = MaterialTheme.typography.labelSmall, - fontSize = 9.sp, - textAlign = TextAlign.Center, - ) - } + .aspectRatio(cofundedLogoWidthPx.toFloat() / cofundedLogo.height) + .semantics { + contentDescription = logoDescription + role = Role.Image + }.drawBehind { + drawRect(logoSurfaceColor) + drawImage( + image = cofundedLogo, + srcSize = IntSize(cofundedLogoWidthPx, cofundedLogo.height), + dstSize = IntSize(size.width.roundToInt(), size.height.roundToInt()), + blendMode = cofundedLogoBlendMode, + ) + }, + ) + Column( - modifier = - modifier - .padding(start = XSPadding) - .weight(.65f), + modifier = Modifier.weight(1f), horizontalAlignment = Alignment.Start, ) { Text( @@ -214,7 +228,7 @@ fun InfoScreen( style = MaterialTheme.typography.bodyMedium, ) Text( - modifier = modifier.padding(vertical = SPadding), + modifier = Modifier.padding(vertical = SPadding), text = stringResource(id = R.string.main_about_info_title), style = MaterialTheme.typography.labelMedium, ) @@ -233,7 +247,7 @@ fun InfoScreen( } ElevatedButton( modifier = - modifier + Modifier .shadow( elevation = MCornerRadius, shape = buttonRoundCornerShape, @@ -266,16 +280,16 @@ fun InfoScreen( }, ) { Icon( - modifier = modifier.size(iconSizeXXS), + modifier = Modifier.size(iconSizeXXS), imageVector = ImageVector.vectorResource( id = R.drawable.ic_m3_open_in_new_48dp_wght400, ), contentDescription = null, ) - Spacer(modifier = modifier.width(XSPadding)) + Spacer(modifier = Modifier.width(XSPadding)) Text( - modifier = modifier.notAccessible(), + modifier = Modifier.notAccessible(), text = stringResource(id = R.string.main_about_help_center), color = MaterialTheme.colorScheme.onPrimary, fontSize = MaterialTheme.typography.labelMedium.fontSize, @@ -322,6 +336,7 @@ fun InfoScreenPreview() { InfoScreen( navController = rememberNavController(), sharedMenuViewModel = hiltViewModel(), + sharedSettingsViewModel = hiltViewModel(), ) } } diff --git a/app/src/main/res/drawable-et-nodpi/cofunded_eu.png b/app/src/main/res/drawable-et-nodpi/cofunded_eu.png new file mode 100644 index 00000000..93d8a693 Binary files /dev/null and b/app/src/main/res/drawable-et-nodpi/cofunded_eu.png differ diff --git a/app/src/main/res/drawable-et-nodpi/cofunded_eu_tp.png b/app/src/main/res/drawable-et-nodpi/cofunded_eu_tp.png new file mode 100644 index 00000000..69176957 Binary files /dev/null and b/app/src/main/res/drawable-et-nodpi/cofunded_eu_tp.png differ diff --git a/app/src/main/res/drawable-nodpi/cofunded_eu.png b/app/src/main/res/drawable-nodpi/cofunded_eu.png new file mode 100644 index 00000000..e930fb76 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/cofunded_eu.png differ diff --git a/app/src/main/res/drawable-nodpi/cofunded_eu_tp.png b/app/src/main/res/drawable-nodpi/cofunded_eu_tp.png new file mode 100644 index 00000000..a453dae9 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/cofunded_eu_tp.png differ diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 1acea466..b2a920da 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -502,9 +502,7 @@ Magnification (Android, sisseehitatud) https://support.google.com/accessibility/android/answer/6006949?hl=en - Eesti tuleviku heaks - Kaasrahastanud Euroopa Liit - Projekti on toetatud Euroopa Liidu Regionaalarengu Fondist + Projekti on kaasrahastanud Euroopa Liit RIA DigiDoc versioon %1$s Eesti ID-tarkvara on välja antud Riigi Infosüsteemi Ameti poolt. Küsimuste korral pöördu: diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8985798d..ff479692 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -502,9 +502,7 @@ Magnification (Android, built in) https://support.google.com/accessibility/android/answer/6006949?hl=en - Eesti tuleviku heaks - Kaasrahastanud Euroopa Liit - The project is supported by the European Regional Development Fund + The project is co-funded by the European Union RIA DigiDoc version %1$s Estonian ID software is issued by the Estonian Information System Authority. If you have any questions, please contact: