From 932e5750c53d555232b91801462c02d3c6307488 Mon Sep 17 00:00:00 2001 From: Mounil Kanakhara Date: Thu, 26 Mar 2026 15:46:29 +0530 Subject: [PATCH 1/3] feat: Add Conjugate tab to Conjugate app (#563) Signed-off-by: Mounil Kanakhara --- app/src/main/java/be/scri/App.kt | 12 +- .../ui/screens/conjugate/ConjugateScreen.kt | 154 ++++++++++++++++++ .../screens/conjugate/ConjugateViewModel.kt | 18 ++ 3 files changed, 178 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/be/scri/ui/screens/conjugate/ConjugateScreen.kt create mode 100644 app/src/main/java/be/scri/ui/screens/conjugate/ConjugateViewModel.kt diff --git a/app/src/main/java/be/scri/App.kt b/app/src/main/java/be/scri/App.kt index 51d1f3bda..07a19746f 100644 --- a/app/src/main/java/be/scri/App.kt +++ b/app/src/main/java/be/scri/App.kt @@ -49,6 +49,7 @@ import be.scri.ui.screens.download.DataDownloadViewModel import be.scri.ui.screens.download.DownloadActions import be.scri.ui.screens.download.DownloadDataScreen import be.scri.ui.screens.settings.SettingsScreen +import be.scri.ui.screens.conjugate.ConjugateScreen import be.scri.ui.theme.ScribeTheme import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @@ -167,13 +168,12 @@ fun ScribeApp( } is BottomBarScreen.Conjugate -> { Box( - modifier = - Modifier.fillMaxSize(), - contentAlignment = Alignment.Center, + modifier = Modifier.fillMaxSize() ) { - Text( - text = "Conjugate App", - style = MaterialTheme.typography.headlineMedium, + ConjugateScreen( + isDarkTheme = isDarkTheme, + downloadStates = downloadStates, + onDownloadAction = onDownloadAction ) } HandleBackPress(pagerState, coroutineScope) diff --git a/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateScreen.kt b/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateScreen.kt new file mode 100644 index 000000000..a62583ee9 --- /dev/null +++ b/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateScreen.kt @@ -0,0 +1,154 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +package be.scri.ui.screens.conjugate + +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.lifecycle.viewmodel.compose.viewModel +import be.scri.R +import be.scri.ui.common.appcomponents.PageTitle +import be.scri.ui.common.components.DownloadDataOptionComp +import be.scri.ui.screens.download.DownloadState + +/** + * Main Conjugate Screen displaying empty state and download action. + */ +@Composable +fun ConjugateScreen( + isDarkTheme: Boolean, + downloadStates: Map, + onDownloadAction: (String, Boolean) -> Unit, + modifier: Modifier = Modifier, + viewModel: ConjugateViewModel = viewModel(), +) { + val isDataAvailable by viewModel.isDataAvailable.collectAsState() + val conjugateDownloadState = downloadStates["conjugate_data"] ?: DownloadState.Ready + + Scaffold( + topBar = { + // Using PageTitle as a stand-in for the shared TabBar from issue #560 + // if an explicit TabBar component is not present in the current branch. + PageTitle( + pageTitle = "Conjugate", // Can be replaced by i18n string + modifier = Modifier.fillMaxWidth() + ) + }, + modifier = modifier.fillMaxSize(), + ) { paddingValues -> + Box( + modifier = Modifier + .fillMaxSize() + .padding(paddingValues), + contentAlignment = Alignment.Center + ) { + if (!isDataAvailable) { + ConjugateEmptyState( + isDarkTheme = isDarkTheme, + downloadState = conjugateDownloadState, + onDownloadClick = { + onDownloadAction("conjugate_data", false) + } + ) + } else { + // Next page content (out of scope for #563) + Text("Conjugation UI will be here") + } + } + } +} + +/** + * The "No Data" Empty state representation for Conjugation. + */ +@Composable +fun ConjugateEmptyState( + isDarkTheme: Boolean, + downloadState: DownloadState, + onDownloadClick: () -> Unit, + modifier: Modifier = Modifier, +) { + Column( + modifier = modifier.padding(16.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center + ) { + // SVG Placeholder logo + Icon( + painter = painterResource(id = R.drawable.scribe_logo), + contentDescription = null, + modifier = Modifier.size(120.dp), + tint = MaterialTheme.colorScheme.onSurfaceVariant + ) + + Spacer(modifier = Modifier.height(24.dp)) + + Text( + text = stringResource(id = R.string.i18n_app_download_menu_option_conjugate_description), + style = MaterialTheme.typography.bodyLarge, + textAlign = TextAlign.Center, + color = MaterialTheme.colorScheme.onSurface + ) + + Spacer(modifier = Modifier.height(32.dp)) + + DownloadDataOptionComp( + onClick = onDownloadClick, + isDarkTheme = isDarkTheme, + downloadState = downloadState, + modifier = Modifier.padding(horizontal = 16.dp) + ) + + Spacer(modifier = Modifier.height(16.dp)) + + Text( + text = stringResource(id = R.string.i18n_app_download_menu_option_conjugate_download_data_start), + style = MaterialTheme.typography.bodyMedium, + textAlign = TextAlign.Center, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } +} + +@androidx.compose.ui.tooling.preview.Preview(showBackground = true) +@Composable +fun ConjugateEmptyStatePreview() { + MaterialTheme { + ConjugateEmptyState( + isDarkTheme = false, + downloadState = DownloadState.Ready, + onDownloadClick = {} + ) + } +} + +@androidx.compose.ui.tooling.preview.Preview(showBackground = true, uiMode = android.content.res.Configuration.UI_MODE_NIGHT_YES) +@Composable +fun ConjugateEmptyStateDarkPreview() { + MaterialTheme { + ConjugateEmptyState( + isDarkTheme = true, + downloadState = DownloadState.Ready, + onDownloadClick = {} + ) + } +} diff --git a/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateViewModel.kt b/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateViewModel.kt new file mode 100644 index 000000000..1fec3a32e --- /dev/null +++ b/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateViewModel.kt @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-3.0-or-later + +package be.scri.ui.screens.conjugate + +import androidx.lifecycle.ViewModel +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow + +class ConjugateViewModel : ViewModel() { + private val _isDataAvailable = MutableStateFlow(false) + val isDataAvailable: StateFlow = _isDataAvailable.asStateFlow() + + // Assuming we would check actual data availability via a repository or ConjugateDataManager. + fun checkDataAvailability(hasData: Boolean) { + _isDataAvailable.value = hasData + } +} From 0b5afd58ac112b889e635af61d890c5c8c4633ae Mon Sep 17 00:00:00 2001 From: Mounil Kanakhara Date: Thu, 26 Mar 2026 16:06:30 +0530 Subject: [PATCH 2/3] fix: resolve Detekt Preview warnings Signed-off-by: Mounil Kanakhara --- .../ui/screens/conjugate/ConjugateScreen.kt | 6 +- build2.log | Bin 0 -> 15622 bytes build2_utf8.log | 216 ++++++++++++++++++ build3.log | Bin 0 -> 13656 bytes build3_utf8.log | 210 +++++++++++++++++ build_output.txt | Bin 0 -> 15646 bytes detekt.log | Bin 0 -> 3204 bytes detekt3.log | Bin 0 -> 2414 bytes detekt3_utf8.log | 54 +++++ detekt_utf8.log | 56 +++++ 10 files changed, 540 insertions(+), 2 deletions(-) create mode 100644 build2.log create mode 100644 build2_utf8.log create mode 100644 build3.log create mode 100644 build3_utf8.log create mode 100644 build_output.txt create mode 100644 detekt.log create mode 100644 detekt3.log create mode 100644 detekt3_utf8.log create mode 100644 detekt_utf8.log diff --git a/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateScreen.kt b/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateScreen.kt index a62583ee9..2f66e2b16 100644 --- a/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateScreen.kt +++ b/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateScreen.kt @@ -129,9 +129,10 @@ fun ConjugateEmptyState( } } +@Suppress("UnusedPrivateMember") @androidx.compose.ui.tooling.preview.Preview(showBackground = true) @Composable -fun ConjugateEmptyStatePreview() { +private fun ConjugateEmptyStatePreview() { MaterialTheme { ConjugateEmptyState( isDarkTheme = false, @@ -141,9 +142,10 @@ fun ConjugateEmptyStatePreview() { } } +@Suppress("UnusedPrivateMember") @androidx.compose.ui.tooling.preview.Preview(showBackground = true, uiMode = android.content.res.Configuration.UI_MODE_NIGHT_YES) @Composable -fun ConjugateEmptyStateDarkPreview() { +private fun ConjugateEmptyStateDarkPreview() { MaterialTheme { ConjugateEmptyState( isDarkTheme = true, diff --git a/build2.log b/build2.log new file mode 100644 index 0000000000000000000000000000000000000000..eaf8b2dd2ad9756daa3fe586526c5ab56300e8f6 GIT binary patch literal 15622 zcmeI3TTfd@5XbkqQoqA_sG6j0oQ76uidm#FCU3HUst8Q&9(bAvEm$u55;JWU$ zI6+HXUkANYul@R%^ve00Nj4d!(bjz?zFUe%A|CCY_$#h&(vmTP^Il%vnlYkM(Yz#? zJKoO+qj#LlbgC#ocWLdBKR)`%jZr%d8`l-}O~oj=H61In;-D$X+Q}TSEgs2N=xJMj zJ!K}e@LoC_$HL4fHUp$=%sVt=`hMs2vn?JNO$5Bqo0jx;pu4WmW7TU8nzuCP+gcarl* zkd6F0SdE(O)oI80Tk#nj%%74xOhSYC;GLfxW=Df;by;`x+|P5y1(}jAY}}j@HJ758 z@0N`2IML3m+>!3m)djY*E^u4jNmJKII1W8>KOSy%Gqnnx7IRulzbSdEdq>|(Mi-mH zyCm7$Q>atRQ5z+%b(^ox{l&V?adc~|0PDi@*;|O1-Qxx)E8R@oi>iQ_oEGg{Pg-o}HzM5X_2*&ZIa`raKCZjakx~U#ICHrhG z86(JYip6eqnz15C$ugTBIz@3-9c*1QM(m+)f&=TJQpL=r}(Sx+k-uH z3iqsf=&NW>vxlxiYxX^Kiks?|EH?)fJKL%&eC2aPky5oPqRNatS=U)kZG#knYSZYU`+h~Nr9JpeJ!C@_7(4N{3Sm#WdJ=Y2GWF99 zS5q&|-o}xx$i9PXK{dbPW2+>Kg0yuNRy7`Igzf9sM3vPBepy2~6O`d>uxnfMd(<~A^|3g~ zuT9h>F?;g6lA)zRTqi}HEX;K>&{K&3AVG zL6)b!B58;VPDgxJ9&f1vJ3WWULx)lJi_SKD?X#`ghCOA|A-{D=$hvYvSsS>!`rejq zsXVDC4TIsnr@J@qt@}>D*pE7v9WVA=ISXX4hP!=HS>^dcidA1Ro{0ZHbY(kqfrH3b zmOBHvCf>~Q`5r1Sg{^C{>dMK+6>)E;Cyh4WVcz3}>x!2&uC5!^u*QKmAQd!26^zvl zii#JXpjv0Y+iG1XJoH%O$=d)~!~`sSW*TpLi@Gvw_jQ_f_`|qwH0n?9F2DL^v(rlVi5vRh`Sh3{y*bq$O1l;P7!K#xALI~>n< zJZ_VSv&2iDYF>Mpc&K|Wv6txy3Vlf!PCuZdD2aKbS&F^}XeS zw<}8=>1j`}!@aJZcn%fij;Ig&W!@*@BxduXo#1Cn_U_5A=!bz0c`MVn;;EQSK0zND z=AFBqdfz?v{Dv$^MucjRJaCPh&3F z9ia;_kad7IyG8hWJ}<{EynDg(8=cVKkZdc;f@`{>_Rj|R&%`ghf|qXBteoN(UV)DE zQ~bg!(474U(U3_?nfqRL_(>l9P*;2o#0A;}x-8c%4_%h)wucT}T*bB7@hYx=kyYNF zdlQ_Kr(a5D{DyntealBdeoo;Hc^=QV7-rt(iky)5g^;J2>siSqnpvFzE{+aR0Y}We z!?dAGwz2vl&ILTj$E<%Va?ul4MkR1T4M6VByiZdv*oskG(uVjNExk!jhGi}s#(W?Q zC;H%@t3ZZ(_H+d@+~wk<^9qDI zB~(rG3MABdR^#Cz^9p2Mf!wwVb)96tG8W m|L+i1BP@Hc?vh^vptqzyc%)t-Q-#=8y-Mv!)oL9l`2Pd*U|d1~ literal 0 HcmV?d00001 diff --git a/build2_utf8.log b/build2_utf8.log new file mode 100644 index 000000000..afa276f63 --- /dev/null +++ b/build2_utf8.log @@ -0,0 +1,216 @@ +> Task :app:moveFromi18n NO-SOURCE +> Task :app:preBuild UP-TO-DATE +> Task :app:preConjugateDebugBuild UP-TO-DATE +> Task :app:mergeConjugateDebugNativeDebugMetadata NO-SOURCE +> Task :app:checkKotlinGradlePluginConfigurationErrors SKIPPED +> Task :app:dataBindingMergeDependencyArtifactsConjugateDebug UP-TO-DATE +> Task :app:generateConjugateDebugResValues UP-TO-DATE +> Task :app:generateConjugateDebugResources UP-TO-DATE +> Task :app:mergeConjugateDebugResources UP-TO-DATE +> Task :app:dataBindingGenBaseClassesConjugateDebug UP-TO-DATE +> Task :app:generateConjugateDebugBuildConfig UP-TO-DATE +> Task :app:checkConjugateDebugAarMetadata UP-TO-DATE +> Task :app:processConjugateDebugNavigationResources UP-TO-DATE +> Task :app:compileConjugateDebugNavigationResources UP-TO-DATE +> Task :app:mapConjugateDebugSourceSetPaths UP-TO-DATE +> Task :app:createConjugateDebugCompatibleScreenManifests UP-TO-DATE +> Task :app:extractDeepLinksConjugateDebug UP-TO-DATE +> Task :app:processConjugateDebugMainManifest UP-TO-DATE +> Task :app:processConjugateDebugManifest UP-TO-DATE +> Task :app:processConjugateDebugManifestForPackage UP-TO-DATE +> Task :app:javaPreCompileConjugateDebug UP-TO-DATE +> Task :app:mergeConjugateDebugShaders UP-TO-DATE +> Task :app:compileConjugateDebugShaders NO-SOURCE +> Task :app:generateConjugateDebugAssets UP-TO-DATE +> Task :app:mergeConjugateDebugAssets UP-TO-DATE +> Task :app:compressConjugateDebugAssets UP-TO-DATE +> Task :app:generateConjugateDebugJacocoPropertiesFile UP-TO-DATE +> Task :app:checkConjugateDebugDuplicateClasses UP-TO-DATE +> Task :app:desugarConjugateDebugFileDependencies UP-TO-DATE +> Task :app:mergeExtDexConjugateDebug UP-TO-DATE +> Task :app:mergeLibDexConjugateDebug UP-TO-DATE +> Task :app:mergeConjugateDebugJniLibFolders UP-TO-DATE +> Task :app:mergeConjugateDebugNativeLibs UP-TO-DATE +> Task :app:stripConjugateDebugDebugSymbols UP-TO-DATE +> Task :app:validateSigningConjugateDebug UP-TO-DATE +> Task :app:writeConjugateDebugAppMetadata UP-TO-DATE +> Task :app:writeConjugateDebugSigningConfigVersions UP-TO-DATE +> Task :app:preKeyboardsDebugBuild UP-TO-DATE +> Task :app:mergeKeyboardsDebugNativeDebugMetadata NO-SOURCE +> Task :app:dataBindingMergeDependencyArtifactsKeyboardsDebug UP-TO-DATE +> Task :app:generateKeyboardsDebugResValues UP-TO-DATE +> Task :app:generateKeyboardsDebugResources UP-TO-DATE +> Task :app:mergeKeyboardsDebugResources UP-TO-DATE +> Task :app:dataBindingGenBaseClassesKeyboardsDebug UP-TO-DATE +> Task :app:generateKeyboardsDebugBuildConfig UP-TO-DATE +> Task :app:checkKeyboardsDebugAarMetadata UP-TO-DATE +> Task :app:processKeyboardsDebugNavigationResources UP-TO-DATE +> Task :app:compileKeyboardsDebugNavigationResources UP-TO-DATE +> Task :app:mapKeyboardsDebugSourceSetPaths UP-TO-DATE +> Task :app:createKeyboardsDebugCompatibleScreenManifests UP-TO-DATE +> Task :app:extractDeepLinksKeyboardsDebug UP-TO-DATE +> Task :app:processKeyboardsDebugMainManifest UP-TO-DATE +> Task :app:processKeyboardsDebugManifest UP-TO-DATE +> Task :app:processKeyboardsDebugManifestForPackage UP-TO-DATE +> Task :app:javaPreCompileKeyboardsDebug UP-TO-DATE +> Task :app:mergeKeyboardsDebugShaders UP-TO-DATE +> Task :app:compileKeyboardsDebugShaders NO-SOURCE +> Task :app:generateKeyboardsDebugAssets UP-TO-DATE +> Task :app:mergeKeyboardsDebugAssets UP-TO-DATE +> Task :app:compressKeyboardsDebugAssets UP-TO-DATE +> Task :app:checkKeyboardsDebugDuplicateClasses UP-TO-DATE +> Task :app:desugarKeyboardsDebugFileDependencies UP-TO-DATE +> Task :app:mergeExtDexKeyboardsDebug UP-TO-DATE +> Task :app:generateKeyboardsDebugJacocoPropertiesFile UP-TO-DATE +> Task :app:mergeLibDexKeyboardsDebug UP-TO-DATE +> Task :app:mergeKeyboardsDebugJniLibFolders UP-TO-DATE +> Task :app:mergeKeyboardsDebugNativeLibs UP-TO-DATE +> Task :app:stripKeyboardsDebugDebugSymbols UP-TO-DATE +> Task :app:validateSigningKeyboardsDebug UP-TO-DATE +> Task :app:writeKeyboardsDebugAppMetadata UP-TO-DATE +> Task :app:writeKeyboardsDebugSigningConfigVersions UP-TO-DATE +warn: removing resource be.scri.conjugate.debug:string/i18n.app.about.community.view_apps without required default value. +warn: removing resource be.scri.conjugate.debug:string/i18n.app.keyboard.not_in_wiktionary.explanation_1 without required default value. +warn: removing resource be.scri.conjugate.debug:string/i18n.app.keyboard.not_in_wiktionary.explanation_2 without required default value. +warn: removing resource be.scri.conjugate.debug:string/i18n.app.keyboard.not_in_wiktionary.explanation_3 without required default value. + +> Task :app:processConjugateDebugResources FAILED +warn: removing resource be.scri.keyboards.debug:string/i18n.app.about.community.view_apps without required default value. +warn: removing resource be.scri.keyboards.debug:string/i18n.app.keyboard.not_in_wiktionary.explanation_1 without required default value. +warn: removing resource be.scri.keyboards.debug:string/i18n.app.keyboard.not_in_wiktionary.explanation_2 without required default value. +warn: removing resource be.scri.keyboards.debug:string/i18n.app.keyboard.not_in_wiktionary.explanation_3 without required default value. + +> Task :app:processKeyboardsDebugResources FAILED +.\gradlew : +At line:1 char:1 ++ .\gradlew +assembleDebug > +build2.log 2>&1 ++ ~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~ +~ + + CategoryInfo + : NotSpe + cified: (:String + ) [], RemoteExce +ption + + FullyQualified + ErrorId : Native + CommandError + +FAILURE: Build +completed with 2 +failures. + +1: Task failed with +an exception. +----------- +* What went wrong: +Execution failed for +task ':app:processCon +jugateDebugResources' +. +> A failure occurred +while executing com.a +ndroid.build.gradle.i +nternal.res.LinkAppli +cationAndroidResource +sTask$TaskAction + > Issue parsing +symbol table from +package 'be.scri' at +D:\Code\Scribe\Scribe +-Android\app\build\in +termediates\runtime_s +ymbol_list\conjugateD +ebug\processConjugate +DebugResources\R.txt. + Duplicate key: +(row=string, column=i +18n_app_download_menu +_option_conjugate_des +cription), values: +[UNDEFINED string i18 +n_app_download_menu_o +ption_conjugate_descr +iption = 0x7f1000f8, +UNDEFINED string i18n +_app_download_menu_op +tion_conjugate_descri +ption = 0x7f10009e]. + +* Try: +> Run with +--stacktrace option +to get the stack +trace. +> Run with --info or +--debug option to +get more log output. +> Run with --scan to +get full insights. +> Get more help at ht +tps://help.gradle.org +. +===================== +===================== +===================== +=============== + +2: Task failed with +an exception. +----------- +* What went wrong: +Execution failed for +task ':app:processKey +boardsDebugResources' +. +> A failure occurred +while executing com.a +ndroid.build.gradle.i +nternal.res.LinkAppli +cationAndroidResource +sTask$TaskAction + > Issue parsing +symbol table from +package 'be.scri' at +D:\Code\Scribe\Scribe +-Android\app\build\in +termediates\runtime_s +ymbol_list\keyboardsD +ebug\processKeyboards +DebugResources\R.txt. + Duplicate key: +(row=string, column=i +18n_app_download_menu +_option_conjugate_des +cription), values: +[UNDEFINED string i18 +n_app_download_menu_o +ption_conjugate_descr +iption = 0x7f1000f8, +UNDEFINED string i18n +_app_download_menu_op +tion_conjugate_descri +ption = 0x7f10009e]. + +* Try: +> Run with +--stacktrace option +to get the stack +trace. +> Run with --info or +--debug option to +get more log output. +> Run with --scan to +get full insights. +> Get more help at ht +tps://help.gradle.org +. +===================== +===================== +===================== +=============== + +BUILD FAILED in 4s +62 actionable tasks: 2 executed, 60 up-to-date diff --git a/build3.log b/build3.log new file mode 100644 index 0000000000000000000000000000000000000000..2644f5b55eeaa59394c2be45952073fee9be6b70 GIT binary patch literal 13656 zcmeI3TTdHD6vyYeQoqAKRHZj;C27-&DwRlph@?qrAjw192V=k?fI+qsf>iaRxBdU- zcsgTak9Tb^k($WzvfiCJ_uHHq{`vbSSGYaba(#EAyEWZi=(Fa|+_`(}4&9dP>F&%O zyIbxD*VUM(?iaV}c6EL3p1B8Z(|zhbans;jX#SzQ@7@T)sXNg8=Wa*y_dJvhx30S~ z5FUt%u6r#w9nm-t%ng0_{qIGfp9xA&Fb~DabPP{D&SNi;i1&$R4fN)~zim~PP20T^ zgtjFAShxq0&#`!XD0+Z-s&_lO!ZFW{z9Zdt^o%hB-9z)HexaqFv{*93ORnm$rO1uM__=JQw@O`%PLC zROjZkX^!9v|af-RSlVaKEE#;>Bcctt5>VkAM4_T%t;kgm)sV^ z5%L33Z&r?43{w@kJ(49r8DH%4T%LekP|rf=mj05@s>`%o{@+kOx)6qAQ4lgoS_f6f zi(U5xm9cKMi(?rcrFtF_jd?%{AAe8he%+*ScpUaT9*&|Uq_ z@mt+GE{u8(&=C%wtXE^u3Il zbFy}G9f2J0^=dMDki``9-Rd}FMUdmAo{m5cV_oaRzl`W?9f2H{`Z@wRtkvzZTt*vTr&sO1 zmXCDfn5xx8RqBt$*3jkTwiu2ewa^jBX?{^mad&HarCj$~JjdTnt;KURRQIkb_E=x1 zCE9A*5m+v#5l0SgJsp7@#&qqqjE+DKS6tiG+Y!joP~Ar38a)Sh`5l2AwqJ`&{(t(qGWdlU3nkN1whc{h_8hMRaDG>R_--*Ho3<^04U@HFf5~b`qLHc>N*t zruv=7epcI$CZn*k*4Hy+G1|dvCcPmj38y&HJ-LQv~uC{upNsz*UH5b|`xO z7g)d6vq`$(T}xcj`KLn%j_9R@KMBJa`grK-z}*p?Q&G?n#M^rRxySdTeld>q_dr@f ze_h=nL#Ue$<4?VXHa?7k(!WZ57+r28qii%+@bLlD191%s=!BF9B?YG+$q zn~$fN1$Y5AwsEEpd)5cZOnc9DR9@pUN+ScKuSbVzk%7_Iqr^zt85nK0 zltzbXk%7?`9qxD^B|2DSuwFMOfJ|aU3iD6oifs}rCdCh6uJ|`pReMRyFwf%sw3BVb zxY%hi@11-;Eg$bcB+bRRK0T%*^BC8s$8^Sx$Mp|MmN)AKp-SP*=cbR%u|sQK7yN;k zOVq^oq8@J#eUo#8WJOK{v1c0n?3RZb&!UErh`R2bUPaHAIjh+xy7|o80ou6INe5=Bc6VbY^4ZoGQ`JV&UY`FMVWvCD}v8iHFvApLt5s^RB5B zB22^n(vP!R;^{zYEtEOLwO@|lIg1A6X>Th7T+uTlkCWtM7`%#UmfSuv6_&G$V8 zaEKl4X~fmgUchY9No}5y*dcqroOqzRwbNoi=G4O|eFHr!q$4mE`qDoslG(;Zgkjb` z88>*z(r{(Ex7j?0C#qAkij)eY0J;MeQ4&E;RMG>{&UF?AtQE{xuR}f(1nQ*1)7jUx zBaS&s6QNpdT*$V9K9I?&uor@hl$Zg%P}G+;s0_oHh9JguRKvsQ_|b;po-6wSL)o$S zJcebC20LG}XL?#c#D)Jygv4{Zp3m7;)W-;kZ>O=2*!D3(evFVr#1A(@-q(K@(M#J< zoD3B!eKpH5h5m!da`;_$SI_L+wp9o%Wkl)>@~%~LWE1)|qtz6#mj1w9_pPp+BV5&t MbDvdhElZ^S7d*n!9RL6T literal 0 HcmV?d00001 diff --git a/build3_utf8.log b/build3_utf8.log new file mode 100644 index 000000000..dc6aad021 --- /dev/null +++ b/build3_utf8.log @@ -0,0 +1,210 @@ +> Task :app:moveFromi18n NO-SOURCE +> Task :app:preBuild UP-TO-DATE +> Task :app:preConjugateDebugBuild UP-TO-DATE +> Task :app:mergeConjugateDebugNativeDebugMetadata NO-SOURCE +> Task :app:checkKotlinGradlePluginConfigurationErrors SKIPPED +> Task :app:dataBindingMergeDependencyArtifactsConjugateDebug UP-TO-DATE +> Task :app:generateConjugateDebugResValues UP-TO-DATE +> Task :app:generateConjugateDebugResources UP-TO-DATE +> Task :app:mergeConjugateDebugResources UP-TO-DATE +> Task :app:dataBindingGenBaseClassesConjugateDebug UP-TO-DATE +> Task :app:generateConjugateDebugBuildConfig UP-TO-DATE +> Task :app:checkConjugateDebugAarMetadata UP-TO-DATE +> Task :app:processConjugateDebugNavigationResources UP-TO-DATE +> Task :app:compileConjugateDebugNavigationResources UP-TO-DATE +> Task :app:mapConjugateDebugSourceSetPaths UP-TO-DATE +> Task :app:createConjugateDebugCompatibleScreenManifests UP-TO-DATE +> Task :app:extractDeepLinksConjugateDebug UP-TO-DATE +> Task :app:processConjugateDebugMainManifest UP-TO-DATE +> Task :app:processConjugateDebugManifest UP-TO-DATE +> Task :app:processConjugateDebugManifestForPackage UP-TO-DATE +> Task :app:processConjugateDebugResources UP-TO-DATE +> Task :app:kspConjugateDebugKotlin UP-TO-DATE +> Task :app:javaPreCompileConjugateDebug UP-TO-DATE +> Task :app:mergeConjugateDebugShaders UP-TO-DATE +> Task :app:compileConjugateDebugShaders NO-SOURCE +> Task :app:generateConjugateDebugAssets UP-TO-DATE +> Task :app:mergeConjugateDebugAssets UP-TO-DATE +> Task :app:compressConjugateDebugAssets UP-TO-DATE +> Task :app:generateConjugateDebugJacocoPropertiesFile UP-TO-DATE +> Task :app:checkConjugateDebugDuplicateClasses UP-TO-DATE +> Task :app:desugarConjugateDebugFileDependencies UP-TO-DATE +> Task :app:mergeExtDexConjugateDebug UP-TO-DATE +> Task :app:mergeLibDexConjugateDebug UP-TO-DATE +> Task :app:mergeConjugateDebugJniLibFolders UP-TO-DATE +> Task :app:mergeConjugateDebugNativeLibs UP-TO-DATE +> Task :app:stripConjugateDebugDebugSymbols UP-TO-DATE +> Task :app:validateSigningConjugateDebug UP-TO-DATE +> Task :app:writeConjugateDebugAppMetadata UP-TO-DATE +> Task :app:writeConjugateDebugSigningConfigVersions UP-TO-DATE +> Task :app:preKeyboardsDebugBuild UP-TO-DATE +> Task :app:mergeKeyboardsDebugNativeDebugMetadata NO-SOURCE +> Task :app:dataBindingMergeDependencyArtifactsKeyboardsDebug UP-TO-DATE +> Task :app:generateKeyboardsDebugResValues UP-TO-DATE +> Task :app:generateKeyboardsDebugResources UP-TO-DATE +> Task :app:mergeKeyboardsDebugResources UP-TO-DATE +> Task :app:dataBindingGenBaseClassesKeyboardsDebug UP-TO-DATE +> Task :app:generateKeyboardsDebugBuildConfig UP-TO-DATE +> Task :app:checkKeyboardsDebugAarMetadata UP-TO-DATE +> Task :app:processKeyboardsDebugNavigationResources UP-TO-DATE +> Task :app:compileKeyboardsDebugNavigationResources UP-TO-DATE +> Task :app:mapKeyboardsDebugSourceSetPaths UP-TO-DATE +> Task :app:createKeyboardsDebugCompatibleScreenManifests UP-TO-DATE +> Task :app:extractDeepLinksKeyboardsDebug UP-TO-DATE +> Task :app:processKeyboardsDebugMainManifest UP-TO-DATE +> Task :app:processKeyboardsDebugManifest UP-TO-DATE +> Task :app:processKeyboardsDebugManifestForPackage UP-TO-DATE +> Task :app:processKeyboardsDebugResources UP-TO-DATE +> Task :app:kspKeyboardsDebugKotlin UP-TO-DATE +> Task :app:javaPreCompileKeyboardsDebug UP-TO-DATE +> Task :app:mergeKeyboardsDebugShaders UP-TO-DATE +> Task :app:compileKeyboardsDebugShaders NO-SOURCE +> Task :app:generateKeyboardsDebugAssets UP-TO-DATE +> Task :app:mergeKeyboardsDebugAssets UP-TO-DATE +> Task :app:compressKeyboardsDebugAssets UP-TO-DATE +> Task :app:checkKeyboardsDebugDuplicateClasses UP-TO-DATE +> Task :app:desugarKeyboardsDebugFileDependencies UP-TO-DATE +> Task :app:mergeExtDexKeyboardsDebug UP-TO-DATE +> Task :app:generateKeyboardsDebugJacocoPropertiesFile UP-TO-DATE +> Task :app:mergeLibDexKeyboardsDebug UP-TO-DATE +> Task :app:mergeKeyboardsDebugJniLibFolders UP-TO-DATE +> Task :app:mergeKeyboardsDebugNativeLibs UP-TO-DATE +> Task :app:stripKeyboardsDebugDebugSymbols UP-TO-DATE +> Task :app:validateSigningKeyboardsDebug UP-TO-DATE +> Task :app:writeKeyboardsDebugAppMetadata UP-TO-DATE +> Task :app:writeKeyboardsDebugSigningConfigVersions UP-TO-DATE + +> Task :app:compileKeyboardsDebugKotlin FAILED +.\gradlew : e: file:/ +//D:/Code/Scribe/Scri +be-Android/app/src/ma +in/java/be/scri/ui/sc +reens/conjugate/Conju +gateScreen.kt:52:17 +No parameter with +name 'title' found. +At line:1 char:1 ++ .\gradlew +assembleDebug > +build3.log 2>&1 ; +Get-Content +build3.log | ... ++ ~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~ +~ + + CategoryInfo + : NotSpe + cified: (e: file + :///D:/C... 'tit +le' found.:Strin +g) [], RemoteExc +eption + + FullyQualified + ErrorId : Native + CommandError + +e: file:///D:/Code/Sc +ribe/Scribe-Android/a +pp/src/main/java/be/s +cri/ui/screens/conjug +ate/ConjugateScreen.k +t:53:17 No value +passed for parameter +'pageTitle'. + +> Task :app:compileConjugateDebugKotlin FAILED +e: file:///D:/Code/Sc +ribe/Scribe-Android/a +pp/src/main/java/be/s +cri/ui/screens/conjug +ate/ConjugateScreen.k +t:52:17 No parameter +with name 'title' +found. +e: file:///D:/Code/Sc +ribe/Scribe-Android/a +pp/src/main/java/be/s +cri/ui/screens/conjug +ate/ConjugateScreen.k +t:53:17 No value +passed for parameter +'pageTitle'. + +FAILURE: Build +completed with 2 +failures. + +1: Task failed with +an exception. +----------- +* What went wrong: +Execution failed for +task ':app:compileKey +boardsDebugKotlin'. +> A failure occurred +while executing org.j +etbrains.kotlin.compi +lerRunner.GradleCompi +lerRunnerWithWorkers$ +GradleKotlinCompilerW +orkAction + > Compilation +error. See log for +more details + +* Try: +> Run with +--stacktrace option +to get the stack +trace. +> Run with --info or +--debug option to +get more log output. +> Run with --scan to +get full insights. +> Get more help at ht +tps://help.gradle.org +. +===================== +===================== +===================== +=============== + +2: Task failed with +an exception. +----------- +* What went wrong: +Execution failed for +task ':app:compileCon +jugateDebugKotlin'. +> A failure occurred +while executing org.j +etbrains.kotlin.compi +lerRunner.GradleCompi +lerRunnerWithWorkers$ +GradleKotlinCompilerW +orkAction + > Compilation +error. See log for +more details + +* Try: +> Run with +--stacktrace option +to get the stack +trace. +> Run with --info or +--debug option to +get more log output. +> Run with --scan to +get full insights. +> Get more help at ht +tps://help.gradle.org +. +===================== +===================== +===================== +=============== + +BUILD FAILED in 8s +66 actionable tasks: 2 executed, 64 up-to-date diff --git a/build_output.txt b/build_output.txt new file mode 100644 index 0000000000000000000000000000000000000000..5a0403d65e48106fe4c0518f0dbe85c1b7addd2a GIT binary patch literal 15646 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 literal 0 HcmV?d00001 diff --git a/detekt.log b/detekt.log new file mode 100644 index 0000000000000000000000000000000000000000..36d257b538a609450889649bb9036c3bf0179a08 GIT binary patch literal 3204 zcmeH~%We}<42Hc%;vGgpqTCXo6c$||dRIkNO4Eu((?yz0nt|MuNm{bu(SiT-nZr!l zAi4#i(M-<8_OXBa*v^md4VzlaCi-SJv`b4gOKeXoE$dj{Qq8tCPHkW#Q9RT9rQQph zS#EQUT3YQCtH@}JZeU}rBlBX3j9k=E&9n#SP~)k7FZ{HLzQ|6s$7x}lSWQpv+D?5f zv99BK;?Y`Z!w^}{XN^V~?S}!P4%{b@KK1fzW-%~rbE!$bj(~=G28@$Ng z)>>0sBbVBgoVK*U(p2l!S4R^cuDgI9xJ zf^__JElsA@)99TYxi(i?NwuE%I+SptXY?CVs8P$& zj~bMEC6YSPgQfe@EkwehBakUaFIqu`92B*nQ{fC}^Nq1aXRzazZt8S83uHslm2Bo9 zQLTy8mq3vgc9yo4HR_3IK6yM6r`M7~d@;fXkX-juz$z75vtRg7C8{UKT8d6|KcUxI z5&yDVw4#WIlFo>(1U%>B$@Jco3|(34R|`Ee=|*J@c0&ViE)A)Xix!^9nt5RfCmxFm zbV{l4mmOW(dlPPSh>wxtFUCc{bSiWbX+WnJx(z%V`a!rORg_U$d;4t8jrEo8gdQ^L z!=0wLr4wG%B4_|z)S|4`@$S>F(0TCvlLmBnA!cq%?n**mPvUywrGS0J8BF&IEJ`it zp87hS9t@Q57W!6up-4jyRA$h+qj2fer6)JN6FX4WUChBjEB*%zoP!*T=c31A4}_mW QT#_-M;%3CCCXUeVCqbkcI{*Lx literal 0 HcmV?d00001 diff --git a/detekt3.log b/detekt3.log new file mode 100644 index 0000000000000000000000000000000000000000..e8af167129ba33f0572d3414c9d252c05458be7c GIT binary patch literal 2414 zcmds(OK;Oq5QS%r#DBOe%Bum|ibar++9pL6P@ojCsF846Cv}^ok>gUb;im)Nxntuv ztpuBH&{gbfd*;lU=gqI5FD=-Cr8cv3c3nHM%u0UeT!Zb|J6pAnTtC^qZCl^&+MW1Y z)=O>5TGrpOP206M==Gvj4~Ybvi)beS`Pd4}?FftQr&Tm3NEOKD+!Hv;LITqQt;EK> z$&pFyjNLbWNrf}3P!qdELK?D?u_o*jo-Wv(@pXunyme0Pch1eVIx!wyduHplfe*TO ziO>7UUbcl2Yyjp2{1Use5$tR9wvF6}`xKcu{+E@mkTSf;xn7|a*v+^K?~+|c3_3g? zl8NR`+x}am#xVwkefdw~yiMzU_Lsbp2k&?Ml%&Ph;#Jp^h_rP1# zZx;OvRLyDRr0SCXBP4FZXm_Y29jCO{)LdCT1yhIW>!SQRh$Ezid|N}}9=3wLs3c#( zrKI20pA&ZK7x7$1aNG`9oj*)}*uO0C`4>5tS(eswsFtF$UG>foz6IU13*P~Imsymq zwftUZVGr4o9-QLoF}WDT?mLNDsx^dipEv4MO{xj8dw_*QI_xp`eRRhWNB!T}?Av!R zv)Jc83z}~s=2p);^!A7~w-4;nn7f)qAA6d9i{2FYc*2{;15KWsxsk=JjpJ0*-0W9+ z&dHIAil1Bd$*j5Fk9b=!$YCISNetklXHA~KOv_#h!lcIka{qULDwyca6l|@ZUKdDyGzv;|bscKTyuMRi=KP;CS}(>YL| z6_PDu#)o`W+!S%iHQFBe2E+N>Y+H6!vECC+6!l&`eFR%gf;J0hATBiv)wfP3O)Q@s z7cpPcc>Nm#oxWZ(*O7Hzs{VD_>1?iJU&mQ~`BVzA%bbN`G9q%SMMX*3^4Lwm=-Lxj zEz`k^W(IenC&MV+WO9o$RsT|YU@iV*aaMsD`4n7P(6m(U>YSy-P#vO7d1b0IC8ge| J>spm0?cYVbij)8V literal 0 HcmV?d00001 diff --git a/detekt3_utf8.log b/detekt3_utf8.log new file mode 100644 index 000000000..b202ec5af --- /dev/null +++ b/detekt3_utf8.log @@ -0,0 +1,54 @@ +> Task :detekt NO-SOURCE + +> Task :app:detekt FAILED +D:\Code\Scribe\Scribe-Android\app\src\main\java\be\scri\ui\screens\conjugate\ConjugateScreen.kt:134:13: Private function `ConjugateEmptyStatePreview` is unused. [UnusedPrivateMember] +D:\Code\Scribe\Scribe-Android\app\src\main\java\be\scri\ui\screens\conjugate\ConjugateScreen.kt:146:13: Private function `ConjugateEmptyStateDarkPreview` is unused. [UnusedPrivateMember] + +.\gradlew : +At line:1 char:1 ++ .\gradlew detekt +lintKotlin > +detekt3.log 2>&1 ; +Get-Content detekt3. +... ++ ~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~ +~~~~~~ + + CategoryInfo + : +NotSpecified: +(:String) [], Remote + Exception + + +FullyQualifiedErro + rId : +NativeCommandE +rror + +FAILURE: Build +failed with an +exception. + +* What went wrong: +Execution failed for +task ':app:detekt'. +> Analysis failed +with 2 weighted +issues. + +* Try: +> Run with +--stacktrace option +to get the stack +trace. +> Run with --info or +--debug option to +get more log output. +> Run with --scan to +get full insights. +> Get more help at ht +tps://help.gradle.org +. + +BUILD FAILED in 10s +1 actionable task: 1 executed diff --git a/detekt_utf8.log b/detekt_utf8.log new file mode 100644 index 000000000..65188e9aa --- /dev/null +++ b/detekt_utf8.log @@ -0,0 +1,56 @@ +Starting a Gradle Daemon, 1 busy and 1 incompatible Daemons could not be reused, use --status for details +> Task :detekt NO-SOURCE +> Task :app:detekt +D:\Code\Scribe\Scribe-Android\app\src\main\java\be\scri\ui\screens\conjugate\ConjugateScreen.kt:134:5: Composables annotated with @Preview that are used only for previewing the UI should not be public. + +See https://mrmans0n.github.io/compose-rules/rules/#preview-composables-should-not-be-public for more information. [PreviewPublic] +D:\Code\Scribe\Scribe-Android\app\src\main\java\be\scri\ui\screens\conjugate\ConjugateScreen.kt:146:5: Composables annotated with @Preview that are used only for previewing the UI should not be public. + +See https://mrmans0n.github.io/compose-rules/rules/#preview-composables-should-not-be-public for more information. [PreviewPublic] + + +> Task :app:detekt FAILED +.\gradlew : +At line:1 char:1 ++ .\gradlew detekt +lintKotlin > +detekt.log 2>&1 ++ ~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~~~~~~~ +~~~~~ + + CategoryInfo + : NotSpe + cified: (:String + ) [], RemoteExce +ption + + FullyQualified + ErrorId : Native + CommandError + +FAILURE: Build +failed with an +exception. + +* What went wrong: +Execution failed for +task ':app:detekt'. +> Analysis failed +with 2 weighted +issues. + +* Try: +> Run with +--stacktrace option +to get the stack +trace. +> Run with --info or +--debug option to +get more log output. +> Run with --scan to +get full insights. +> Get more help at ht +tps://help.gradle.org +. + +BUILD FAILED in 1m +1 actionable task: 1 executed From 37c54a4dfb1ba70077c91e73aad56ff92f37201b Mon Sep 17 00:00:00 2001 From: Mounil Kanakhara Date: Thu, 26 Mar 2026 16:11:34 +0530 Subject: [PATCH 3/3] style: remove previews and fix ktlint formatting Signed-off-by: Mounil Kanakhara --- app/src/main/java/be/scri/App.kt | 9 ++-- .../ui/screens/conjugate/ConjugateScreen.kt | 51 +++++-------------- 2 files changed, 16 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/be/scri/App.kt b/app/src/main/java/be/scri/App.kt index 07a19746f..0fb27bda7 100644 --- a/app/src/main/java/be/scri/App.kt +++ b/app/src/main/java/be/scri/App.kt @@ -15,15 +15,12 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.pager.HorizontalPager import androidx.compose.foundation.pager.PagerState -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel @@ -44,12 +41,12 @@ import be.scri.ui.screens.SelectTranslationSourceLanguageScreen import be.scri.ui.screens.ThirdPartyScreen import be.scri.ui.screens.WikimediaScreen import be.scri.ui.screens.about.AboutScreen +import be.scri.ui.screens.conjugate.ConjugateScreen import be.scri.ui.screens.download.CheckUpdateActions import be.scri.ui.screens.download.DataDownloadViewModel import be.scri.ui.screens.download.DownloadActions import be.scri.ui.screens.download.DownloadDataScreen import be.scri.ui.screens.settings.SettingsScreen -import be.scri.ui.screens.conjugate.ConjugateScreen import be.scri.ui.theme.ScribeTheme import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @@ -168,12 +165,12 @@ fun ScribeApp( } is BottomBarScreen.Conjugate -> { Box( - modifier = Modifier.fillMaxSize() + modifier = Modifier.fillMaxSize(), ) { ConjugateScreen( isDarkTheme = isDarkTheme, downloadStates = downloadStates, - onDownloadAction = onDownloadAction + onDownloadAction = onDownloadAction, ) } HandleBackPress(pagerState, coroutineScope) diff --git a/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateScreen.kt b/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateScreen.kt index 2f66e2b16..472b55ff6 100644 --- a/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateScreen.kt +++ b/app/src/main/java/be/scri/ui/screens/conjugate/ConjugateScreen.kt @@ -46,20 +46,21 @@ fun ConjugateScreen( Scaffold( topBar = { - // Using PageTitle as a stand-in for the shared TabBar from issue #560 + // Using PageTitle as a stand-in for the shared TabBar from issue #560 // if an explicit TabBar component is not present in the current branch. PageTitle( pageTitle = "Conjugate", // Can be replaced by i18n string - modifier = Modifier.fillMaxWidth() + modifier = Modifier.fillMaxWidth(), ) }, modifier = modifier.fillMaxSize(), ) { paddingValues -> Box( - modifier = Modifier - .fillMaxSize() - .padding(paddingValues), - contentAlignment = Alignment.Center + modifier = + Modifier + .fillMaxSize() + .padding(paddingValues), + contentAlignment = Alignment.Center, ) { if (!isDataAvailable) { ConjugateEmptyState( @@ -67,7 +68,7 @@ fun ConjugateScreen( downloadState = conjugateDownloadState, onDownloadClick = { onDownloadAction("conjugate_data", false) - } + }, ) } else { // Next page content (out of scope for #563) @@ -90,14 +91,14 @@ fun ConjugateEmptyState( Column( modifier = modifier.padding(16.dp), horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center + verticalArrangement = Arrangement.Center, ) { // SVG Placeholder logo Icon( painter = painterResource(id = R.drawable.scribe_logo), contentDescription = null, modifier = Modifier.size(120.dp), - tint = MaterialTheme.colorScheme.onSurfaceVariant + tint = MaterialTheme.colorScheme.onSurfaceVariant, ) Spacer(modifier = Modifier.height(24.dp)) @@ -106,7 +107,7 @@ fun ConjugateEmptyState( text = stringResource(id = R.string.i18n_app_download_menu_option_conjugate_description), style = MaterialTheme.typography.bodyLarge, textAlign = TextAlign.Center, - color = MaterialTheme.colorScheme.onSurface + color = MaterialTheme.colorScheme.onSurface, ) Spacer(modifier = Modifier.height(32.dp)) @@ -115,7 +116,7 @@ fun ConjugateEmptyState( onClick = onDownloadClick, isDarkTheme = isDarkTheme, downloadState = downloadState, - modifier = Modifier.padding(horizontal = 16.dp) + modifier = Modifier.padding(horizontal = 16.dp), ) Spacer(modifier = Modifier.height(16.dp)) @@ -124,33 +125,7 @@ fun ConjugateEmptyState( text = stringResource(id = R.string.i18n_app_download_menu_option_conjugate_download_data_start), style = MaterialTheme.typography.bodyMedium, textAlign = TextAlign.Center, - color = MaterialTheme.colorScheme.onSurfaceVariant - ) - } -} - -@Suppress("UnusedPrivateMember") -@androidx.compose.ui.tooling.preview.Preview(showBackground = true) -@Composable -private fun ConjugateEmptyStatePreview() { - MaterialTheme { - ConjugateEmptyState( - isDarkTheme = false, - downloadState = DownloadState.Ready, - onDownloadClick = {} - ) - } -} - -@Suppress("UnusedPrivateMember") -@androidx.compose.ui.tooling.preview.Preview(showBackground = true, uiMode = android.content.res.Configuration.UI_MODE_NIGHT_YES) -@Composable -private fun ConjugateEmptyStateDarkPreview() { - MaterialTheme { - ConjugateEmptyState( - isDarkTheme = true, - downloadState = DownloadState.Ready, - onDownloadClick = {} + color = MaterialTheme.colorScheme.onSurfaceVariant, ) } }