diff --git a/support-module/src/main/java/com/saudigitus/support_module/MainActivity.kt b/support-module/src/main/java/com/saudigitus/support_module/MainActivity.kt index 7b5f6ea736..53505fbe73 100644 --- a/support-module/src/main/java/com/saudigitus/support_module/MainActivity.kt +++ b/support-module/src/main/java/com/saudigitus/support_module/MainActivity.kt @@ -18,6 +18,7 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.rememberNavController import com.saudigitus.support_module.ui.Screen import com.saudigitus.support_module.ui.manualScreen.ManualScreen +import com.saudigitus.support_module.ui.theme.SupportUiTheme import com.saudigitus.support_module.utils.Constants import org.dhis2.ui.theme.Dhis2Theme @@ -26,13 +27,18 @@ class MainActivity : ComponentActivity() { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { - val screen = intent.extras?.getString(Constants.SCREENS_KEY) ?: Screen.Menu.route - val navController = rememberNavController() - Surface( - modifier = Modifier.fillMaxSize(), - color = MaterialTheme.colorScheme.background + SupportUiTheme( + darkTheme = false, + dynamicColor = false ) { - AppNavHost(navController = navController, route = screen, activity = this) + val screen = intent.extras?.getString(Constants.SCREENS_KEY) ?: Screen.Menu.route + val navController = rememberNavController() + Surface( + modifier = Modifier.fillMaxSize(), + color = MaterialTheme.colorScheme.background + ) { + AppNavHost(navController = navController, route = screen, activity = this) + } } } } diff --git a/support-module/src/main/java/com/saudigitus/support_module/ui/SupportScreen/SupportScreen.kt b/support-module/src/main/java/com/saudigitus/support_module/ui/SupportScreen/SupportScreen.kt index c36583bff4..65ca0333b2 100644 --- a/support-module/src/main/java/com/saudigitus/support_module/ui/SupportScreen/SupportScreen.kt +++ b/support-module/src/main/java/com/saudigitus/support_module/ui/SupportScreen/SupportScreen.kt @@ -17,6 +17,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.navigation.NavHostController import com.saudigitus.support_module.R +import com.saudigitus.support_module.ui.components.BasicApp import com.saudigitus.support_module.ui.components.SimpleCard import timber.log.Timber @@ -26,47 +27,10 @@ fun SupportScreen( navController: NavHostController, onBack: () -> Unit = {} // Placeholder for back action ) { - Scaffold( - Modifier.background(Color(0xFF2196F3)), - topBar = { - TopAppBar( - title = { - Text( - text = stringResource(id = R.string.support_view_title), - color = Color.White, - fontSize = 20.sp - ) - }, - navigationIcon = { - IconButton(onClick = onBack) { - Icon( - imageVector = Icons.AutoMirrored.Filled.ArrowBack, - contentDescription = "Back", - tint = Color.White - ) - } - }, - colors = TopAppBarDefaults.topAppBarColors( - containerColor = Color(0xFF2196F3) // Blue background color - ) - ) - } - ) { paddingValues -> - Box( - modifier = Modifier - .fillMaxSize() - .background(Color(0xFF2196F3)) // Set your background color here - .padding(paddingValues) // Ensures the padding is applied to the content - ) { - // Wrapping the content with a Surface to give it rounded corners - Surface( - modifier = Modifier - .fillMaxSize() - .padding(top = 10.dp), - shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp), // Rounded top corners - - shadowElevation = 4.dp // Elevation for shadow - ) { + BasicApp( + title = stringResource(id = R.string.support_view_title), + onBack = onBack, + content = { Column( modifier = Modifier .fillMaxSize() @@ -75,18 +39,17 @@ fun SupportScreen( ) { Spacer(Modifier.height(20.dp)) Text( - text = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's", + text = stringResource(id = R.string.support_view_subtitle), fontSize = 16.sp, color = Color.Gray ) Spacer(Modifier.height(20.dp)) - SimpleCard(title = "Relatar erros de sincronização", icon = Icons.Default.Close) + SimpleCard(title = stringResource(id = R.string.sync_errord), icon = Icons.Default.Close) Spacer(Modifier.height(20.dp)) - SimpleCard(title = "Relatar outros erros", icon = Icons.Default.Warning) + SimpleCard(title = stringResource(id = R.string.other_errors) , icon = Icons.Default.Warning) } } - } - } + ) } @Preview(showBackground = true) diff --git a/support-module/src/main/java/com/saudigitus/support_module/ui/components/BasicApp.kt b/support-module/src/main/java/com/saudigitus/support_module/ui/components/BasicApp.kt index 7ad6519582..6c45255a1f 100644 --- a/support-module/src/main/java/com/saudigitus/support_module/ui/components/BasicApp.kt +++ b/support-module/src/main/java/com/saudigitus/support_module/ui/components/BasicApp.kt @@ -20,6 +20,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import com.saudigitus.support_module.ui.theme.app_blue_color @JvmOverloads @OptIn(ExperimentalMaterial3Api::class) @@ -31,7 +32,6 @@ fun BasicApp( fab: (@Composable () -> Unit)? = null ) { Scaffold( - Modifier.background(Color(0xFF2196F3)), topBar = { TopAppBar( title = { @@ -51,7 +51,7 @@ fun BasicApp( } }, colors = TopAppBarDefaults.topAppBarColors( - containerColor = Color(0xFF2196F3) // Blue background color + containerColor = app_blue_color // Blue background color ) ) }, @@ -63,17 +63,14 @@ fun BasicApp( ) { paddingValues -> Box( modifier = Modifier - .fillMaxSize() .background(Color(0xFF2196F3)) // Set your background color here .padding(paddingValues) // Ensures the padding is applied to the content ) { // Wrapping the content with a Surface to give it rounded corners Surface( modifier = Modifier - .fillMaxSize() - .padding(top = 10.dp), + .fillMaxSize(), shape = RoundedCornerShape(topStart = 16.dp, topEnd = 16.dp), // Rounded top corners - shadowElevation = 4.dp // Elevation for shadow ) { // CONTENT diff --git a/support-module/src/main/java/com/saudigitus/support_module/ui/components/ListCard.kt b/support-module/src/main/java/com/saudigitus/support_module/ui/components/ListCard.kt index 3059265bd6..a69324fb49 100644 --- a/support-module/src/main/java/com/saudigitus/support_module/ui/components/ListCard.kt +++ b/support-module/src/main/java/com/saudigitus/support_module/ui/components/ListCard.kt @@ -42,7 +42,7 @@ fun ListCard(imageResId: Int, title: String, subtitle: String, icon: androidx.co Card( modifier = Modifier .fillMaxWidth() - .size(width = 0.dp, height = 70.dp) + .size(width = 0.dp, height = 80.dp) .shadow(2.dp, RoundedCornerShape(16.dp)) .clip(RoundedCornerShape(16.dp)), colors = CardDefaults.cardColors(containerColor = Color.White), diff --git a/support-module/src/main/java/com/saudigitus/support_module/ui/theme/Color.kt b/support-module/src/main/java/com/saudigitus/support_module/ui/theme/Color.kt index 4b0655b21c..aaa053a257 100644 --- a/support-module/src/main/java/com/saudigitus/support_module/ui/theme/Color.kt +++ b/support-module/src/main/java/com/saudigitus/support_module/ui/theme/Color.kt @@ -2,10 +2,73 @@ package com.saudigitus.support_module.ui.theme import androidx.compose.ui.graphics.Color -val Purple80 = Color(0xFFD0BCFF) -val PurpleGrey80 = Color(0xFFCCC2DC) -val Pink80 = Color(0xFFEFB8C8) +val md_theme_light_primary = Color(0xFF0062A2) +val md_theme_light_onPrimary = Color(0xFFFFFFFF) +val md_theme_light_primaryContainer = Color(0xFFD1E4FF) +val md_theme_light_onPrimaryContainer = Color(0xFF001D35) +val md_theme_light_secondary = Color(0xFF535F70) +val md_theme_light_onSecondary = Color(0xFFFFFFFF) +val md_theme_light_secondaryContainer = Color(0xFFD6E4F7) +val md_theme_light_onSecondaryContainer = Color(0xFF0F1C2B) +val md_theme_light_tertiary = Color(0xFF6A5778) +val md_theme_light_onTertiary = Color(0xFFFFFFFF) +val md_theme_light_tertiaryContainer = Color(0xFFF2DAFF) +val md_theme_light_onTertiaryContainer = Color(0xFF251432) +val md_theme_light_error = Color(0xFFBA1A1A) +val md_theme_light_errorContainer = Color(0xFFFFDAD6) +val md_theme_light_onError = Color(0xFFFFFFFF) +val md_theme_light_onErrorContainer = Color(0xFF410002) +val md_theme_light_background = Color(0xFFFDFCFF) +val md_theme_light_onBackground = Color(0xFF1A1C1E) +val md_theme_light_surface = Color(0xFFFDFCFF) +val md_theme_light_onSurface = Color(0xFF1A1C1E) +val md_theme_light_surfaceVariant = Color(0xFFDFE2EB) +val md_theme_light_onSurfaceVariant = Color(0xFF42474E) +val md_theme_light_outline = Color(0xFF73777F) +val md_theme_light_inverseOnSurface = Color(0xFFF1F0F4) +val md_theme_light_inverseSurface = Color(0xFF2F3033) +val md_theme_light_inversePrimary = Color(0xFF9DCAFF) +val md_theme_light_shadow = Color(0xFF000000) +val md_theme_light_surfaceTint = Color(0xFF0062A2) +val md_theme_light_outlineVariant = Color(0xFFC3C7CF) +val md_theme_light_scrim = Color(0xFF000000) -val Purple40 = Color(0xFF6650a4) -val PurpleGrey40 = Color(0xFF625b71) -val Pink40 = Color(0xFF7D5260) \ No newline at end of file +val md_theme_dark_primary = Color(0xFF9DCAFF) +val md_theme_dark_onPrimary = Color(0xFF003257) +val md_theme_dark_primaryContainer = Color(0xFF00497C) +val md_theme_dark_onPrimaryContainer = Color(0xFFD1E4FF) +val md_theme_dark_secondary = Color(0xFFBAC8DB) +val md_theme_dark_onSecondary = Color(0xFF253140) +val md_theme_dark_secondaryContainer = Color(0xFF3B4858) +val md_theme_dark_onSecondaryContainer = Color(0xFFD6E4F7) +val md_theme_dark_tertiary = Color(0xFFD6BEE5) +val md_theme_dark_onTertiary = Color(0xFF3A2948) +val md_theme_dark_tertiaryContainer = Color(0xFF524060) +val md_theme_dark_onTertiaryContainer = Color(0xFFF2DAFF) +val md_theme_dark_error = Color(0xFFFFB4AB) +val md_theme_dark_errorContainer = Color(0xFF93000A) +val md_theme_dark_onError = Color(0xFF690005) +val md_theme_dark_onErrorContainer = Color(0xFFFFDAD6) +val md_theme_dark_background = Color(0xFF1A1C1E) +val md_theme_dark_onBackground = Color(0xFFE2E2E6) +val md_theme_dark_surface = Color(0xFF1A1C1E) +val md_theme_dark_onSurface = Color(0xFFE2E2E6) +val md_theme_dark_surfaceVariant = Color(0xFF42474E) +val md_theme_dark_onSurfaceVariant = Color(0xFFC3C7CF) +val md_theme_dark_outline = Color(0xFF8D9199) +val md_theme_dark_inverseOnSurface = Color(0xFF1A1C1E) +val md_theme_dark_inverseSurface = Color(0xFFE2E2E6) +val md_theme_dark_inversePrimary = Color(0xFF0062A2) +val md_theme_dark_shadow = Color(0xFF000000) +val md_theme_dark_surfaceTint = Color(0xFF9DCAFF) +val md_theme_dark_outlineVariant = Color(0xFF42474E) +val md_theme_dark_scrim = Color(0xFF000000) + + +val seed = Color(0xFF2C98F0) + +val light_success = Color(0xFF81C784) +val light_info = Color(0xFF4FC3F7) +val light_warning = Color(0xFFFFB74D) +val light_error = Color(0xFFE57373) +val app_blue_color = Color(0xFF2196F3) diff --git a/support-module/src/main/java/com/saudigitus/support_module/ui/theme/Theme.kt b/support-module/src/main/java/com/saudigitus/support_module/ui/theme/Theme.kt index 3910f9acfd..ce56340cf7 100644 --- a/support-module/src/main/java/com/saudigitus/support_module/ui/theme/Theme.kt +++ b/support-module/src/main/java/com/saudigitus/support_module/ui/theme/Theme.kt @@ -15,30 +15,74 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView import androidx.core.view.WindowCompat -private val DarkColorScheme = darkColorScheme( - primary = Purple80, - secondary = PurpleGrey80, - tertiary = Pink80 + +private val LightColors = lightColorScheme( + primary = md_theme_light_primary, + onPrimary = md_theme_light_onPrimary, + primaryContainer = md_theme_light_primaryContainer, + onPrimaryContainer = md_theme_light_onPrimaryContainer, + secondary = md_theme_light_secondary, + onSecondary = md_theme_light_onSecondary, + secondaryContainer = md_theme_light_secondaryContainer, + onSecondaryContainer = md_theme_light_onSecondaryContainer, + tertiary = md_theme_light_tertiary, + onTertiary = md_theme_light_onTertiary, + tertiaryContainer = md_theme_light_tertiaryContainer, + onTertiaryContainer = md_theme_light_onTertiaryContainer, + error = md_theme_light_error, + errorContainer = md_theme_light_errorContainer, + onError = md_theme_light_onError, + onErrorContainer = md_theme_light_onErrorContainer, + background = md_theme_light_background, + onBackground = md_theme_light_onBackground, + surface = md_theme_light_surface, + onSurface = md_theme_light_onSurface, + surfaceVariant = md_theme_light_surfaceVariant, + onSurfaceVariant = md_theme_light_onSurfaceVariant, + outline = md_theme_light_outline, + inverseOnSurface = md_theme_light_inverseOnSurface, + inverseSurface = md_theme_light_inverseSurface, + inversePrimary = md_theme_light_inversePrimary, + surfaceTint = md_theme_light_surfaceTint, + outlineVariant = md_theme_light_outlineVariant, + scrim = md_theme_light_scrim, ) -private val LightColorScheme = lightColorScheme( - primary = Purple40, - secondary = PurpleGrey40, - tertiary = Pink40 - /* Other default colors to override - background = Color(0xFFFFFBFE), - surface = Color(0xFFFFFBFE), - onPrimary = Color.White, - onSecondary = Color.White, - onTertiary = Color.White, - onBackground = Color(0xFF1C1B1F), - onSurface = Color(0xFF1C1B1F), - */ +private val DarkColors = darkColorScheme( + primary = md_theme_dark_primary, + onPrimary = md_theme_dark_onPrimary, + primaryContainer = md_theme_dark_primaryContainer, + onPrimaryContainer = md_theme_dark_onPrimaryContainer, + secondary = md_theme_dark_secondary, + onSecondary = md_theme_dark_onSecondary, + secondaryContainer = md_theme_dark_secondaryContainer, + onSecondaryContainer = md_theme_dark_onSecondaryContainer, + tertiary = md_theme_dark_tertiary, + onTertiary = md_theme_dark_onTertiary, + tertiaryContainer = md_theme_dark_tertiaryContainer, + onTertiaryContainer = md_theme_dark_onTertiaryContainer, + error = md_theme_dark_error, + errorContainer = md_theme_dark_errorContainer, + onError = md_theme_dark_onError, + onErrorContainer = md_theme_dark_onErrorContainer, + background = md_theme_dark_background, + onBackground = md_theme_dark_onBackground, + surface = md_theme_dark_surface, + onSurface = md_theme_dark_onSurface, + surfaceVariant = md_theme_dark_surfaceVariant, + onSurfaceVariant = md_theme_dark_onSurfaceVariant, + outline = md_theme_dark_outline, + inverseOnSurface = md_theme_dark_inverseOnSurface, + inverseSurface = md_theme_dark_inverseSurface, + inversePrimary = md_theme_dark_inversePrimary, + surfaceTint = md_theme_dark_surfaceTint, + outlineVariant = md_theme_dark_outlineVariant, + scrim = md_theme_dark_scrim, ) @Composable -fun ViewTestTheme( +fun SupportUiTheme( darkTheme: Boolean = isSystemInDarkTheme(), // Dynamic color is available on Android 12+ dynamicColor: Boolean = true, @@ -50,21 +94,22 @@ fun ViewTestTheme( if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) } - darkTheme -> DarkColorScheme - else -> LightColorScheme + darkTheme -> DarkColors + else -> LightColors } val view = LocalView.current if (!view.isInEditMode) { SideEffect { val window = (view.context as Activity).window window.statusBarColor = colorScheme.primary.toArgb() + window.navigationBarColor = colorScheme.background.toArgb() WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme } } MaterialTheme( colorScheme = colorScheme, - + typography = Typography, content = content ) } \ No newline at end of file diff --git a/support-module/src/main/res/values/strings.xml b/support-module/src/main/res/values/strings.xml index 0f9d651d46..9f5d50f2de 100644 --- a/support-module/src/main/res/values/strings.xml +++ b/support-module/src/main/res/values/strings.xml @@ -6,4 +6,7 @@ Suporte ao utilizador MainActivity Suporte ao utilizador + Relatar erros de sincronização + Relatar outros erros + \ No newline at end of file