Add manga-wised rotation mode settings (#4841)

* Add manga-wised rotation mode settings

Based on #3522

Co-authored-by: bboyz269 <4453811+bboyz269@users.noreply.github.com>

* Fix small mistakes

* Complete TODOs

* Rename functions

rotation -> orientation

* Fix orientation icon not changing

Bug from video

* Fix bug with force portrait not being force if a default value

Bug from video

* Backup viewer_flag as a seperate field in so legacy/forks doesn't crash

* Make viewer_flags nullable so old backups viewer gets restored

* Add migration for old rotation and viewer to new defaults ones

* Rename variable in enums

* Fix migration after OrientationType was changed

* Remove untrue comment

Co-authored-by: bboyz269 <4453811+bboyz269@users.noreply.github.com>
This commit is contained in:
Andreas
2021-04-28 14:32:47 +02:00
committed by GitHub
parent 93e6136795
commit 0fef546a0d
30 changed files with 313 additions and 234 deletions
@@ -436,15 +436,15 @@ class MangaPresenter(
fun getChapterSort(): (Chapter, Chapter) -> Int {
return when (manga.sorting) {
Manga.SORTING_SOURCE -> when (sortDescending()) {
Manga.CHAPTER_SORTING_SOURCE -> when (sortDescending()) {
true -> { c1, c2 -> c1.source_order.compareTo(c2.source_order) }
false -> { c1, c2 -> c2.source_order.compareTo(c1.source_order) }
}
Manga.SORTING_NUMBER -> when (sortDescending()) {
Manga.CHAPTER_SORTING_NUMBER -> when (sortDescending()) {
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()) {
Manga.CHAPTER_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) }
}
@@ -564,8 +564,8 @@ class MangaPresenter(
* Reverses the sorting and requests an UI update.
*/
fun reverseSortOrder() {
manga.setChapterOrder(if (sortDescending()) Manga.SORT_ASC else Manga.SORT_DESC)
db.updateFlags(manga).executeAsBlocking()
manga.setChapterOrder(if (sortDescending()) Manga.CHAPTER_SORT_ASC else Manga.CHAPTER_SORT_DESC)
db.updateChapterFlags(manga).executeAsBlocking()
refreshChapters()
}
@@ -576,10 +576,10 @@ class MangaPresenter(
fun setUnreadFilter(state: State) {
manga.readFilter = when (state) {
State.IGNORE -> Manga.SHOW_ALL
State.INCLUDE -> Manga.SHOW_UNREAD
State.EXCLUDE -> Manga.SHOW_READ
State.INCLUDE -> Manga.CHAPTER_SHOW_UNREAD
State.EXCLUDE -> Manga.CHAPTER_SHOW_READ
}
db.updateFlags(manga).executeAsBlocking()
db.updateChapterFlags(manga).executeAsBlocking()
refreshChapters()
}
@@ -590,10 +590,10 @@ class MangaPresenter(
fun setDownloadedFilter(state: State) {
manga.downloadedFilter = when (state) {
State.IGNORE -> Manga.SHOW_ALL
State.INCLUDE -> Manga.SHOW_DOWNLOADED
State.EXCLUDE -> Manga.SHOW_NOT_DOWNLOADED
State.INCLUDE -> Manga.CHAPTER_SHOW_DOWNLOADED
State.EXCLUDE -> Manga.CHAPTER_SHOW_NOT_DOWNLOADED
}
db.updateFlags(manga).executeAsBlocking()
db.updateChapterFlags(manga).executeAsBlocking()
refreshChapters()
}
@@ -604,10 +604,10 @@ class MangaPresenter(
fun setBookmarkedFilter(state: State) {
manga.bookmarkedFilter = when (state) {
State.IGNORE -> Manga.SHOW_ALL
State.INCLUDE -> Manga.SHOW_BOOKMARKED
State.EXCLUDE -> Manga.SHOW_NOT_BOOKMARKED
State.INCLUDE -> Manga.CHAPTER_SHOW_BOOKMARKED
State.EXCLUDE -> Manga.CHAPTER_SHOW_NOT_BOOKMARKED
}
db.updateFlags(manga).executeAsBlocking()
db.updateChapterFlags(manga).executeAsBlocking()
refreshChapters()
}
@@ -617,7 +617,7 @@ class MangaPresenter(
*/
fun setDisplayMode(mode: Int) {
manga.displayMode = mode
db.updateFlags(manga).executeAsBlocking()
db.updateChapterFlags(manga).executeAsBlocking()
}
/**
@@ -626,7 +626,7 @@ class MangaPresenter(
*/
fun setSorting(sort: Int) {
manga.sorting = sort
db.updateFlags(manga).executeAsBlocking()
db.updateChapterFlags(manga).executeAsBlocking()
refreshChapters()
}
@@ -645,8 +645,8 @@ class MangaPresenter(
return State.INCLUDE
}
return when (manga.downloadedFilter) {
Manga.SHOW_DOWNLOADED -> State.INCLUDE
Manga.SHOW_NOT_DOWNLOADED -> State.EXCLUDE
Manga.CHAPTER_SHOW_DOWNLOADED -> State.INCLUDE
Manga.CHAPTER_SHOW_NOT_DOWNLOADED -> State.EXCLUDE
else -> State.IGNORE
}
}
@@ -656,8 +656,8 @@ class MangaPresenter(
*/
fun onlyBookmarked(): State {
return when (manga.bookmarkedFilter) {
Manga.SHOW_BOOKMARKED -> State.INCLUDE
Manga.SHOW_NOT_BOOKMARKED -> State.EXCLUDE
Manga.CHAPTER_SHOW_BOOKMARKED -> State.INCLUDE
Manga.CHAPTER_SHOW_NOT_BOOKMARKED -> State.EXCLUDE
else -> State.IGNORE
}
}
@@ -667,8 +667,8 @@ class MangaPresenter(
*/
fun onlyUnread(): State {
return when (manga.readFilter) {
Manga.SHOW_UNREAD -> State.INCLUDE
Manga.SHOW_READ -> State.EXCLUDE
Manga.CHAPTER_SHOW_UNREAD -> State.INCLUDE
Manga.CHAPTER_SHOW_READ -> State.EXCLUDE
else -> State.IGNORE
}
}
@@ -29,7 +29,7 @@ class ChapterHolder(
val chapter = item.chapter
binding.chapterTitle.text = when (manga.displayMode) {
Manga.DISPLAY_NUMBER -> {
Manga.CHAPTER_DISPLAY_NUMBER -> {
val number = adapter.decimalFormat.format(chapter.chapter_number.toDouble())
itemView.context.getString(R.string.display_mode_chapter, number)
}
@@ -152,11 +152,11 @@ class ChaptersSettingsSheet(
}
source.state =
if (sorting == Manga.SORTING_SOURCE) order else Item.MultiSort.SORT_NONE
if (sorting == Manga.CHAPTER_SORTING_SOURCE) order else Item.MultiSort.SORT_NONE
chapterNum.state =
if (sorting == Manga.SORTING_NUMBER) order else Item.MultiSort.SORT_NONE
if (sorting == Manga.CHAPTER_SORTING_NUMBER) order else Item.MultiSort.SORT_NONE
uploadDate.state =
if (sorting == Manga.SORTING_UPLOAD_DATE) order else Item.MultiSort.SORT_NONE
if (sorting == Manga.CHAPTER_SORTING_UPLOAD_DATE) order else Item.MultiSort.SORT_NONE
}
override fun onItemClicked(item: Item) {
@@ -175,9 +175,9 @@ class ChaptersSettingsSheet(
}
when (item) {
source -> presenter.setSorting(Manga.SORTING_SOURCE)
chapterNum -> presenter.setSorting(Manga.SORTING_NUMBER)
uploadDate -> presenter.setSorting(Manga.SORTING_UPLOAD_DATE)
source -> presenter.setSorting(Manga.CHAPTER_SORTING_SOURCE)
chapterNum -> presenter.setSorting(Manga.CHAPTER_SORTING_NUMBER)
uploadDate -> presenter.setSorting(Manga.CHAPTER_SORTING_UPLOAD_DATE)
else -> throw Exception("Unknown sorting")
}
@@ -209,8 +209,8 @@ class ChaptersSettingsSheet(
override fun initModels() {
val mode = presenter.manga.displayMode
displayTitle.checked = mode == Manga.DISPLAY_NAME
displayChapterNum.checked = mode == Manga.DISPLAY_NUMBER
displayTitle.checked = mode == Manga.CHAPTER_DISPLAY_NAME
displayChapterNum.checked = mode == Manga.CHAPTER_DISPLAY_NUMBER
}
override fun onItemClicked(item: Item) {
@@ -221,8 +221,8 @@ class ChaptersSettingsSheet(
item.checked = true
when (item) {
displayTitle -> presenter.setDisplayMode(Manga.DISPLAY_NAME)
displayChapterNum -> presenter.setDisplayMode(Manga.DISPLAY_NUMBER)
displayTitle -> presenter.setDisplayMode(Manga.CHAPTER_DISPLAY_NAME)
displayChapterNum -> presenter.setDisplayMode(Manga.CHAPTER_DISPLAY_NUMBER)
else -> throw NotImplementedError("Unknown display mode")
}