Added "Reverse order" option to d&d sorting to reduce menu size

This commit is contained in:
Jay 2020-01-27 21:04:11 -08:00
parent ea281be29e
commit 5ea683b686
5 changed files with 32 additions and 30 deletions

View file

@ -219,15 +219,15 @@ class LibraryController(
if (orderOfCat != null) {
subMenu.setGroupCheckable(R.id.reorder_group, true, true)
when (orderOfCat) {
'a' -> subMenu.findItem(R.id.action_alpha_asc)?.isChecked = true
'b' -> subMenu.findItem(R.id.action_alpha_dsc)?.isChecked = true
'c' -> subMenu.findItem(R.id.action_update_asc)?.isChecked = true
'd' -> subMenu.findItem(R.id.action_update_dsc)?.isChecked = true
'e' -> subMenu.findItem(R.id.action_unread)?.isChecked = true
'f' -> subMenu.findItem(R.id.action_last_read)?.isChecked = true
'a', 'b' -> subMenu.findItem(R.id.action_alpha_asc)?.isChecked = true
'c', 'd' -> subMenu.findItem(R.id.action_update_asc)?.isChecked = true
'e', 'f' -> subMenu.findItem(R.id.action_unread)?.isChecked = true
'g', 'h' -> subMenu.findItem(R.id.action_last_read)?.isChecked = true
}
subMenu.findItem(R.id.action_reverse)?.isVisible = true
}
else {
subMenu.findItem(R.id.action_reverse)?.isVisible = false
subMenu.setGroupCheckable(R.id.reorder_group, false, false)
}
}
@ -479,12 +479,11 @@ class LibraryController(
R.id.action_source_migration -> {
router.pushController(MigrationController().withFadeTransaction())
}
R.id.action_alpha_asc -> reOrder(1)
R.id.action_alpha_dsc -> reOrder(2)
R.id.action_update_asc -> reOrder(3)
R.id.action_update_dsc -> reOrder(4)
R.id.action_unread -> reOrder(5)
R.id.action_last_read -> reOrder(6)
R.id.action_alpha_asc -> reOrder(0)
R.id.action_update_asc -> reOrder(1)
R.id.action_unread -> reOrder(2)
R.id.action_last_read -> reOrder(3)
R.id.action_reverse -> reOrder(-1)
else -> return super.onOptionsItemSelected(item)
}
@ -492,8 +491,15 @@ class LibraryController(
}
private fun reOrder(type: Int) {
val modType = if (type == -1) {
val t = (adapter?.categories?.getOrNull(library_pager.currentItem)?.mangaSort
?.minus('a') ?: 0) + 1
if (t % 2 != 0) t + 1
else t - 1
}
else 2 * type + 1
adapter?.categories?.getOrNull(library_pager.currentItem)?.id?.let {
reorganizeRelay.call(it to type)
reorganizeRelay.call(it to modType)
onSortChanged()
}
}

View file

@ -236,19 +236,20 @@ class LibraryPresenter(
val category = catListing.find { it.id == i1.manga.category }
when {
category?.mangaSort != null -> {
when (category.mangaSort) {
'a' -> sortAlphabetical(i1, i2)
'b' -> sortAlphabetical(i2, i1)
'c' -> i2.manga.last_update.compareTo(i1.manga.last_update)
'd' -> i1.manga.last_update.compareTo(i2.manga.last_update)
'e' -> i2.manga.unread.compareTo(i1.manga.unread)
'f' -> {
var sort = when (category.mangaSort) {
'a', 'b' -> sortAlphabetical(i1, i2)
'c', 'd' -> i2.manga.last_update.compareTo(i1.manga.last_update)
'e', 'f' -> i2.manga.unread.compareTo(i1.manga.unread)
'g', 'h' -> {
val manga1LastRead = lastReadManga[i1.manga.id!!] ?: lastReadManga.size
val manga2LastRead = lastReadManga[i2.manga.id!!] ?: lastReadManga.size
manga1LastRead.compareTo(manga2LastRead)
}
else -> sortAlphabetical(i1, i2)
}
if ((category.mangaSort!! - 'a') % 2 == 1 )
sort *= -1
sort
}
category?.mangaOrder?.isEmpty() == false -> {
val order = category.mangaOrder

View file

@ -42,15 +42,9 @@
<item
android:id="@+id/action_alpha_asc"
android:title="@string/title"/>
<item
android:id="@+id/action_alpha_dsc"
android:title="@string/action_title_reverse"/>
<item
android:id="@+id/action_update_asc"
android:title="@string/action_sort_last_updated"/>
<item
android:id="@+id/action_update_dsc"
android:title="@string/action_sort_first_updated"/>
<item
android:id="@+id/action_unread"
android:title="@string/action_filter_unread"/>
@ -59,6 +53,10 @@
android:title="@string/action_sort_last_read"/>
</group>
<item
android:id="@+id/action_reverse"
android:title="@string/action_reverse_order"/>
</menu>
</item>

View file

@ -75,14 +75,12 @@
<string name="action_sort_down">По убыванию</string>
<string name="action_sort_drag_and_drop">Перетаскивание</string>
<string name="action_sort_enabled">По статусу вкл/выкл</string>
<string name="action_sort_first_updated">Последняя обновленная (обр. порядок)</string>
<string name="action_sort_last_read">Последняя прочитанная</string>
<string name="action_sort_last_updated">Последняя обновленная</string>
<string name="action_sort_total">По количеству глав</string>
<string name="action_sort_up">По возрастанию</string>
<string name="action_start">Старт</string>
<string name="action_stop">Стоп</string>
<string name="action_title_reverse">Название (обр. порядок)</string>
<string name="action_track">Отслеживать</string>
<string name="action_undo">Отменить</string>
<string name="action_update">Обновить</string>

View file

@ -107,9 +107,8 @@
<string name="action_migrate_now">Migrate now</string>
<string name="action_copy_now">Copy now</string>
<string name="action_reorganize_by">Reorder</string>
<string name="action_title_reverse">Title (descending)</string>
<string name="action_reverse_order">Reverse order</string>
<string name="action_sort_last_updated">Last updated</string>
<string name="action_sort_first_updated">Last updated (desc.)</string>
<string name="action_hide_title">Hide title</string>
<string name="action_show_title">Show title</string>
<string name="action_newest">Newest</string>