mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
parent
4334f2bdfc
commit
c709206985
9 changed files with 42 additions and 17 deletions
|
@ -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),
|
||||
"",
|
||||
)
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 {
|
||||
/**
|
||||
|
|
|
@ -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 {
|
||||
""
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue