Browse Source

Clean up strings and resources (#8253)

* Clean up strings and resources

* fix pringle's typo

* restore catching file pick errors

* add back file chooser title

* revert #7740 and remove try-catch of chooser-wrapped intent

* swap xmlns lines

* swap xml tools lines
stevenyomi 2 years ago
parent
commit
824d5e22bc
35 changed files with 100 additions and 235 deletions
  1. 1 1
      app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt
  2. 5 3
      app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt
  3. 34 9
      app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBackupScreen.kt
  4. 3 3
      app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt
  5. 23 0
      app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt
  6. 0 1
      app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt
  7. 1 1
      app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt
  8. 5 4
      app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaFullCoverDialog.kt
  9. 0 5
      app/src/main/res/color-night-v31/text_primary_monet.xml
  10. 0 5
      app/src/main/res/color-night-v31/text_secondary_monet.xml
  11. 0 5
      app/src/main/res/color-v31/text_primary_monet.xml
  12. 0 5
      app/src/main/res/color-v31/text_secondary_monet.xml
  13. 0 5
      app/src/main/res/color/button_action_selector.xml
  14. 0 5
      app/src/main/res/color/library_item_foreground.xml
  15. 3 1
      app/src/main/res/drawable-v26/sc_collections_bookmark_48dp.xml
  16. 3 1
      app/src/main/res/drawable-v26/sc_explore_48dp.xml
  17. 3 1
      app/src/main/res/drawable-v26/sc_history_48dp.xml
  18. 3 1
      app/src/main/res/drawable-v26/sc_new_releases_48dp.xml
  19. 0 13
      app/src/main/res/drawable/card_gradient_shape.xml
  20. 0 9
      app/src/main/res/drawable/ic_filter_list_24dp.xml
  21. 0 9
      app/src/main/res/drawable/ic_help_24dp.xml
  22. 0 9
      app/src/main/res/drawable/ic_status_completed_24dp.xml
  23. 0 9
      app/src/main/res/drawable/ic_status_licensed_24dp.xml
  24. 0 9
      app/src/main/res/drawable/ic_status_ongoing_24dp.xml
  25. 0 9
      app/src/main/res/drawable/ic_status_unknown_24dp.xml
  26. 0 10
      app/src/main/res/drawable/library_item_selector_overlay.xml
  27. 0 19
      app/src/main/res/drawable/list_item_selector_background.xml
  28. 2 0
      app/src/main/res/drawable/sc_collections_bookmark_48dp.xml
  29. 2 0
      app/src/main/res/drawable/sc_explore_48dp.xml
  30. 2 0
      app/src/main/res/drawable/sc_history_48dp.xml
  31. 2 0
      app/src/main/res/drawable/sc_new_releases_48dp.xml
  32. 0 19
      app/src/main/res/layout/dialog_stub_textinput.xml
  33. 0 5
      app/src/main/res/layout/pager_controller.xml
  34. 0 44
      app/src/main/res/menu/download_queue.xml
  35. 8 15
      i18n/src/main/res/values/strings.xml

+ 1 - 1
app/src/main/java/eu/kanade/presentation/browse/MigrateSourceScreen.kt

@@ -102,7 +102,7 @@ private fun MigrateSourceList(
                 IconButton(onClick = onToggleSortingMode) {
                     when (sortingMode) {
                         SetMigrateSorting.Mode.ALPHABETICAL -> Icon(Icons.Outlined.SortByAlpha, contentDescription = stringResource(R.string.action_sort_alpha))
-                        SetMigrateSorting.Mode.TOTAL -> Icon(Icons.Outlined.Numbers, contentDescription = stringResource(R.string.action_sort_total))
+                        SetMigrateSorting.Mode.TOTAL -> Icon(Icons.Outlined.Numbers, contentDescription = stringResource(R.string.action_sort_count))
                     }
                 }
                 IconButton(onClick = onToggleSortingDirection) {

+ 5 - 3
app/src/main/java/eu/kanade/presentation/manga/components/MangaInfoHeader.kt

@@ -292,11 +292,12 @@ private fun MangaAndSourceTitlesLarge(
         MangaCover.Book(
             modifier = Modifier.fillMaxWidth(0.65f),
             data = coverDataProvider(),
+            contentDescription = stringResource(R.string.manga_cover),
             onClick = onCoverClick,
         )
         Spacer(modifier = Modifier.height(16.dp))
         Text(
-            text = title.takeIf { it.isNotBlank() } ?: stringResource(R.string.unknown),
+            text = title.ifBlank { stringResource(R.string.unknown_title) },
             style = MaterialTheme.typography.titleLarge,
             modifier = Modifier.clickableNoIndication(
                 onLongClick = { if (title.isNotBlank()) context.copyToClipboard(title, title) },
@@ -419,11 +420,12 @@ private fun MangaAndSourceTitlesSmall(
                 .sizeIn(maxWidth = 100.dp)
                 .align(Alignment.Top),
             data = coverDataProvider(),
+            contentDescription = stringResource(R.string.manga_cover),
             onClick = onCoverClick,
         )
         Column(modifier = Modifier.padding(start = 16.dp)) {
             Text(
-                text = title.ifBlank { stringResource(R.string.unknown) },
+                text = title.ifBlank { stringResource(R.string.unknown_title) },
                 style = MaterialTheme.typography.titleLarge,
                 modifier = Modifier.clickableNoIndication(
                     onLongClick = {
@@ -583,7 +585,7 @@ private fun MangaSummary(
                 val image = AnimatedImageVector.animatedVectorResource(R.drawable.anim_caret_down)
                 Icon(
                     painter = rememberAnimatedVectorPainter(image, !expanded),
-                    contentDescription = null,
+                    contentDescription = stringResource(if (expanded) R.string.manga_info_collapse else R.string.manga_info_expand),
                     tint = MaterialTheme.colorScheme.onBackground,
                     modifier = Modifier.background(Brush.radialGradient(colors = colors.asReversed())),
                 )

+ 34 - 9
app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsBackupScreen.kt

@@ -1,6 +1,8 @@
 package eu.kanade.presentation.more.settings.screen
 
 import android.Manifest
+import android.content.ActivityNotFoundException
+import android.content.Context
 import android.content.Intent
 import android.net.Uri
 import android.widget.Toast
@@ -111,7 +113,12 @@ class SettingsBackupScreen : SearchableSettings {
                 onConfirm = {
                     showCreateDialog = false
                     flag = it
-                    chooseBackupDir.launch(Backup.getBackupFilename())
+                    try {
+                        chooseBackupDir.launch(Backup.getBackupFilename())
+                    } catch (e: ActivityNotFoundException) {
+                        flag = 0
+                        context.toast(R.string.file_picker_error)
+                    }
                 },
                 onDismissRequest = { showCreateDialog = false },
             )
@@ -260,12 +267,16 @@ class SettingsBackupScreen : SearchableSettings {
                         onDismissRequest = onDismissRequest,
                         title = { Text(text = stringResource(R.string.pref_restore_backup)) },
                         text = {
-                            var msg = stringResource(R.string.backup_restore_content_full)
-                            if (err.sources.isNotEmpty()) {
-                                msg += "\n\n${stringResource(R.string.backup_restore_missing_sources)}\n${err.sources.joinToString("\n") { "- $it" }}"
-                            }
-                            if (err.sources.isNotEmpty()) {
-                                msg += "\n\n${stringResource(R.string.backup_restore_missing_trackers)}\n${err.trackers.joinToString("\n") { "- $it" }}"
+                            val msg = buildString {
+                                append(stringResource(R.string.backup_restore_content_full))
+                                if (err.sources.isNotEmpty()) {
+                                    append("\n\n").append(stringResource(R.string.backup_restore_missing_sources))
+                                    err.sources.joinTo(this, separator = "\n- ", prefix = "\n- ")
+                                }
+                                if (err.trackers.isNotEmpty()) {
+                                    append("\n\n").append(stringResource(R.string.backup_restore_missing_trackers))
+                                    err.trackers.joinTo(this, separator = "\n- ", prefix = "\n- ")
+                                }
                             }
                             Text(text = msg)
                         },
@@ -285,7 +296,14 @@ class SettingsBackupScreen : SearchableSettings {
             }
         }
 
-        val chooseBackup = rememberLauncherForActivityResult(ActivityResultContracts.GetContent()) {
+        val chooseBackup = rememberLauncherForActivityResult(
+            object : ActivityResultContracts.GetContent() {
+                override fun createIntent(context: Context, input: String): Intent {
+                    val intent = super.createIntent(context, input)
+                    return Intent.createChooser(intent, context.getString(R.string.file_select_backup))
+                }
+            },
+        ) {
             if (it != null) {
                 val results = try {
                     BackupFileValidator().validate(context, it)
@@ -311,6 +329,7 @@ class SettingsBackupScreen : SearchableSettings {
                     if (DeviceUtil.isMiui && DeviceUtil.isMiuiOptimizationDisabled()) {
                         context.toast(R.string.restore_miui_warning, Toast.LENGTH_LONG)
                     }
+                    // no need to catch because it's wrapped with a chooser
                     chooseBackup.launch("*/*")
                 } else {
                     context.toast(R.string.restore_in_progress)
@@ -363,7 +382,13 @@ class SettingsBackupScreen : SearchableSettings {
                     subtitle = remember(backupDir) {
                         UniFile.fromUri(context, backupDir.toUri()).filePath!! + "/automatic"
                     },
-                    onClick = { pickBackupLocation.launch(null) },
+                    onClick = {
+                        try {
+                            pickBackupLocation.launch(null)
+                        } catch (e: ActivityNotFoundException) {
+                            context.toast(R.string.file_picker_error)
+                        }
+                    },
                 ),
                 Preference.PreferenceItem.ListPreference(
                     pref = backupPreferences.numberOfBackups(),

+ 3 - 3
app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsDownloadScreen.kt

@@ -65,7 +65,7 @@ class SettingsDownloadScreen : SearchableSettings {
                 downloadPreferences = downloadPreferences,
                 categories = allCategories,
             ),
-            getDownloadNewChaptersGroup(
+            getAutoDownloadGroup(
                 downloadPreferences = downloadPreferences,
                 allCategories = allCategories,
             ),
@@ -196,7 +196,7 @@ class SettingsDownloadScreen : SearchableSettings {
     }
 
     @Composable
-    private fun getDownloadNewChaptersGroup(
+    private fun getAutoDownloadGroup(
         downloadPreferences: DownloadPreferences,
         allCategories: List<Category>,
     ): Preference.PreferenceGroup {
@@ -227,7 +227,7 @@ class SettingsDownloadScreen : SearchableSettings {
         }
 
         return Preference.PreferenceGroup(
-            title = stringResource(R.string.pref_download_new),
+            title = stringResource(R.string.pref_category_auto_download),
             preferenceItems = listOf(
                 Preference.PreferenceItem.SwitchPreference(
                     pref = downloadNewChaptersPref,

+ 23 - 0
app/src/main/java/eu/kanade/presentation/more/settings/screen/SettingsReaderScreen.kt

@@ -67,6 +67,7 @@ class SettingsReaderScreen : SearchableSettings {
                 title = stringResource(R.string.pref_page_transitions),
             ),
             getDisplayGroup(readerPreferences = readerPref),
+            getReadingGroup(readerPreferences = readerPref),
             getPagedGroup(readerPreferences = readerPref),
             getWebtoonGroup(readerPreferences = readerPref),
             getNavigationGroup(readerPreferences = readerPref),
@@ -120,6 +121,27 @@ class SettingsReaderScreen : SearchableSettings {
         )
     }
 
+    @Composable
+    private fun getReadingGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup {
+        return Preference.PreferenceGroup(
+            title = stringResource(R.string.pref_category_reading),
+            preferenceItems = listOf(
+                Preference.PreferenceItem.SwitchPreference(
+                    pref = readerPreferences.skipRead(),
+                    title = stringResource(R.string.pref_skip_read_chapters),
+                ),
+                Preference.PreferenceItem.SwitchPreference(
+                    pref = readerPreferences.skipFiltered(),
+                    title = stringResource(R.string.pref_skip_filtered_chapters),
+                ),
+                Preference.PreferenceItem.SwitchPreference(
+                    pref = readerPreferences.alwaysShowChapterTransition(),
+                    title = stringResource(R.string.pref_always_show_chapter_transition),
+                ),
+            ),
+        )
+    }
+
     @Composable
     private fun getPagedGroup(readerPreferences: ReaderPreferences): Preference.PreferenceGroup {
         val navModePref = readerPreferences.navigationModePager()
@@ -308,6 +330,7 @@ class SettingsReaderScreen : SearchableSettings {
                 Preference.PreferenceItem.SwitchPreference(
                     pref = readerPreferences.folderPerManga(),
                     title = stringResource(R.string.pref_create_folder_per_manga),
+                    subtitle = stringResource(R.string.pref_create_folder_per_manga_summary),
                 ),
             ),
         )

+ 0 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt

@@ -70,7 +70,6 @@ import kotlin.math.roundToInt
 
 /**
  * Controller that shows the currently active downloads.
- * Uses R.layout.fragment_download_queue.
  */
 class DownloadController :
     FullComposeController<DownloadPresenter>(),

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt

@@ -56,7 +56,7 @@ class LibraryController(
             onClickFilter = ::showSettingsSheet,
             onClickRefresh = {
                 val started = LibraryUpdateService.start(context, it)
-                context.toast(if (started) R.string.updating_library else R.string.update_already_running)
+                context.toast(if (started) R.string.updating_category else R.string.update_already_running)
                 started
             },
             onClickInvertSelection = { presenter.invertSelection(presenter.activeCategory) },

+ 5 - 4
app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaFullCoverDialog.kt

@@ -6,8 +6,6 @@ import android.content.Intent
 import android.graphics.drawable.BitmapDrawable
 import android.net.Uri
 import android.os.Bundle
-import androidx.activity.result.PickVisualMediaRequest
-import androidx.activity.result.contract.ActivityResultContracts.PickVisualMedia
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.collectAsState
 import androidx.compose.runtime.remember
@@ -88,7 +86,7 @@ class MangaFullCoverDialog : FullComposeController<MangaFullCoverDialog.MangaFul
             } catch (e: Throwable) {
                 withUIContext {
                     logcat(LogPriority.ERROR, e)
-                    activity.toast(R.string.error_saving_cover)
+                    activity.toast(R.string.error_sharing_cover)
                 }
             }
         }
@@ -114,8 +112,11 @@ class MangaFullCoverDialog : FullComposeController<MangaFullCoverDialog.MangaFul
     private fun changeCover(action: EditCoverAction) {
         when (action) {
             EditCoverAction.EDIT -> {
+                // This will open new Photo Picker eventually.
+                // See https://github.com/tachiyomiorg/tachiyomi/pull/8253#issuecomment-1285747310
+                val intent = Intent(Intent.ACTION_GET_CONTENT).apply { type = "image/*" }
                 startActivityForResult(
-                    PickVisualMedia().createIntent(activity!!, PickVisualMediaRequest(PickVisualMedia.ImageOnly)),
+                    Intent.createChooser(intent, resources?.getString(R.string.file_select_cover)),
                     REQUEST_IMAGE_OPEN,
                 )
             }

+ 0 - 5
app/src/main/res/color-night-v31/text_primary_monet.xml

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="@android:color/system_neutral1_500" android:state_enabled="false" />
-    <item android:color="@android:color/system_neutral1_50" />
-</selector>

+ 0 - 5
app/src/main/res/color-night-v31/text_secondary_monet.xml

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:alpha="?android:attr/disabledAlpha" android:color="@android:color/system_neutral2_200" android:state_enabled="false" />
-    <item android:color="@android:color/system_neutral2_200" />
-</selector>

+ 0 - 5
app/src/main/res/color-v31/text_primary_monet.xml

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:color="@android:color/system_neutral1_400" android:state_enabled="false" />
-    <item android:color="@android:color/system_neutral1_900" />
-</selector>

+ 0 - 5
app/src/main/res/color-v31/text_secondary_monet.xml

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:alpha="?android:attr/disabledAlpha" android:color="@android:color/system_neutral2_700" android:state_enabled="false" />
-    <item android:color="@android:color/system_neutral2_700" />
-</selector>

+ 0 - 5
app/src/main/res/color/button_action_selector.xml

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:alpha="1.00" android:color="?attr/colorPrimary" android:state_activated="true" />
-    <item android:alpha="0.38" android:color="?attr/colorOnSurface" android:state_activated="false" />
-</selector>

+ 0 - 5
app/src/main/res/color/library_item_foreground.xml

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_selected="true" android:alpha="0.2" android:color="?attr/colorPrimary" />
-    <item android:state_activated="true" android:alpha="0.2" android:color="?attr/colorPrimary" />
-</selector>

+ 3 - 1
app/src/main/res/drawable-v26/sc_collections_bookmark_48dp.xml

@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:keep="@drawable/sc_collections_bookmark_48dp">
 <background android:drawable="@color/accent_blue"/>
 <foreground>
     <vector

+ 3 - 1
app/src/main/res/drawable-v26/sc_explore_48dp.xml

@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:keep="@drawable/sc_explore_48dp">
 <background android:drawable="@color/accent_blue"/>
 <foreground>
     <vector

+ 3 - 1
app/src/main/res/drawable-v26/sc_history_48dp.xml

@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:keep="@drawable/sc_history_48dp">
 <background android:drawable="@color/accent_blue"/>
 <foreground>
     <vector

+ 3 - 1
app/src/main/res/drawable-v26/sc_new_releases_48dp.xml

@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
-<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:keep="@drawable/sc_new_releases_48dp">
 <background android:drawable="@color/accent_blue"/>
 <foreground>
     <vector

+ 0 - 13
app/src/main/res/drawable/card_gradient_shape.xml

@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle">
-
-    <gradient
-        android:angle="90"
-        android:centerColor="#00000000"
-        android:centerY="0.3"
-        android:endColor="#00ffffff"
-        android:startColor="#aa000000" />
-
-    <corners android:radius="@dimen/card_radius" />
-</shape>

+ 0 - 9
app/src/main/res/drawable/ic_filter_list_24dp.xml

@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-    <path
-        android:fillColor="@android:color/black"
-        android:pathData="M10,18h4v-2h-4v2zM3,6v2h18L21,6L3,6zM6,13h12v-2L6,11v2z" />
-</vector>

+ 0 - 9
app/src/main/res/drawable/ic_help_24dp.xml

@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-    <path
-        android:fillColor="@android:color/black"
-        android:pathData="M11,18h2v-2h-2v2zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8zM12,6c-2.21,0 -4,1.79 -4,4h2c0,-1.1 0.9,-2 2,-2s2,0.9 2,2c0,2 -3,1.75 -3,5h2c0,-2.25 3,-2.5 3,-5 0,-2.21 -1.79,-4 -4,-4z" />
-</vector>

+ 0 - 9
app/src/main/res/drawable/ic_status_completed_24dp.xml

@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M18,7l-1.41,-1.41 -6.34,6.34 1.41,1.41L18,7zM22.24,5.59L11.66,16.17 7.48,12l-1.41,1.41L11.66,19l12,-12 -1.42,-1.41zM0.41,13.41L6,19l1.41,-1.41L1.83,12 0.41,13.41z" />
-</vector>

+ 0 - 9
app/src/main/res/drawable/ic_status_licensed_24dp.xml

@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M11.8,10.9c-2.27,-0.59 -3,-1.2 -3,-2.15 0,-1.09 1.01,-1.85 2.7,-1.85 1.78,0 2.44,0.85 2.5,2.1h2.21c-0.07,-1.72 -1.12,-3.3 -3.21,-3.81V3h-3v2.16c-1.94,0.42 -3.5,1.68 -3.5,3.61 0,2.31 1.91,3.46 4.7,4.13 2.5,0.6 3,1.48 3,2.41 0,0.69 -0.49,1.79 -2.7,1.79 -2.06,0 -2.87,-0.92 -2.98,-2.1h-2.2c0.12,2.19 1.76,3.42 3.68,3.83V21h3v-2.15c1.95,-0.37 3.5,-1.5 3.5,-3.55 0,-2.84 -2.43,-3.81 -4.7,-4.4z" />
-</vector>

+ 0 - 9
app/src/main/res/drawable/ic_status_ongoing_24dp.xml

@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM12,20c-4.42,0 -8,-3.58 -8,-8s3.58,-8 8,-8 8,3.58 8,8 -3.58,8 -8,8zM12.5,7L11,7v6l5.25,3.15 0.75,-1.23 -4.5,-2.67z" />
-</vector>

+ 0 - 9
app/src/main/res/drawable/ic_status_unknown_24dp.xml

@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.42,0 -8,-3.58 -8,-8 0,-1.85 0.63,-3.55 1.69,-4.9L16.9,18.31C15.55,19.37 13.85,20 12,20zM18.31,16.9L7.1,5.69C8.45,4.63 10.15,4 12,4c4.42,0 8,3.58 8,8 0,1.85 -0.63,3.55 -1.69,4.9z" />
-</vector>

+ 0 - 10
app/src/main/res/drawable/library_item_selector_overlay.xml

@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?attr/colorPrimary">
-    <item>
-        <shape android:shape="rectangle">
-            <corners android:radius="@dimen/card_selector_radius" />
-            <solid android:color="@color/library_item_foreground" />
-        </shape>
-    </item>
-</ripple>

+ 0 - 19
app/src/main/res/drawable/list_item_selector_background.xml

@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<ripple xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="?attr/colorControlHighlight">
-    <item>
-        <selector>
-            <item android:state_selected="true">
-                <color android:color="?attr/colorControlHighlight" />
-            </item>
-
-            <item android:state_activated="true">
-                <color android:color="?attr/colorControlHighlight" />
-            </item>
-
-            <item>
-                <color android:color="?android:attr/colorBackground" />
-            </item>
-        </selector>
-    </item>
-</ripple>

+ 2 - 0
app/src/main/res/drawable/sc_collections_bookmark_48dp.xml

@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:keep="@drawable/sc_collections_bookmark_48dp"
     android:width="48dp"
     android:height="48dp"
     android:viewportWidth="48"

+ 2 - 0
app/src/main/res/drawable/sc_explore_48dp.xml

@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:keep="@drawable/sc_explore_48dp"
     android:width="48dp"
     android:height="48dp"
     android:viewportWidth="48"

+ 2 - 0
app/src/main/res/drawable/sc_history_48dp.xml

@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:keep="@drawable/sc_history_48dp"
     android:width="48dp"
     android:height="48dp"
     android:viewportWidth="48"

+ 2 - 0
app/src/main/res/drawable/sc_new_releases_48dp.xml

@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    tools:keep="@drawable/sc_new_releases_48dp"
     android:width="48dp"
     android:height="48dp"
     android:viewportWidth="48"

+ 0 - 19
app/src/main/res/layout/dialog_stub_textinput.xml

@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingHorizontal="24dp"
-    android:paddingVertical="16dp">
-
-    <com.google.android.material.textfield.TextInputLayout
-        android:id="@+id/text_field"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
-
-        <eu.kanade.tachiyomi.widget.TachiyomiTextInputEditText
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content" />
-
-    </com.google.android.material.textfield.TextInputLayout>
-
-</FrameLayout>

+ 0 - 5
app/src/main/res/layout/pager_controller.xml

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<androidx.viewpager.widget.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/pager"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent" />

+ 0 - 44
app/src/main/res/menu/download_queue.xml

@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto">
-
-    <item
-        android:id="@+id/reorder"
-        android:title="@string/action_reorganize_by"
-        app:showAsAction="never">
-        <menu>
-            <item
-                android:id="@+id/action_sort_date"
-                android:title="@string/action_order_by_upload_date"
-                app:showAsAction="never">
-                <menu>
-                    <item
-                        android:id="@+id/newest"
-                        android:title="@string/action_newest" />
-                    <item
-                        android:id="@+id/oldest"
-                        android:title="@string/action_oldest" />
-                </menu>
-            </item>
-            <item
-                android:id="@+id/action_sort_chapter"
-                android:title="@string/action_order_by_chapter_number"
-                app:showAsAction="never">
-                <menu>
-                    <item
-                        android:id="@+id/asc"
-                        android:title="@string/action_asc" />
-                    <item
-                        android:id="@+id/desc"
-                        android:title="@string/action_desc" />
-                </menu>
-            </item>
-        </menu>
-    </item>
-
-    <item
-        android:id="@+id/clear_queue"
-        android:title="@string/action_cancel_all"
-        app:showAsAction="never" />
-
-</menu>

+ 8 - 15
i18n/src/main/res/values/strings.xml

@@ -43,6 +43,7 @@
     <string name="action_filter_tracked">Tracked</string>
     <string name="action_filter_unread">Unread</string>
     <string name="action_filter_started">Started</string>
+    <!-- reserved for #4048 -->
     <string name="action_filter_empty">Remove filter</string>
     <string name="action_sort_alpha">Alphabetically</string>
     <string name="action_sort_count">Total manga</string>
@@ -63,11 +64,9 @@
     <string name="action_mark_as_unread">Mark as unread</string>
     <string name="action_mark_previous_as_read">Mark previous as read</string>
     <string name="action_download">Download</string>
-    <string name="action_download_unread">Download unread chapters</string>
     <string name="action_bookmark">Bookmark chapter</string>
     <string name="action_remove_bookmark">Unbookmark chapter</string>
     <string name="action_delete">Delete</string>
-    <string name="action_update">Update</string>
     <string name="action_update_library">Update library</string>
     <string name="action_enable_all">Enable all</string>
     <string name="action_disable_all">Disable all</string>
@@ -129,11 +128,11 @@
     <string name="action_share">Share</string>
     <string name="action_save">Save</string>
     <string name="action_reset">Reset</string>
+    <!-- missing undo feature after Compose rewrite #7454 -->
     <string name="action_undo">Undo</string>
     <string name="action_close">Close</string>
     <string name="action_open_log">Open log</string>
     <string name="action_show_errors">Tap to see details</string>
-    <string name="action_create">Create</string>
     <string name="action_restore">Restore</string>
     <string name="action_webview_back">Back</string>
     <string name="action_webview_forward">Forward</string>
@@ -467,8 +466,6 @@
     <string name="pref_backup_service_category">Automatic backups</string>
     <string name="pref_backup_interval">Backup frequency</string>
     <string name="pref_backup_slots">Maximum backups</string>
-    <string name="tracker_not_logged_in">Not logged in: %1$s</string>
-    <string name="backup_restore_invalid_uri">Error: empty URI</string>
     <string name="backup_created">Backup created</string>
     <string name="invalid_backup_file">Invalid backup file</string>
     <string name="invalid_backup_file_missing_manga">Backup does not contain any manga.</string>
@@ -574,7 +571,6 @@
     <string name="logout_title">Log out from %1$s?</string>
     <string name="logout">Log out</string>
     <string name="logout_success">You are now logged out</string>
-    <string name="invalid_login">Could not log in</string>
     <string name="unknown_error">Unknown error</string>
 
     <!-- Library fragment -->
@@ -586,6 +582,7 @@
     <string name="tabs_header">Tabs</string>
 
     <!-- Catalogue fragment -->
+    <!-- missing prompt after Compose rewrite #7901 -->
     <string name="no_more_results">No more results</string>
     <string name="no_results_found">No results found</string>
     <!-- Do not translate "WebView" -->
@@ -606,14 +603,11 @@
     <string name="local_filter_order_by">Order by</string>
     <string name="date">Date</string>
 
-    <!-- Manga activity -->
-    <string name="manga_not_in_db">This manga has been removed from the database.</string>
-
     <!-- Manga info fragment -->
-    <string name="description">Description</string>
     <string name="ongoing">Ongoing</string>
     <string name="unknown">Unknown</string>
     <string name="unknown_author">Unknown author</string>
+    <!-- reserved for #6163 -->
     <string name="unknown_status">Unknown status</string>
     <string name="licensed">Licensed</string>
     <string name="publishing_finished">Publishing finished</string>
@@ -621,8 +615,9 @@
     <string name="on_hiatus">On hiatus</string>
     <string name="add_to_library">Add to library</string>
     <string name="in_library">In library</string>
+    <!-- missing confirm menu after Compose rewrite #7901 -->
     <string name="remove_from_library">Remove from library</string>
-    <string name="manga_info_full_title_label">Title</string>
+    <string name="unknown_title">Unknown title</string>
     <string name="confirm_manga_add_duplicate">You have an entry in your library with the same name but from a different source (%1$s).\n\nDo you still wish to continue?</string>
     <string name="manga_added_library">Added to library</string>
     <string name="manga_removed_library">Removed from library</string>
@@ -646,7 +641,6 @@
     <string name="chapter_paused">Paused</string>
     <string name="show_title">Source title</string>
     <string name="show_chapter_number">Chapter number</string>
-    <string name="sorting_mode">Sorting mode</string>
     <string name="sort_by_source">By source</string>
     <string name="sort_by_number">By chapter number</string>
     <string name="sort_by_upload_date">By upload date</string>
@@ -708,14 +702,13 @@
     <string name="track_started_reading_date">Start date</string>
     <string name="track_finished_reading_date">Finish date</string>
     <string name="track_type">Type</string>
-    <string name="track_author">Author</string>
-    <string name="error_invalid_date_supplied">Invalid date supplied</string>
     <string name="myanimelist_relogin">Please login to MAL again</string>
     <string name="source_unsupported">Source is not supported</string>
     <string name="error_no_match">No match found</string>
 
     <!-- Category activity -->
     <string name="error_category_exists">A category with this name already exists!</string>
+    <!-- missing undo feature after Compose rewrite #7454 -->
     <string name="snack_categories_deleted">Categories deleted</string>
 
     <!-- Dialog option with checkbox view -->
@@ -733,7 +726,6 @@
     <string name="share_page_info">%1$s: %2$s, page %3$d</string>
     <string name="chapter_progress">Page: %1$d</string>
     <string name="no_next_chapter">Next chapter not found</string>
-    <string name="no_previous_chapter">Previous chapter not found</string>
     <string name="decode_image_error">The image couldn\'t be loaded</string>
     <string name="confirm_set_image_as_cover">Use this image as cover art?</string>
     <string name="pref_category_for_this_series">For this series</string>
@@ -830,6 +822,7 @@
     <!--UpdateCheck-->
     <string name="update_check_confirm">Download</string>
     <string name="update_check_open">Open on GitHub</string>
+    <!-- reserved for future use -->
     <string name="update_check_eol">This Android version is no longer supported</string>
     <string name="update_check_no_new_updates">No new updates available</string>
     <string name="update_check_look_for_updates">Searching for updates…</string>