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.shape.RoundedCornerShape
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.Done
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.Delete
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.DropdownMenuItem
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
@@ -47,9 +51,11 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Size
@@ -240,23 +246,45 @@ fun ColorModeButton(
onToggle: () -> Unit,
modifier: Modifier = Modifier
) {
val icon = when (currentColorMode) {
COLOR -> Icons.Default.Palette
GRAYSCALE -> Icons.Default.Contrast
}
val label = when (currentColorMode) {
COLOR -> stringResource(R.string.color_mode_color)
GRAYSCALE -> stringResource(R.string.color_mode_grayscale)
}
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = modifier
) {
var expanded by remember { mutableStateOf(false) }
Box(modifier = modifier) {
SecondaryActionButton(
icon = icon,
contentDescription = label,
onClick = onToggle,
icon = Icons.Default.AutoFixHigh,
contentDescription = stringResource(R.string.color_mode),
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="change_directory">غيّر المجلد</string>
<string name="clear_text">امحُ النص</string>
<string name="color_mode">فلتر</string>
<string name="color_mode_color">ألوان</string>
<string name="color_mode_grayscale">تدرج الرمادي</string>
<string name="contact">تواصل</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Zrušit</string>
<string name="change_directory">Změnit složku</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_grayscale">Odstíny šedi</string>
<string name="contact">Kontakt</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Abbrechen</string>
<string name="change_directory">Ordner ändern</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_grayscale">Graustufen</string>
<string name="contact">Kontakt</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Cancelar</string>
<string name="change_directory">Cambiar carpeta</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_grayscale">Escala de grises</string>
<string name="contact">Contacto</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Annuler</string>
<string name="change_directory">Changer de dossier</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_grayscale">Niveaux de gris</string>
<string name="contact">Contact</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Cancelar</string>
<string name="change_directory">Trocar cartafol</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_grayscale">Escala de grises</string>
<string name="contact">Contacto</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Annulla</string>
<string name="change_directory">Cambia cartella</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_grayscale">Scala di grigi</string>
<string name="contact">Contatti</string>

View File

@@ -8,6 +8,7 @@
<string name="cancel">Cancelar</string>
<string name="change_directory">Alterar diretório</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_grayscale">Escala de cinza</string>
<string name="contact">Contato</string>

View File

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

View File

@@ -8,6 +8,7 @@
<string name="cancel">İptal</string>
<string name="change_directory">Dizini değiştir</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_grayscale">Gri tonlama</string>
<string name="contact">İletişim</string>

View File

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

View File

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

View File

@@ -9,6 +9,7 @@
<string name="cancel">Cancel</string>
<string name="change_directory">Change folder</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_grayscale">Grayscale</string>
<string name="contact">Contact</string>