Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ fun RIADigiDocAppScreen(
modifier = Modifier.safeDrawingPadding(),
navController = navController,
sharedMenuViewModel = sharedMenuViewModel,
sharedSettingsViewModel = sharedSettingsViewModel,
)
}
composable(route = Route.Diagnostics.route) {
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/kotlin/ee/ria/DigiDoc/fragment/InfoFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,15 @@ 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
fun InfoFragment(
navController: NavHostController,
modifier: Modifier = Modifier,
sharedMenuViewModel: SharedMenuViewModel,
sharedSettingsViewModel: SharedSettingsViewModel,
) {
Surface(
modifier =
Expand All @@ -61,6 +63,7 @@ fun InfoFragment(
navController = navController,
modifier = modifier,
sharedMenuViewModel = sharedMenuViewModel,
sharedSettingsViewModel = sharedSettingsViewModel,
)
}
}
Expand All @@ -73,6 +76,7 @@ fun InfoFragmentPreview() {
InfoFragment(
navController = rememberNavController(),
sharedMenuViewModel = hiltViewModel(),
sharedSettingsViewModel = hiltViewModel(),
)
}
}
107 changes: 61 additions & 46 deletions app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InfoScreen.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -54,27 +56,33 @@ 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
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
Expand All @@ -85,19 +93,23 @@ 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
fun InfoScreen(
modifier: Modifier = Modifier,
navController: NavHostController,
sharedMenuViewModel: SharedMenuViewModel,
sharedSettingsViewModel: SharedSettingsViewModel,
) {
val context = LocalContext.current

Expand All @@ -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()
Expand Down Expand Up @@ -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(
Expand All @@ -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,
)
Expand All @@ -233,7 +247,7 @@ fun InfoScreen(
}
ElevatedButton(
modifier =
modifier
Modifier
.shadow(
elevation = MCornerRadius,
shape = buttonRoundCornerShape,
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -322,6 +336,7 @@ fun InfoScreenPreview() {
InfoScreen(
navController = rememberNavController(),
sharedMenuViewModel = hiltViewModel(),
sharedSettingsViewModel = hiltViewModel(),
)
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/src/main/res/drawable-nodpi/cofunded_eu.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 1 addition & 3 deletions app/src/main/res/values-et/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -502,9 +502,7 @@
<string name="main_accessibility_introduction_screen_magnification_tools_android">Magnification (Android, sisseehitatud) https://support.google.com/accessibility/android/answer/6006949?hl=en</string>

<!-- Main About -->
<string name="main_about_1_logo_text">Eesti tuleviku heaks</string>
<string name="main_about_2_logo_text">Kaasrahastanud Euroopa Liit</string>
<string name="main_about_digidoc_and_el_logos">Projekti on toetatud Euroopa Liidu Regionaalarengu Fondist</string>
<string name="main_about_digidoc_and_el_logos">Projekti on kaasrahastanud Euroopa Liit</string>
<string name="main_about_ria_digidoc_title">RIA DigiDoc</string>
<string name="main_about_version_title">versioon %1$s</string>
<string name="main_about_info_title">Eesti ID-tarkvara on välja antud Riigi Infosüsteemi Ameti poolt. Küsimuste korral pöördu:</string>
Expand Down
4 changes: 1 addition & 3 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -502,9 +502,7 @@
<string name="main_accessibility_introduction_screen_magnification_tools_android">Magnification (Android, built in) https://support.google.com/accessibility/android/answer/6006949?hl=en</string>

<!-- Main About -->
<string name="main_about_1_logo_text">Eesti tuleviku heaks</string>
<string name="main_about_2_logo_text">Kaasrahastanud Euroopa Liit</string>
<string name="main_about_digidoc_and_el_logos">The project is supported by the European Regional Development Fund</string>
<string name="main_about_digidoc_and_el_logos">The project is co-funded by the European Union</string>
<string name="main_about_ria_digidoc_title">RIA DigiDoc</string>
<string name="main_about_version_title">version %1$s</string>
<string name="main_about_info_title">Estonian ID software is issued by the Estonian Information System Authority. If you have any questions, please contact:</string>
Expand Down
Loading