diff --git a/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/AvatarMoreOptionsPickerPopup.kt b/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/AvatarMoreOptionsPickerPopup.kt index 95181f87a..b6b1e21aa 100644 --- a/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/AvatarMoreOptionsPickerPopup.kt +++ b/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/AvatarMoreOptionsPickerPopup.kt @@ -25,31 +25,48 @@ internal fun AvatarMoreOptionsPickerPopup( onDismissRequest: () -> Unit, onAvatarOptionClicked: (AvatarOption) -> Unit, ) { + val ratingItemLabel = stringResource( + R.string.gravatar_qe_selectable_avatar_more_options_rating_v2, + avatarRating.firstOrNull { it.selected }?.rating?.value.orEmpty(), + ) PickerPopup( anchorAlignment = anchorAlignment, offset = offset, onDismissRequest = onDismissRequest, popupMenu = PickerPopupMenu( items = listOf( + PickerPopupItem( + text = stringResource(R.string.gravatar_qe_selectable_avatar_more_options_download_image), + iconRes = R.drawable.gravatar_avatar_more_options_download, + contentDescription = stringResource( + R.string.gravatar_qe_selectable_avatar_more_options_download_image, + ), + onClick = { + onAvatarOptionClicked(AvatarOption.DownloadImage) + }, + ), PickerPopupItem( text = stringResource(R.string.gravatar_qe_selectable_avatar_more_options_alt_text), iconRes = R.drawable.gravatar_avatar_more_options_alt_text, - contentDescription = + contentDescription = stringResource( R.string.gravatar_qe_selectable_avatar_more_options_alt_text_content_description, + ), onClick = { onAvatarOptionClicked(AvatarOption.AltText) }, ), PickerPopupItem( - text = stringResource(R.string.gravatar_qe_selectable_avatar_more_options_rating), + text = ratingItemLabel, iconRes = R.drawable.gravatar_avatar_more_options_rating, - contentDescription = R.string.gravatar_qe_selectable_avatar_more_options_rating, + contentDescription = ratingItemLabel, subMenu = PickerPopupMenu( items = avatarRating.map { (rating, selected) -> PickerPopupItem( text = stringResource(rating.fullNameRes), iconRes = if (selected) R.drawable.ic_checkmark else null, - contentDescription = R.string.gravatar_qe_avatar_rating_selected_content_description, + contentDescription = stringResource( + R.string.gravatar_qe_avatar_rating_selected_content_description, + ), onClick = { onAvatarOptionClicked(AvatarOption.Rating(rating)) }, @@ -57,18 +74,12 @@ internal fun AvatarMoreOptionsPickerPopup( }, ), ), - PickerPopupItem( - text = stringResource(R.string.gravatar_qe_selectable_avatar_more_options_download_image), - iconRes = R.drawable.gravatar_avatar_more_options_download, - contentDescription = R.string.gravatar_qe_selectable_avatar_more_options_download_image, - onClick = { - onAvatarOptionClicked(AvatarOption.DownloadImage) - }, - ), PickerPopupItem( text = stringResource(R.string.gravatar_qe_selectable_avatar_more_options_delete), iconRes = R.drawable.gravatar_avatar_more_options_delete, - contentDescription = R.string.gravatar_qe_selectable_avatar_more_options_delete_content_description, + contentDescription = stringResource( + R.string.gravatar_qe_selectable_avatar_more_options_delete_content_description, + ), contentColor = MaterialTheme.colorScheme.error, onClick = { onAvatarOptionClicked(AvatarOption.Delete) diff --git a/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/MediaPickerPopup.kt b/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/MediaPickerPopup.kt index 2089663d7..6cba29dec 100644 --- a/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/MediaPickerPopup.kt +++ b/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/MediaPickerPopup.kt @@ -31,13 +31,13 @@ internal fun MediaPickerPopup( PickerPopupItem( text = stringResource(R.string.gravatar_qe_avatar_picker_choose_a_photo), iconRes = R.drawable.gravatar_photo_library, - contentDescription = R.string.gravatar_qe_photo_library_icon_description, + contentDescription = stringResource(R.string.gravatar_qe_photo_library_icon_description), onClick = onChoosePhotoClick, ), PickerPopupItem( text = stringResource(R.string.gravatar_qe_avatar_picker_take_photo), iconRes = R.drawable.gravatar_capture_photo, - contentDescription = R.string.gravatar_qe_capture_photo_icon_description, + contentDescription = stringResource(R.string.gravatar_qe_capture_photo_icon_description), onClick = onTakePhotoClick, ), ), diff --git a/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/PickerPopup.kt b/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/PickerPopup.kt index 6994bbe67..9d97f91c0 100644 --- a/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/PickerPopup.kt +++ b/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/PickerPopup.kt @@ -1,18 +1,24 @@ package com.gravatar.quickeditor.ui.components import androidx.annotation.DrawableRes -import androidx.annotation.StringRes import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.core.MutableTransitionState import androidx.compose.animation.core.Spring import androidx.compose.animation.core.spring import androidx.compose.animation.scaleIn +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.KeyboardArrowRight import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.runtime.Immutable @@ -36,6 +42,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Popup import androidx.compose.ui.window.PopupPositionProvider import androidx.compose.ui.window.PopupProperties +import com.gravatar.quickeditor.R @Composable internal fun PickerPopup( @@ -96,7 +103,7 @@ private fun PickerPopup( PopupButton( text = item.text, iconRes = item.iconRes, - contentDescription = stringResource(item.contentDescription), + contentDescription = item.contentDescription, shape = popupButtonShape(index, popupMenu.items.size, cornerRadius), color = item.contentColor, onClick = { @@ -106,6 +113,27 @@ private fun PickerPopup( item.onClick?.let { it() } } }, + startIcon = if (targetState.items.any { it.subMenu != null }) { + { + Box( + modifier = Modifier + .padding(end = 2.dp) + .width(24.dp), + ) { + if (item.subMenu != null) { + Icon( + imageVector = Icons.AutoMirrored.Filled.KeyboardArrowRight, + contentDescription = stringResource( + R.string.gravatar_qe_picker_submenu_icon_description, + ), + tint = item.contentColor ?: MaterialTheme.colorScheme.onSurface, + ) + } + } + } + } else { + null + }, ) if (index < popupMenu.items.size - 1) { HorizontalDivider() @@ -138,7 +166,7 @@ internal data class PickerPopupMenu( internal data class PickerPopupItem( val text: String, @DrawableRes val iconRes: Int?, - @StringRes val contentDescription: Int, + val contentDescription: String, val onClick: (() -> Unit)? = null, val contentColor: Color? = null, val subMenu: PickerPopupMenu? = null, diff --git a/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/PopupButton.kt b/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/PopupButton.kt index 66074a4c5..e7b4c76b3 100644 --- a/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/PopupButton.kt +++ b/gravatar-quickeditor/src/main/java/com/gravatar/quickeditor/ui/components/PopupButton.kt @@ -32,17 +32,26 @@ internal fun PopupButton( shape: Shape, color: Color? = null, modifier: Modifier = Modifier, + startIcon: @Composable (() -> Unit)? = null, ) { + val contentPadding = if (startIcon != null) { + PaddingValues(top = 12.dp, bottom = 12.dp, start = 6.dp, end = 16.dp) + } else { + PaddingValues(vertical = 12.dp, horizontal = 16.dp) + } TextButton( onClick = onClick, modifier = modifier, shape = shape, - contentPadding = PaddingValues(vertical = 12.dp, horizontal = 16.dp), + contentPadding = contentPadding, ) { Row( horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, ) { + if (startIcon != null) { + startIcon() + } Text( text = text, overflow = TextOverflow.Ellipsis, diff --git a/gravatar-quickeditor/src/main/res/values-ar/strings.xml b/gravatar-quickeditor/src/main/res/values-ar/strings.xml index 3269b83a3..21f5d45a0 100644 --- a/gravatar-quickeditor/src/main/res/values-ar/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-ar/strings.xml @@ -25,7 +25,6 @@ Language: ar G (عام) إغلاق الإنذار لم يتم تحديد صورة. يرجى تحديد صورة أو سيتم استخدام الصورة الافتراضية. - تغيير التقييم لحفظ الصورة في مجلد عام، يتعين عليك منح الصلاحية. يمكنك منحها ضمن إعدادات التطبيق. تم تعطيل DownloadManager. يرجى تمكينها لتنزيل الصور الرمزية. DownloadManager غير متوفر diff --git a/gravatar-quickeditor/src/main/res/values-de/strings.xml b/gravatar-quickeditor/src/main/res/values-de/strings.xml index c7164e013..4c350f0b6 100644 --- a/gravatar-quickeditor/src/main/res/values-de/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-de/strings.xml @@ -25,7 +25,6 @@ Language: de G (Für alle) Hinweis schließen Kein Bild ausgewählt. Bitte wähle eines aus, andernfalls wird das Standardbild verwendet. - Bewertung ändern Zum Speichern des Bilds in einem öffentlichen Ordner musst du die entsprechende Berechtigung erteilen. Die Berechtigung kannst du in den App-Einstellungen erteilen. Der Download Manager ist deaktiviert. Aktiviere die Funktion, um Avatare herunterladen zu können. Der Download Manager ist nicht verfügbar diff --git a/gravatar-quickeditor/src/main/res/values-es/strings.xml b/gravatar-quickeditor/src/main/res/values-es/strings.xml index 8cf771f4b..9716c6095 100644 --- a/gravatar-quickeditor/src/main/res/values-es/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-es/strings.xml @@ -25,7 +25,6 @@ Language: es G (General) Cerrar alerta No se ha seleccionado ninguna imagen. Elige una o se utilizará la imagen por defecto. - Cambiar calificación Para guardar la imagen en una carpeta pública, tienes que otorgar el permiso para ello. Puedes hacerlo en los ajustes de la aplicación. DownloadManager se ha inhabilitado. Habilítalo para descargar avatares. DownloadManager no está disponible. diff --git a/gravatar-quickeditor/src/main/res/values-fr/strings.xml b/gravatar-quickeditor/src/main/res/values-fr/strings.xml index ec0bc4c50..7fc1e456c 100644 --- a/gravatar-quickeditor/src/main/res/values-fr/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-fr/strings.xml @@ -25,7 +25,6 @@ Language: fr G (tous publics) Fermer l’alerte Aucune image sélectionnée. Veuillez en sélectionner une, faute de quoi l’image par défaut sera utilisée. - Modifier la classification Pour enregistrer l\'image dans un dossier, vous devez en accorder l\'autorisation dans les paramètres de l\'application. DownloadManager est désactivé. Veuillez l\'activer pour pouvoir télécharger les avatars. DownloadManager n\'est pas disponible diff --git a/gravatar-quickeditor/src/main/res/values-in/strings.xml b/gravatar-quickeditor/src/main/res/values-in/strings.xml index d948c2f9a..c2b103e7e 100644 --- a/gravatar-quickeditor/src/main/res/values-in/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-in/strings.xml @@ -25,7 +25,6 @@ Language: id G (Umum) Tutup peringatan Tidak ada gambar dipilih. Harap pilih satu gambar atau gambar default akan digunakan. - Ubah rating Untuk menyimpan gambar di folder publik, Anda perlu memberikan izin. Anda dapat memberikan izin di pengaturan aplikasi. DownloadManager dinonaktifkan. Aktifkan untuk mengunduh Avatar. DownloadManager tidak tersedia diff --git a/gravatar-quickeditor/src/main/res/values-it/strings.xml b/gravatar-quickeditor/src/main/res/values-it/strings.xml index d1e13239d..5d2f249ef 100644 --- a/gravatar-quickeditor/src/main/res/values-it/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-it/strings.xml @@ -25,7 +25,6 @@ Language: it G (generale) Chiudi avviso Nessuna immagine selezionata. Seleziona un\'immagine, altrimenti verrà usata quella predefinita. - Modifica la valutazione Per salvare l\'immagine in una cartella pubblica devi concedere l\'autorizzazione. Puoi concederla nelle impostazioni dell\'app. DownloadManager è disabilitato. Abilitalo per scaricare gli avatar. DownloadManager non è disponibile diff --git a/gravatar-quickeditor/src/main/res/values-iw/strings.xml b/gravatar-quickeditor/src/main/res/values-iw/strings.xml index c5993addd..c2aa4c06e 100644 --- a/gravatar-quickeditor/src/main/res/values-iw/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-iw/strings.xml @@ -25,7 +25,6 @@ Language: he_IL G (כללי) לסגור התראה לא נבחרה תמונה. יש לבחור לפחות תמונה אחת, אחרת נשתמש בברירת המחדל. - לשנות דירוג כדי לשמור את התמונה בתיקייה ציבורית, עליך להעניק הרשאה. אפשר להעניק את ההרשאות בהגדרות האפליקציה. האפשרות DownloadManager מושבתת. יש להפעיל אותה כדי להוריד צלמיות משתמשים. האפשרות DownloadManager לא זמינה diff --git a/gravatar-quickeditor/src/main/res/values-ja/strings.xml b/gravatar-quickeditor/src/main/res/values-ja/strings.xml index 7fb8b8dd6..edd03b712 100644 --- a/gravatar-quickeditor/src/main/res/values-ja/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-ja/strings.xml @@ -25,7 +25,6 @@ Language: ja_JP G (一般) アラートを閉じる 画像が選択されていません。 いずれかを選択してください。選択しない場合はデフォルトが使用されます。 - 評価を変更 パブリックフォルダーに画像を保存するには、パーミッションを付与する必要があります。 アプリの設定でパーミッションを付与できます。 DownloadManager は無効です。 アバターをダウンロードするには、有効にしてください。 DownloadManager は利用できません。 diff --git a/gravatar-quickeditor/src/main/res/values-ko/strings.xml b/gravatar-quickeditor/src/main/res/values-ko/strings.xml index 62e4b2d6b..4bddc5876 100644 --- a/gravatar-quickeditor/src/main/res/values-ko/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-ko/strings.xml @@ -25,7 +25,6 @@ Language: ko_KR G(전체) 알림 닫기 선택된 이미지가 없습니다. 이미지를 선택하지 않으면 기본 이미지가 사용됩니다. - 등급 변경 이미지를 공개 폴더에 저장하려면 권한을 부여해야 합니다. 권한은 앱 설정에서 부여할 수 있습니다. DownloadManager가 비활성화되어 있습니다. 아바타를 다운로드하려면 활성화하세요. DownloadManager를 사용할 수 없습니다. diff --git a/gravatar-quickeditor/src/main/res/values-nl/strings.xml b/gravatar-quickeditor/src/main/res/values-nl/strings.xml index 264592e7a..bffa6339d 100644 --- a/gravatar-quickeditor/src/main/res/values-nl/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-nl/strings.xml @@ -25,7 +25,6 @@ Language: nl G (algemeen) Waarschuwing Geen afbeelding geselecteerd. Selecteer een afbeelding, anders wordt de standaardafbeelding gebruikt. - Beoordeling wijzigen Om een afbeelding in een openbare map op te slaan, moet je toestemming geven. Je kan toestemming geven in de instellingen van de app. DownloadManager is uitgeschakeld. Schakel deze in om avatars te downloaden. DownloadManager is niet beschikbaar diff --git a/gravatar-quickeditor/src/main/res/values-pt-rBR/strings.xml b/gravatar-quickeditor/src/main/res/values-pt-rBR/strings.xml index 311029e47..1a74e41b0 100644 --- a/gravatar-quickeditor/src/main/res/values-pt-rBR/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-pt-rBR/strings.xml @@ -25,7 +25,6 @@ Language: pt_BR G (geral) Fechar alerta Nenhuma imagem selecionada. Selecione uma ou a padrão será utilizada. - Mudar classificação Para salvar a imagem em uma pasta pública, você precisa conceder permissão. Você pode fazer isso nas configurações do app. O DownloadManager está desativado. Ative-o para fazer download de avatares. O DownloadManager não está disponível diff --git a/gravatar-quickeditor/src/main/res/values-ru/strings.xml b/gravatar-quickeditor/src/main/res/values-ru/strings.xml index ac11683bd..2035d3dff 100644 --- a/gravatar-quickeditor/src/main/res/values-ru/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-ru/strings.xml @@ -25,7 +25,6 @@ Language: ru G (общедоступный) Закрыть предупреждение Изображение не выбрано. Выберите изображение, если не хотите использовать изображение по умолчанию. - Изменить оценку Чтобы сохранить изображение в общедоступной папке, требуется разрешение. Вы можете дать разрешение в настройках приложения. DownloadManager отключён. Включите его, чтобы загружать аватары. DownloadManager недоступен diff --git a/gravatar-quickeditor/src/main/res/values-sv/strings.xml b/gravatar-quickeditor/src/main/res/values-sv/strings.xml index b6bc2131e..bc1f3d27e 100644 --- a/gravatar-quickeditor/src/main/res/values-sv/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-sv/strings.xml @@ -25,7 +25,6 @@ Language: sv_SE G (Allmänt) Stäng varning Ingen bild vald. Välj en eller så kommer standard att användas. - Ändra klassificering För att spara bilden i en offentlig mapp måste du bevilja behörighet. Du kan bevilja detta i appinställningarna. DownloadManager är inaktiverad. Aktivera den för att ladda ner profilbilder. DownloadManager är inte tillgänglig. diff --git a/gravatar-quickeditor/src/main/res/values-tr/strings.xml b/gravatar-quickeditor/src/main/res/values-tr/strings.xml index 8bc2c60d0..842aae17c 100644 --- a/gravatar-quickeditor/src/main/res/values-tr/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-tr/strings.xml @@ -25,7 +25,6 @@ Language: tr G (Genel) Uyarıyı kapatın Görsel seçilmedi. Lütfen bir görsel seçin, aksi halde varsayılan görsel kullanılır. - Derecelendirmeyi değiştir Görseli herkese açık klasörde kaydetmek için izin vermeniz gerekir. Uygulama ayarlarından izin verebilirsiniz. İndirme Yöneticisi devre dışı bırakıldı. Avatarları indirmek için lütfen bunu etkinleştirin. İndirme Yöneticisi kullanılamıyor. diff --git a/gravatar-quickeditor/src/main/res/values-zh-rCN/strings.xml b/gravatar-quickeditor/src/main/res/values-zh-rCN/strings.xml index 4a8054100..3afc9df19 100644 --- a/gravatar-quickeditor/src/main/res/values-zh-rCN/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-zh-rCN/strings.xml @@ -25,7 +25,6 @@ Language: zh_CN G(大众级) 关闭警告 未选择图片。 请选择一张图片,否则系统将使用默认图片。 - 更改评级 要将图片保存到公共文件夹中,您需要授予权限。 您可以在应用程序设置中授予该权限。 DownloadManager 已禁用。 请将其启用以下载头像。 DownloadManager 不可用 diff --git a/gravatar-quickeditor/src/main/res/values-zh-rTW/strings.xml b/gravatar-quickeditor/src/main/res/values-zh-rTW/strings.xml index 3300abfec..6312a74ed 100644 --- a/gravatar-quickeditor/src/main/res/values-zh-rTW/strings.xml +++ b/gravatar-quickeditor/src/main/res/values-zh-rTW/strings.xml @@ -25,7 +25,6 @@ Language: zh_TW G (普遍級) 關閉警示 未選取圖片。 請選取圖片,不然系統就會使用預設圖片。 - 變更分級 若要在公開資料夾儲存圖片,請授予權限。 你可以在應用程式設定中授予權限。 DownloadManager 已停用。 請啟用以下載大頭貼。 無法使用 DownloadManager diff --git a/gravatar-quickeditor/src/main/res/values/strings.xml b/gravatar-quickeditor/src/main/res/values/strings.xml index 5a10d0046..9437f0155 100644 --- a/gravatar-quickeditor/src/main/res/values/strings.xml +++ b/gravatar-quickeditor/src/main/res/values/strings.xml @@ -5,7 +5,8 @@ More Options Alt Text Alternative Text - Change rating + + Rating: %s Delete Delete Avatar Download image @@ -73,4 +74,5 @@ Write alt text… Save Cancel + Expand \ No newline at end of file