Hide chapter title in all places

Closes #1551
This commit is contained in:
Jays2Kings 2023-04-19 16:52:16 -04:00
parent 4334f2bdfc
commit c709206985
9 changed files with 42 additions and 17 deletions

View file

@ -13,6 +13,7 @@ import eu.kanade.tachiyomi.data.notification.NotificationHandler
import eu.kanade.tachiyomi.data.notification.NotificationReceiver
import eu.kanade.tachiyomi.data.notification.Notifications
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.chapter.ChapterUtil.Companion.preferredChapterName
import eu.kanade.tachiyomi.util.lang.chop
import eu.kanade.tachiyomi.util.system.localeContext
import eu.kanade.tachiyomi.util.system.notificationBuilder
@ -93,7 +94,8 @@ internal class DownloadNotifier(private val context: Context) {
if (download != null && !preferences.hideNotificationContent()) {
val title = download.manga.title.chop(15)
val quotedTitle = Pattern.quote(title)
val chapter = download.chapter.name.replaceFirst(
val name = download.chapter.preferredChapterName(context, download.manga, preferences)
val chapter = name.replaceFirst(
"$quotedTitle[\\s]*[-]*[\\s]*"
.toRegex(RegexOption.IGNORE_CASE),
"",
@ -152,7 +154,8 @@ internal class DownloadNotifier(private val context: Context) {
} else {
val title = download.manga.title.chop(15)
val quotedTitle = Pattern.quote(title)
val chapter = download.chapter.name.replaceFirst(
val name = download.chapter.preferredChapterName(context, download.manga, preferences)
val chapter = name.replaceFirst(
"$quotedTitle[\\s]*[-]*[\\s]*".toRegex(RegexOption.IGNORE_CASE),
"",
)

View file

@ -22,6 +22,7 @@ import eu.kanade.tachiyomi.source.UnmeteredSource
import eu.kanade.tachiyomi.source.model.Page
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.source.online.fetchAllImageUrlsFromPageList
import eu.kanade.tachiyomi.util.chapter.ChapterUtil.Companion.preferredChapterName
import eu.kanade.tachiyomi.util.lang.RetryWithDelay
import eu.kanade.tachiyomi.util.lang.plusAssign
import eu.kanade.tachiyomi.util.storage.DiskUtil
@ -319,9 +320,10 @@ class Downloader(
val mangaDir = provider.getMangaDir(download.manga, download.source)
val availSpace = DiskUtil.getAvailableStorageSpace(mangaDir)
val chapName = download.chapter.preferredChapterName(context, download.manga, preferences)
if (availSpace != -1L && availSpace < MIN_DISK_SPACE) {
download.status = Download.State.ERROR
notifier.onError(context.getString(R.string.couldnt_download_low_space), download.chapter.name)
notifier.onError(context.getString(R.string.couldnt_download_low_space), chapName)
return@defer Observable.just(download)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R &&
@ -334,7 +336,7 @@ class Downloader(
notifier.onError(
context.getString(R.string.external_storage_download_notice),
download.chapter.name,
chapName,
download.manga.title,
intent,
)
@ -386,7 +388,7 @@ class Downloader(
.onErrorReturn { error ->
Timber.e(error)
download.status = Download.State.ERROR
notifier.onError(error.message, download.chapter.name, download.manga.title)
notifier.onError(error.message, chapName, download.manga.title)
download
}
}
@ -427,12 +429,13 @@ class Downloader(
else -> downloadImage(page, download.source, tmpDir, filename)
}
val chapName = download.chapter.preferredChapterName(context, download.manga, preferences)
return pageObservable
// When the page is ready, set page path, progress (just in case) and status
.doOnNext { file ->
val success = splitTallImageIfNeeded(page, tmpDir)
if (success.not()) {
notifier.onError(context.getString(R.string.download_notifier_split_failed), download.chapter.name, download.manga.title)
notifier.onError(context.getString(R.string.download_notifier_split_failed), chapName, download.manga.title)
}
page.uri = file.uri
page.progress = 100
@ -444,7 +447,7 @@ class Downloader(
.onErrorReturn {
page.progress = 0
page.status = Page.State.ERROR
notifier.onError(it.message, download.chapter.name, download.manga.title)
notifier.onError(it.message, chapName, download.manga.title)
page
}
}

View file

@ -23,6 +23,7 @@ import eu.kanade.tachiyomi.data.notification.NotificationReceiver
import eu.kanade.tachiyomi.data.notification.Notifications
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.util.chapter.ChapterUtil.Companion.preferredChapterName
import eu.kanade.tachiyomi.util.lang.chop
import eu.kanade.tachiyomi.util.system.notification
import eu.kanade.tachiyomi.util.system.notificationBuilder
@ -172,7 +173,9 @@ class LibraryUpdateNotifier(private val context: Context) {
updates.forEach {
val manga = it.key
val chapters = it.value
val chapterNames = chapters.map { chapter -> chapter.name }
val chapterNames = chapters.map { chapter ->
chapter.preferredChapterName(context, manga, preferences)
}
notifications.add(
Pair(
context.notification(Notifications.CHANNEL_NEW_CHAPTERS) {

View file

@ -3,6 +3,8 @@ package eu.kanade.tachiyomi.ui.download
import android.view.MenuItem
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import uy.kohesive.injekt.injectLazy
/**
* Adapter storing a list of downloads.
@ -19,6 +21,7 @@ class DownloadAdapter(controller: DownloadItemListener) : FlexibleAdapter<Abstra
* Listener called when an item of the list is released.
*/
val downloadItemListener: DownloadItemListener = controller
val preferences: PreferencesHelper by injectLazy()
interface DownloadItemListener {
/**

View file

@ -20,6 +20,7 @@ import eu.kanade.tachiyomi.databinding.DownloadBottomSheetBinding
import eu.kanade.tachiyomi.ui.extension.ExtensionDividerItemDecoration
import eu.kanade.tachiyomi.ui.main.MainActivity
import eu.kanade.tachiyomi.ui.recents.RecentsController
import eu.kanade.tachiyomi.util.chapter.ChapterUtil.Companion.preferredChapterName
import eu.kanade.tachiyomi.util.view.collapse
import eu.kanade.tachiyomi.util.view.doOnApplyWindowInsetsCompat
import eu.kanade.tachiyomi.util.view.expand
@ -126,7 +127,7 @@ class DownloadBottomSheet @JvmOverloads constructor(
binding.titleText.text = if (extCount != null) {
resources.getString(
R.string.downloading_,
extCount.chapter.name,
extCount.chapter.preferredChapterName(context, extCount.manga, preferences),
)
} else {
""

View file

@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.databinding.DownloadItemBinding
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
import eu.kanade.tachiyomi.util.chapter.ChapterUtil.Companion.preferredChapterName
import eu.kanade.tachiyomi.util.view.setVectorCompat
/**
@ -36,7 +37,8 @@ class DownloadHolder(private val view: View, val adapter: DownloadAdapter) :
fun bind(download: Download) {
this.download = download
// Update the chapter name.
binding.chapterTitle.text = download.chapter.name
binding.chapterTitle.text = download.chapter
.preferredChapterName(itemView.context, download.manga, adapter.preferences)
// Update the manga title
binding.title.text = download.manga.title

View file

@ -1631,7 +1631,7 @@ class ReaderActivity : BaseActivity<ReaderActivityBinding>() {
val text = "${manga.title}: ${if (chapter.isRecognizedNumber) {
getString(R.string.chapter_, decimalFormat.format(chapter.chapter_number))
} else {
chapter.name
chapter.preferredChapterName(this, manga, preferences)
}
}, $pageNumber"

View file

@ -38,6 +38,7 @@ import eu.kanade.tachiyomi.ui.reader.settings.OrientationType
import eu.kanade.tachiyomi.ui.reader.settings.ReadingModeType
import eu.kanade.tachiyomi.util.chapter.ChapterFilter
import eu.kanade.tachiyomi.util.chapter.ChapterSort
import eu.kanade.tachiyomi.util.chapter.ChapterUtil.Companion.preferredChapterName
import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource
import eu.kanade.tachiyomi.util.chapter.updateTrackChapterRead
import eu.kanade.tachiyomi.util.isLocal
@ -734,6 +735,7 @@ class ReaderViewModel(
private fun saveImage(page: ReaderPage, directory: File, manga: Manga): File {
val stream = page.stream!!
val type = ImageUtil.findImageType(stream) ?: throw Exception("Not an image")
val context = Injekt.get<Application>()
directory.mkdirs()
@ -741,7 +743,7 @@ class ReaderViewModel(
// Build destination file.
val filename = DiskUtil.buildValidFilename(
"${manga.title} - ${chapter.name}".take(225),
"${manga.title} - ${chapter.preferredChapterName(context, manga, preferences)}".take(225),
) + " - ${page.number}.${type.extension}"
val destFile = File(directory, filename)
@ -771,10 +773,11 @@ class ReaderViewModel(
directory.mkdirs()
val chapter = page1.chapter.chapter
val context = Injekt.get<Application>()
// Build destination file.
val filename = DiskUtil.buildValidFilename(
"${manga.title} - ${chapter.name}".take(225),
"${manga.title} - ${chapter.preferredChapterName(context, manga, preferences)}".take(225),
) + " - ${page1.number}-${page2.number}.jpg"
val destFile = File(directory, filename)

View file

@ -14,10 +14,14 @@ import androidx.core.view.isVisible
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.databinding.ReaderTransitionViewBinding
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
import eu.kanade.tachiyomi.util.chapter.ChapterUtil.Companion.preferredChapterName
import eu.kanade.tachiyomi.util.system.contextCompatDrawable
import eu.kanade.tachiyomi.util.system.dpToPx
import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
import kotlin.math.roundToInt
class ReaderTransitionView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
@ -25,6 +29,7 @@ class ReaderTransitionView @JvmOverloads constructor(context: Context, attrs: At
private val binding: ReaderTransitionViewBinding =
ReaderTransitionViewBinding.inflate(LayoutInflater.from(context), this, true)
private val preferences: PreferencesHelper by injectLazy()
init {
layoutParams = LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)
@ -57,12 +62,13 @@ class ReaderTransitionView @JvmOverloads constructor(context: Context, attrs: At
val isCurrentDownloaded = downloadManager.isChapterDownloaded(transition.from.chapter, manga)
binding.upperText.text = buildSpannedString {
bold { append(context.getString(R.string.previous_title)) }
append("\n${prevChapter.chapter.name}")
append("\n${prevChapter.chapter.preferredChapterName(context, manga, preferences)}")
if (isPrevDownloaded != isCurrentDownloaded) addDLImageSpan(isPrevDownloaded)
}
binding.lowerText.text = buildSpannedString {
bold { append(context.getString(R.string.current_chapter)) }
append("\n${transition.from.chapter.name}")
val name = transition.from.chapter.preferredChapterName(context, manga, preferences)
append("\n$name")
}
} else {
binding.upperText.textAlignment = TEXT_ALIGNMENT_CENTER
@ -87,11 +93,12 @@ class ReaderTransitionView @JvmOverloads constructor(context: Context, attrs: At
val isNextDownloaded = downloadManager.isChapterDownloaded(nextChapter.chapter, manga)
binding.upperText.text = buildSpannedString {
bold { append(context.getString(R.string.finished_chapter)) }
append("\n${transition.from.chapter.name}")
val name = transition.from.chapter.preferredChapterName(context, manga, preferences)
append("\n$name")
}
binding.lowerText.text = buildSpannedString {
bold { append(context.getString(R.string.next_title)) }
append("\n${nextChapter.chapter.name}")
append("\n${nextChapter.chapter.preferredChapterName(context, manga, preferences)}")
if (isNextDownloaded != isCurrentDownloaded) addDLImageSpan(isNextDownloaded)
}
} else {