Split compare view in different files

main
CAPEL Maxime 2024-01-18 14:33:09 +01:00
parent 489c6f87e6
commit 08e8577a5c
3 changed files with 197 additions and 165 deletions

View File

@ -0,0 +1,99 @@
package main
import androidx.compose.foundation.VerticalScrollbar
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollbarAdapter
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import main.component.buttonComponent
import main.component.dropdownButtonComponent
@Composable
fun glossaryList(
languageManager: LanguageManager,
glossaries: List<Glossary>,
onGlossarySelected: (Glossary) -> Unit,
onBackClick: () -> Unit,
onProjectClick: () -> Unit,
onCodeToVerifyClick: () -> Unit
) {
var isCompareClicked by remember { mutableStateOf(false) }
val noFileSnackbarVisibleState = remember { mutableStateOf(false) }
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text("Sélectionnez un glossaire", style = MaterialTheme.typography.h5)
Spacer(modifier = Modifier.height(16.dp))
Box(
modifier = Modifier
.height(500.dp)
.width(250.dp)
.padding(10.dp)
) {
val scrollState = rememberLazyListState()
LazyColumn(
state = scrollState,
modifier = Modifier
.padding(10.dp)
.width(200.dp),
verticalArrangement = Arrangement.spacedBy(10.dp)
) {
if (glossaries.isEmpty()) {
item {
Text("Aucun glossaire disponible")
}
} else {
items(glossaries) { glossary ->
Row(
modifier = Modifier.width(200.dp).fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically
) {
buttonComponent(glossary.name, { onGlossarySelected(glossary) }, width = 200)
}
}
}
}
VerticalScrollbar(
modifier = Modifier.align(Alignment.CenterEnd).fillMaxHeight(),
adapter = rememberScrollbarAdapter(scrollState)
)
Spacer(modifier = Modifier.height(6.dp))
}
Spacer(modifier = Modifier.height(16.dp))
buttonComponent("Retour", onBackClick)
}
dropdownButtonComponent(
languageManager,
items = listOf("Glossaire", "Code à vérifier", "Comparer")
) { selectedOption ->
// Handle the selected option
when (selectedOption) {
"Glossaire" -> onProjectClick()
"Code à vérifier" -> onCodeToVerifyClick()
"Comparer" -> {
if (mostUsedWordList.isEmpty()) {
noFileSnackbarVisibleState.value = true
return@dropdownButtonComponent
} else {
isCompareClicked = true
}
}
}
}
}

View File

@ -0,0 +1,98 @@
package main
import androidx.compose.foundation.VerticalScrollbar
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.rememberScrollbarAdapter
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import main.component.buttonComponent
import main.component.dropdownButtonComponent
@Composable
fun projectList(
languageManager: LanguageManager,
projects: List<Project>,
onProjectSelected: (Project) -> Unit,
onBackClick: () -> Unit,
onProjectClick: () -> Unit,
onCodeToVerifyClick: () -> Unit
) {
var isCompareClicked by remember { mutableStateOf(false) }
val noFileSnackbarVisibleState = remember { mutableStateOf(false) }
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text("Sélectionnez un projet", style = MaterialTheme.typography.h5)
Spacer(modifier = Modifier.height(16.dp))
Box(
modifier = Modifier
.height(500.dp)
.width(250.dp)
.padding(10.dp)
) {
val scrollState = rememberLazyListState()
LazyColumn(
state = scrollState,
modifier = Modifier
.padding(10.dp)
.width(200.dp),
verticalArrangement = Arrangement.spacedBy(10.dp)
) {
if (projects.isEmpty()) {
item {
Text("Aucun glossaire disponible")
}
} else {
items(projects) { project ->
Row(
modifier = Modifier.width(200.dp).fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically
) {
buttonComponent(project.name, { onProjectSelected(project) }, width = 200)
}
}
}
}
VerticalScrollbar(
modifier = Modifier.align(Alignment.CenterEnd).fillMaxHeight(),
adapter = rememberScrollbarAdapter(scrollState)
)
Spacer(modifier = Modifier.height(6.dp))
}
Spacer(modifier = Modifier.height(16.dp))
buttonComponent("Retour", onBackClick)
}
dropdownButtonComponent(
languageManager,
items = listOf("Glossaire", "Code à vérifier", "Comparer")
) { selectedOption ->
// Handle the selected option
when (selectedOption) {
"Glossaire" -> onProjectClick()
"Code à vérifier" -> onCodeToVerifyClick()
"Comparer" -> {
if (mostUsedWordList.isEmpty()) {
noFileSnackbarVisibleState.value = true
return@dropdownButtonComponent
} else {
isCompareClicked = true
}
}
}
}
}

View File

@ -194,168 +194,3 @@ fun homePage(
}
}
@Composable
fun glossaryList(
languageManager: LanguageManager,
glossaries: List<Glossary>,
onGlossarySelected: (Glossary) -> Unit,
onBackClick: () -> Unit,
onProjectClick: () -> Unit,
onCodeToVerifyClick: () -> Unit
) {
var isCompareClicked by remember { mutableStateOf(false) }
val noFileSnackbarVisibleState = remember { mutableStateOf(false) }
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text("Sélectionnez un glossaire", style = MaterialTheme.typography.h5)
Spacer(modifier = Modifier.height(16.dp))
Box(
modifier = Modifier
.height(500.dp)
.width(250.dp)
.padding(10.dp)
) {
val scrollState = rememberLazyListState()
LazyColumn(
state = scrollState,
modifier = Modifier
.padding(10.dp)
.width(200.dp),
verticalArrangement = Arrangement.spacedBy(10.dp)
) {
if (glossaries.isEmpty()) {
item {
Text("Aucun glossaire disponible")
}
} else {
items(glossaries) { glossary ->
Row(
modifier = Modifier.width(200.dp).fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically
) {
buttonComponent(glossary.name, { onGlossarySelected(glossary) }, width = 200)
}
}
}
}
VerticalScrollbar(
modifier = Modifier.align(Alignment.CenterEnd).fillMaxHeight(),
adapter = rememberScrollbarAdapter(scrollState)
)
Spacer(modifier = Modifier.height(6.dp))
}
Spacer(modifier = Modifier.height(16.dp))
buttonComponent("Retour", onBackClick)
}
dropdownButtonComponent(
languageManager,
items = listOf("Glossaire", "Code à vérifier", "Comparer")
) { selectedOption ->
// Handle the selected option
when (selectedOption) {
"Glossaire" -> onProjectClick()
"Code à vérifier" -> onCodeToVerifyClick()
"Comparer" -> {
if (mostUsedWordList.isEmpty()) {
noFileSnackbarVisibleState.value = true
return@dropdownButtonComponent
} else {
isCompareClicked = true
}
}
}
}
}
@Composable
fun projectList(
languageManager: LanguageManager,
projects: List<Project>,
onProjectSelected: (Project) -> Unit,
onBackClick: () -> Unit,
onProjectClick: () -> Unit,
onCodeToVerifyClick: () -> Unit
) {
var isCompareClicked by remember { mutableStateOf(false) }
val noFileSnackbarVisibleState = remember { mutableStateOf(false) }
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
) {
Text("Sélectionnez un projet", style = MaterialTheme.typography.h5)
Spacer(modifier = Modifier.height(16.dp))
Box(
modifier = Modifier
.height(500.dp)
.width(250.dp)
.padding(10.dp)
) {
val scrollState = rememberLazyListState()
LazyColumn(
state = scrollState,
modifier = Modifier
.padding(10.dp)
.width(200.dp),
verticalArrangement = Arrangement.spacedBy(10.dp)
) {
if (projects.isEmpty()) {
item {
Text("Aucun glossaire disponible")
}
} else {
items(projects) { project ->
Row(
modifier = Modifier.width(200.dp).fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically
) {
buttonComponent(project.name, { onProjectSelected(project) }, width = 200)
}
}
}
}
VerticalScrollbar(
modifier = Modifier.align(Alignment.CenterEnd).fillMaxHeight(),
adapter = rememberScrollbarAdapter(scrollState)
)
Spacer(modifier = Modifier.height(6.dp))
}
Spacer(modifier = Modifier.height(16.dp))
buttonComponent("Retour", onBackClick)
}
dropdownButtonComponent(
languageManager,
items = listOf("Glossaire", "Code à vérifier", "Comparer")
) { selectedOption ->
// Handle the selected option
when (selectedOption) {
"Glossaire" -> onProjectClick()
"Code à vérifier" -> onCodeToVerifyClick()
"Comparer" -> {
if (mostUsedWordList.isEmpty()) {
noFileSnackbarVisibleState.value = true
return@dropdownButtonComponent
} else {
isCompareClicked = true
}
}
}
}
}