From 6d03cf6a6a57b9ab58297335973cbdeac3f17c84 Mon Sep 17 00:00:00 2001 From: codokie <151087174+codokie@users.noreply.github.com> Date: Fri, 11 Apr 2025 20:36:10 +0000 Subject: [PATCH] Automirrored icons fix (#3499) * Fix arrow direction in RTL * Fix help icon when locale is Hebrew * Fix help icon in other RTL locales --- .../tasks/activities/FilterSettingsActivity.kt | 18 ++++++++++++++++-- .../tasks/compose/pickers/CustomRecurrence.kt | 4 ++-- .../ic_outline_help_outline_24px.xml | 5 +++++ .../ic_outline_help_outline_24px.xml | 5 +++++ .../org/tasks/compose/drawer/TaskListDrawer.kt | 10 ++++++++++ 5 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable-iw/ic_outline_help_outline_24px.xml create mode 100644 app/src/main/res/drawable-ldrtl/ic_outline_help_outline_24px.xml diff --git a/app/src/main/java/org/tasks/activities/FilterSettingsActivity.kt b/app/src/main/java/org/tasks/activities/FilterSettingsActivity.kt index c40c1fd87..81b0305ae 100644 --- a/app/src/main/java/org/tasks/activities/FilterSettingsActivity.kt +++ b/app/src/main/java/org/tasks/activities/FilterSettingsActivity.kt @@ -6,7 +6,7 @@ import android.os.Bundle import androidx.activity.compose.setContent import androidx.activity.viewModels import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Help +import androidx.compose.material.icons.automirrored.outlined.Help import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.runtime.Composable @@ -14,6 +14,8 @@ import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.scale import androidx.compose.ui.res.stringResource import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.lifecycleScope @@ -47,6 +49,7 @@ import org.tasks.filters.FilterCriteriaProvider import org.tasks.filters.mapToSerializedString import org.tasks.themes.TasksIcons import org.tasks.themes.TasksTheme +import java.util.Locale import javax.inject.Inject @AndroidEntryPoint @@ -170,7 +173,18 @@ class FilterSettingsActivity : BaseListSettingsActivity() { optionButton = { if (isNew) { IconButton(onClick = { help() }) { - Icon(imageVector = Icons.Outlined.Help, contentDescription = "") + // Cancel the mirroring of the help icon when the locale is Hebrew. + val modifier = + if (Locale.getDefault().language == Locale.forLanguageTag("he").language) { + Modifier.scale(scaleX = -1f, scaleY = 1f) + } else { + Modifier + } + Icon( + imageVector = Icons.AutoMirrored.Outlined.Help, + contentDescription = "", + modifier = modifier, + ) } } else DeleteButton(filter?.title ?: ""){ delete() } }, diff --git a/app/src/main/java/org/tasks/compose/pickers/CustomRecurrence.kt b/app/src/main/java/org/tasks/compose/pickers/CustomRecurrence.kt index 572677cfc..e6475aef9 100644 --- a/app/src/main/java/org/tasks/compose/pickers/CustomRecurrence.kt +++ b/app/src/main/java/org/tasks/compose/pickers/CustomRecurrence.kt @@ -21,7 +21,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.ArrowBack +import androidx.compose.material.icons.automirrored.outlined.ArrowBack import androidx.compose.material3.DisplayMode import androidx.compose.material3.Divider import androidx.compose.material3.ExperimentalMaterial3Api @@ -100,7 +100,7 @@ fun CustomRecurrence( navigationIcon = { IconButton(onClick = save) { Icon( - imageVector = Icons.Outlined.ArrowBack, + imageVector = Icons.AutoMirrored.Outlined.ArrowBack, contentDescription = stringResource(id = R.string.save), tint = MaterialTheme.colorScheme.onSurface, ) diff --git a/app/src/main/res/drawable-iw/ic_outline_help_outline_24px.xml b/app/src/main/res/drawable-iw/ic_outline_help_outline_24px.xml new file mode 100644 index 000000000..df79128cd --- /dev/null +++ b/app/src/main/res/drawable-iw/ic_outline_help_outline_24px.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable-ldrtl/ic_outline_help_outline_24px.xml b/app/src/main/res/drawable-ldrtl/ic_outline_help_outline_24px.xml new file mode 100644 index 000000000..d6cc0443c --- /dev/null +++ b/app/src/main/res/drawable-ldrtl/ic_outline_help_outline_24px.xml @@ -0,0 +1,5 @@ + + + diff --git a/kmp/src/commonMain/kotlin/org/tasks/compose/drawer/TaskListDrawer.kt b/kmp/src/commonMain/kotlin/org/tasks/compose/drawer/TaskListDrawer.kt index 5291ede70..1934faf4b 100644 --- a/kmp/src/commonMain/kotlin/org/tasks/compose/drawer/TaskListDrawer.kt +++ b/kmp/src/commonMain/kotlin/org/tasks/compose/drawer/TaskListDrawer.kt @@ -48,6 +48,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.scale import androidx.compose.ui.focus.onFocusChanged import androidx.compose.ui.graphics.Color import androidx.compose.ui.input.nestedscroll.nestedScroll @@ -67,6 +68,7 @@ import tasks.kmp.generated.resources.Res import tasks.kmp.generated.resources.help_and_feedback import tasks.kmp.generated.resources.search import tasks.kmp.generated.resources.subscribe +import java.util.Locale import kotlin.math.roundToInt @Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE") @@ -314,10 +316,18 @@ fun RowScope.MenuSearchBar( } } IconButton(onClick = { onDrawerAction(DrawerAction.HELP_AND_FEEDBACK) }) { + // Cancel the mirroring of the help icon when the locale is Hebrew. + val modifier = + if (Locale.getDefault().language == Locale.forLanguageTag("he").language) { + Modifier.scale(scaleX = -1f, scaleY = 1f) + } else { + Modifier + } Icon( imageVector = Icons.AutoMirrored.Outlined.HelpOutline, contentDescription = stringResource(Res.string.help_and_feedback), tint = MaterialTheme.colorScheme.onSurface, + modifier = modifier, ) } }