mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	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
This commit is contained in:
		@@ -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) {
 | 
			
		||||
 
 | 
			
		||||
@@ -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())),
 | 
			
		||||
                )
 | 
			
		||||
 
 | 
			
		||||
@@ -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(),
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
 
 | 
			
		||||
@@ -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),
 | 
			
		||||
                ),
 | 
			
		||||
            ),
 | 
			
		||||
        )
 | 
			
		||||
 
 | 
			
		||||
@@ -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>(),
 | 
			
		||||
 
 | 
			
		||||
@@ -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) },
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
                )
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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"
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
 
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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" />
 | 
			
		||||
@@ -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>
 | 
			
		||||
@@ -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>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user