diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt index 69c9cc6b6..fe3c074d5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt @@ -78,7 +78,8 @@ interface Manga : SManga { const val SORTING_SOURCE = 0x00000000 const val SORTING_NUMBER = 0x00000100 - const val SORTING_MASK = 0x00000100 + const val SORTING_UPLOAD_DATE = 0x00000200 + const val SORTING_MASK = 0x00000300 const val DISPLAY_NAME = 0x00000000 const val DISPLAY_NUMBER = 0x00100000 diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersController.kt index 59e64f695..b2aa4ba3c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersController.kt @@ -196,11 +196,13 @@ class ChaptersController : } // Sorting mode submenu - if (presenter.manga.sorting == Manga.SORTING_SOURCE) { - menu.findItem(R.id.sort_by_source).isChecked = true - } else { - menu.findItem(R.id.sort_by_number).isChecked = true + val sortingItem = when (presenter.manga.sorting) { + Manga.SORTING_SOURCE -> R.id.sort_by_source + Manga.SORTING_NUMBER -> R.id.sort_by_number + Manga.SORTING_UPLOAD_DATE -> R.id.sort_by_upload_date + else -> throw NotImplementedError("Unimplemented sorting method") } + menu.findItem(sortingItem).isChecked = true } override fun onOptionsItemSelected(item: MenuItem): Boolean { @@ -222,6 +224,10 @@ class ChaptersController : item.isChecked = true presenter.setSorting(Manga.SORTING_NUMBER) } + R.id.sort_by_upload_date -> { + item.isChecked = true + presenter.setSorting(Manga.SORTING_UPLOAD_DATE) + } R.id.download_next, R.id.download_next_5, R.id.download_next_10, R.id.download_custom, R.id.download_unread, R.id.download_all diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersPresenter.kt index e108a8eb7..1434e3d56 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersPresenter.kt @@ -203,6 +203,10 @@ class ChaptersPresenter( true -> { c1, c2 -> c2.chapter_number.compareTo(c1.chapter_number) } false -> { c1, c2 -> c1.chapter_number.compareTo(c2.chapter_number) } } + Manga.SORTING_UPLOAD_DATE -> when (sortDescending()) { + true -> { c1, c2 -> c2.date_upload.compareTo(c1.date_upload) } + false -> { c1, c2 -> c1.date_upload.compareTo(c2.date_upload) } + } else -> throw NotImplementedError("Unimplemented sorting method") } return observable.toSortedList(sortFunction) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ChapterLoadStrategy.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ChapterLoadStrategy.kt index b07c803f2..f637e5b09 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ChapterLoadStrategy.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ChapterLoadStrategy.kt @@ -35,3 +35,12 @@ class ChapterLoadByNumber { return chapters.sortedBy { it.chapter_number } } } + +/** + * Load strategy using the chapter upload date. This ordering ignores scanlators + */ +class ChapterLoadByUploadDate() { + fun get(allChapters: List): List { + return allChapters.sortedBy { it.date_upload } + } +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt index 329a62a44..77a435b4e 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPresenter.kt @@ -129,6 +129,7 @@ class ReaderPresenter( when (manga.sorting) { Manga.SORTING_SOURCE -> ChapterLoadBySource().get(chaptersForReader) Manga.SORTING_NUMBER -> ChapterLoadByNumber().get(chaptersForReader, selectedChapter) + Manga.SORTING_UPLOAD_DATE -> ChapterLoadByUploadDate().get(chaptersForReader) else -> error("Unknown sorting method") }.map(::ReaderChapter) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt index 911b6fabd..984c3c6a2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryPresenter.kt @@ -98,6 +98,7 @@ class HistoryPresenter : BasePresenter() { val sortFunction: (Chapter, Chapter) -> Int = when (manga.sorting) { Manga.SORTING_SOURCE -> { c1, c2 -> c2.source_order.compareTo(c1.source_order) } Manga.SORTING_NUMBER -> { c1, c2 -> c1.chapter_number.compareTo(c2.chapter_number) } + Manga.SORTING_UPLOAD_DATE -> { c1, c2 -> c1.date_upload.compareTo(c2.date_upload) } else -> throw NotImplementedError("Unknown sorting method") } @@ -117,6 +118,10 @@ class HistoryPresenter : BasePresenter() { it.chapter_number <= chapterNumber + 1 } } + Manga.SORTING_UPLOAD_DATE -> { + chapters.drop(currChapterIndex + 1) + .firstOrNull { it.date_upload >= chapter.date_upload} + } else -> throw NotImplementedError("Unknown sorting method") } } diff --git a/app/src/main/res/menu/chapters.xml b/app/src/main/res/menu/chapters.xml index 13ae70dc3..e4d16d407 100644 --- a/app/src/main/res/menu/chapters.xml +++ b/app/src/main/res/menu/chapters.xml @@ -64,6 +64,9 @@ + diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index f69266a23..330af7f1e 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -183,6 +183,7 @@ Ordenado de capítulos Por fuente Por número de capítulo + Por fecha de carga Descargar Siguiente capítulo Siguientes 5 capítulos diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e9e1a55cf..3e25f9f95 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -479,6 +479,7 @@ Sorting mode By source By chapter number + By upload date Download Download custom amount Next chapter