DocumentScreen: dropdown menu for color mode

This commit is contained in:
Pierre-Yves Nicolas
2026-04-01 11:43:31 +02:00
parent 215f57bb74
commit 18923d5934
14 changed files with 56 additions and 15 deletions

View File

@@ -31,6 +31,8 @@ import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.AutoFixHigh
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.Contrast import androidx.compose.material.icons.filled.Contrast
import androidx.compose.material.icons.filled.Done import androidx.compose.material.icons.filled.Done
import androidx.compose.material.icons.filled.Palette import androidx.compose.material.icons.filled.Palette
@@ -39,6 +41,8 @@ import androidx.compose.material.icons.filled.RotateRight
import androidx.compose.material.icons.outlined.Add import androidx.compose.material.icons.outlined.Add
import androidx.compose.material.icons.outlined.Delete import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
@@ -47,9 +51,11 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Size import androidx.compose.ui.geometry.Size
@@ -240,23 +246,45 @@ fun ColorModeButton(
onToggle: () -> Unit, onToggle: () -> Unit,
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
val icon = when (currentColorMode) { var expanded by remember { mutableStateOf(false) }
COLOR -> Icons.Default.Palette
GRAYSCALE -> Icons.Default.Contrast Box(modifier = modifier) {
}
val label = when (currentColorMode) {
COLOR -> stringResource(R.string.color_mode_color)
GRAYSCALE -> stringResource(R.string.color_mode_grayscale)
}
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = modifier
) {
SecondaryActionButton( SecondaryActionButton(
icon = icon, icon = Icons.Default.AutoFixHigh,
contentDescription = label, contentDescription = stringResource(R.string.color_mode),
onClick = onToggle, onClick = { expanded = true },
) )
DropdownMenu(
expanded = expanded,
onDismissRequest = { expanded = false },
) {
DropdownMenuItem(
text = { Text(stringResource(R.string.color_mode_color)) },
leadingIcon = { Icon(Icons.Default.Palette, contentDescription = null) },
onClick = {
if (currentColorMode != COLOR) onToggle()
expanded = false
},
trailingIcon = {
if (currentColorMode == COLOR) {
Icon(Icons.Default.Check, contentDescription = null)
}
}
)
DropdownMenuItem(
text = { Text(stringResource(R.string.color_mode_grayscale)) },
leadingIcon = { Icon(Icons.Default.Contrast, contentDescription = null) },
onClick = {
if (currentColorMode != GRAYSCALE) onToggle()
expanded = false
},
trailingIcon = {
if (currentColorMode == GRAYSCALE) {
Icon(Icons.Default.Check, contentDescription = null)
}
}
)
}
} }
} }

View File

@@ -8,6 +8,7 @@
<string name="cancel">ألغِ</string> <string name="cancel">ألغِ</string>
<string name="change_directory">غيّر المجلد</string> <string name="change_directory">غيّر المجلد</string>
<string name="clear_text">امحُ النص</string> <string name="clear_text">امحُ النص</string>
<string name="color_mode">فلتر</string>
<string name="color_mode_color">ألوان</string> <string name="color_mode_color">ألوان</string>
<string name="color_mode_grayscale">تدرج الرمادي</string> <string name="color_mode_grayscale">تدرج الرمادي</string>
<string name="contact">تواصل</string> <string name="contact">تواصل</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Zrušit</string> <string name="cancel">Zrušit</string>
<string name="change_directory">Změnit složku</string> <string name="change_directory">Změnit složku</string>
<string name="clear_text">Smazat text</string> <string name="clear_text">Smazat text</string>
<string name="color_mode">Filtr</string>
<string name="color_mode_color">Barva</string> <string name="color_mode_color">Barva</string>
<string name="color_mode_grayscale">Odstíny šedi</string> <string name="color_mode_grayscale">Odstíny šedi</string>
<string name="contact">Kontakt</string> <string name="contact">Kontakt</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Abbrechen</string> <string name="cancel">Abbrechen</string>
<string name="change_directory">Ordner ändern</string> <string name="change_directory">Ordner ändern</string>
<string name="clear_text">Text löschen</string> <string name="clear_text">Text löschen</string>
<string name="color_mode">Filter</string>
<string name="color_mode_color">Farbe</string> <string name="color_mode_color">Farbe</string>
<string name="color_mode_grayscale">Graustufen</string> <string name="color_mode_grayscale">Graustufen</string>
<string name="contact">Kontakt</string> <string name="contact">Kontakt</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Cancelar</string> <string name="cancel">Cancelar</string>
<string name="change_directory">Cambiar carpeta</string> <string name="change_directory">Cambiar carpeta</string>
<string name="clear_text">Borrar texto</string> <string name="clear_text">Borrar texto</string>
<string name="color_mode">Filtro</string>
<string name="color_mode_color">Color</string> <string name="color_mode_color">Color</string>
<string name="color_mode_grayscale">Escala de grises</string> <string name="color_mode_grayscale">Escala de grises</string>
<string name="contact">Contacto</string> <string name="contact">Contacto</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Annuler</string> <string name="cancel">Annuler</string>
<string name="change_directory">Changer de dossier</string> <string name="change_directory">Changer de dossier</string>
<string name="clear_text">Effacer le text</string> <string name="clear_text">Effacer le text</string>
<string name="color_mode">Filtre</string>
<string name="color_mode_color">Couleur</string> <string name="color_mode_color">Couleur</string>
<string name="color_mode_grayscale">Niveaux de gris</string> <string name="color_mode_grayscale">Niveaux de gris</string>
<string name="contact">Contact</string> <string name="contact">Contact</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Cancelar</string> <string name="cancel">Cancelar</string>
<string name="change_directory">Trocar cartafol</string> <string name="change_directory">Trocar cartafol</string>
<string name="clear_text">Borrar texto</string> <string name="clear_text">Borrar texto</string>
<string name="color_mode">Filtro</string>
<string name="color_mode_color">Cor</string> <string name="color_mode_color">Cor</string>
<string name="color_mode_grayscale">Escala de grises</string> <string name="color_mode_grayscale">Escala de grises</string>
<string name="contact">Contacto</string> <string name="contact">Contacto</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Annulla</string> <string name="cancel">Annulla</string>
<string name="change_directory">Cambia cartella</string> <string name="change_directory">Cambia cartella</string>
<string name="clear_text">Svuota testo</string> <string name="clear_text">Svuota testo</string>
<string name="color_mode">Filtro</string>
<string name="color_mode_color">Colore</string> <string name="color_mode_color">Colore</string>
<string name="color_mode_grayscale">Scala di grigi</string> <string name="color_mode_grayscale">Scala di grigi</string>
<string name="contact">Contatti</string> <string name="contact">Contatti</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Cancelar</string> <string name="cancel">Cancelar</string>
<string name="change_directory">Alterar diretório</string> <string name="change_directory">Alterar diretório</string>
<string name="clear_text">Limpar texto</string> <string name="clear_text">Limpar texto</string>
<string name="color_mode">Filtro</string>
<string name="color_mode_color">Cor</string> <string name="color_mode_color">Cor</string>
<string name="color_mode_grayscale">Escala de cinza</string> <string name="color_mode_grayscale">Escala de cinza</string>
<string name="contact">Contato</string> <string name="contact">Contato</string>

View File

@@ -11,6 +11,7 @@
<string name="color_mode_color">Цвет</string> <string name="color_mode_color">Цвет</string>
<string name="color_mode_grayscale">Оттенки серого</string> <string name="color_mode_grayscale">Оттенки серого</string>
<string name="contact">Контакты</string> <string name="contact">Контакты</string>
<string name="color_mode">Фильтр</string>
<string name="copied_logs">Журналы скопированы в буфер обмена</string> <string name="copied_logs">Журналы скопированы в буфер обмена</string>
<string name="copy_logs">Копировать журналы</string> <string name="copy_logs">Копировать журналы</string>
<string name="creating_export">Подготовка экспорта…</string> <string name="creating_export">Подготовка экспорта…</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">İptal</string> <string name="cancel">İptal</string>
<string name="change_directory">Dizini değiştir</string> <string name="change_directory">Dizini değiştir</string>
<string name="clear_text">Metni temizle</string> <string name="clear_text">Metni temizle</string>
<string name="color_mode">Filtre</string>
<string name="color_mode_color">Renkli</string> <string name="color_mode_color">Renkli</string>
<string name="color_mode_grayscale">Gri tonlama</string> <string name="color_mode_grayscale">Gri tonlama</string>
<string name="contact">İletişim</string> <string name="contact">İletişim</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">取消</string> <string name="cancel">取消</string>
<string name="change_directory">變更目錄</string> <string name="change_directory">變更目錄</string>
<string name="clear_text">清除文字</string> <string name="clear_text">清除文字</string>
<string name="color_mode">濾鏡</string>
<string name="color_mode_color">彩色</string> <string name="color_mode_color">彩色</string>
<string name="color_mode_grayscale">灰階</string> <string name="color_mode_grayscale">灰階</string>
<string name="contact">聯絡我們</string> <string name="contact">聯絡我們</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">取消</string> <string name="cancel">取消</string>
<string name="change_directory">更改目录</string> <string name="change_directory">更改目录</string>
<string name="clear_text">清除文字</string> <string name="clear_text">清除文字</string>
<string name="color_mode">滤镜</string>
<string name="color_mode_color">彩色</string> <string name="color_mode_color">彩色</string>
<string name="color_mode_grayscale">灰度</string> <string name="color_mode_grayscale">灰度</string>
<string name="contact">联系人</string> <string name="contact">联系人</string>

View File

@@ -9,6 +9,7 @@
<string name="cancel">Cancel</string> <string name="cancel">Cancel</string>
<string name="change_directory">Change folder</string> <string name="change_directory">Change folder</string>
<string name="clear_text">Clear text</string> <string name="clear_text">Clear text</string>
<string name="color_mode">Filter</string>
<string name="color_mode_color">Color</string> <string name="color_mode_color">Color</string>
<string name="color_mode_grayscale">Grayscale</string> <string name="color_mode_grayscale">Grayscale</string>
<string name="contact">Contact</string> <string name="contact">Contact</string>