Added Remove Downloads to manga details
Collasaping downloads if theres no downloads when its not in view
This commit is contained in:
parent
05428b308f
commit
a73c847e3f
6 changed files with 57 additions and 33 deletions
|
@ -690,6 +690,9 @@ class MangaDetailsController : BaseController,
|
|||
presenter.getNextUnreadChapter() != null && !presenter.isLockedFromSearch
|
||||
menu.findItem(R.id.action_mark_all_as_unread).isVisible =
|
||||
!presenter.allUnread() && !presenter.isLockedFromSearch
|
||||
menu.findItem(R.id.action_remove_downloads).isVisible = !presenter.isLockedFromSearch
|
||||
menu.findItem(R.id.remove_non_bookmarked).isVisible =
|
||||
presenter.hasBookmark() && !presenter.isLockedFromSearch
|
||||
menu.findItem(R.id.action_mark_all_as_unread).isVisible = presenter.isTracked()
|
||||
val iconPrimary = view?.context?.getResourceColor(android.R.attr.textColorPrimary)
|
||||
?: Color.BLACK
|
||||
|
@ -748,7 +751,6 @@ class MangaDetailsController : BaseController,
|
|||
}
|
||||
}
|
||||
R.id.action_open_in_web_view -> openInWebView()
|
||||
R.id.action_share -> prepareToShareManga()
|
||||
R.id.action_add_to_home_screen -> addToHomeScreen()
|
||||
R.id.action_refresh_tracking -> presenter.refreshTrackers()
|
||||
R.id.action_mark_all_as_read -> {
|
||||
|
@ -757,6 +759,7 @@ class MangaDetailsController : BaseController,
|
|||
markAsRead(presenter.chapters)
|
||||
}.negativeButton(android.R.string.cancel).show()
|
||||
}
|
||||
R.id.remove_all, R.id.remove_read, R.id.remove_non_bookmarked -> massDeleteChapters(item.itemId)
|
||||
R.id.action_mark_all_as_unread -> markAsUnread(presenter.chapters)
|
||||
R.id.download_next, R.id.download_next_5, R.id.download_custom, R.id.download_unread, R.id.download_all -> downloadChapters(
|
||||
item.itemId
|
||||
|
@ -825,6 +828,29 @@ class MangaDetailsController : BaseController,
|
|||
startActivity(intent)
|
||||
}
|
||||
|
||||
private fun massDeleteChapters(choice: Int) {
|
||||
val chaptersToDelete = when (choice) {
|
||||
R.id.remove_all -> presenter.chapters
|
||||
R.id.remove_non_bookmarked -> presenter.chapters.filter { !it.bookmark }
|
||||
R.id.remove_read -> presenter.chapters.filter { it.read }
|
||||
else -> emptyList()
|
||||
}.filter { it.isDownloaded }
|
||||
if (chaptersToDelete.isNotEmpty()) {
|
||||
massDeleteChapters(chaptersToDelete)
|
||||
}
|
||||
}
|
||||
|
||||
private fun massDeleteChapters(chapters: List<ChapterItem>) {
|
||||
val context = view?.context ?: return
|
||||
MaterialDialog(context).message(
|
||||
text = context.resources.getQuantityString(
|
||||
R.plurals.remove_n_chapters, chapters.size, chapters.size
|
||||
)
|
||||
).positiveButton(R.string.remove) {
|
||||
presenter.deleteChapters(chapters)
|
||||
}.negativeButton(android.R.string.cancel).show()
|
||||
}
|
||||
|
||||
private fun downloadChapters(choice: Int) {
|
||||
val chaptersToDownload = when (choice) {
|
||||
R.id.download_next -> presenter.getUnreadChaptersSorted().take(1)
|
||||
|
|
|
@ -320,6 +320,7 @@ class MangaDetailsPresenter(
|
|||
}
|
||||
|
||||
fun allUnread(): Boolean = chapters.none { it.read }
|
||||
fun hasBookmark(): Boolean = chapters.any { it.bookmark }
|
||||
|
||||
fun getUnreadChaptersSorted() =
|
||||
chapters.filter { !it.read && it.status == Download.NOT_DOWNLOADED }.distinctBy { it.name }
|
||||
|
|
|
@ -349,6 +349,7 @@ class RecentsController(bundle: Bundle? = null) : BaseController(bundle),
|
|||
if (type.isEnter) {
|
||||
view?.applyWindowInsetsForRootController(activity!!.bottom_nav)
|
||||
if (type == ControllerChangeType.POP_ENTER) presenter.onCreate()
|
||||
dl_bottom_sheet.dismiss()
|
||||
setHasOptionsMenu(true)
|
||||
} else {
|
||||
if (type == ControllerChangeType.POP_EXIT) presenter.onDestroy()
|
||||
|
@ -362,10 +363,9 @@ class RecentsController(bundle: Bundle? = null) : BaseController(bundle),
|
|||
}
|
||||
|
||||
override fun toggleSheet() {
|
||||
if (dl_bottom_sheet.sheetBehavior?.isHideable == false) {
|
||||
if (showingDownloads) dl_bottom_sheet.dismiss()
|
||||
else dl_bottom_sheet.sheetBehavior?.state = BottomSheetBehavior.STATE_EXPANDED
|
||||
}
|
||||
if (showingDownloads) dl_bottom_sheet.dismiss()
|
||||
else if (dl_bottom_sheet.sheetBehavior?.isHideable == false) dl_bottom_sheet.sheetBehavior?.state =
|
||||
BottomSheetBehavior.STATE_EXPANDED
|
||||
}
|
||||
|
||||
override fun expandSearch() {
|
||||
|
|
|
@ -48,8 +48,25 @@
|
|||
android:id="@+id/action_refresh_tracking"
|
||||
android:icon="@drawable/ic_refresh_white_24dp"
|
||||
android:title="@string/refresh_tracking"
|
||||
app:showAsAction="never" />
|
||||
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/action_remove_downloads"
|
||||
android:icon="@drawable/ic_file_download_white_24dp"
|
||||
android:title="@string/remove_downloads"
|
||||
app:showAsAction="ifRoom">
|
||||
<menu>
|
||||
<item
|
||||
android:id="@+id/remove_all"
|
||||
android:title="@string/all_chapters" />
|
||||
<item
|
||||
android:id="@+id/remove_non_bookmarked"
|
||||
android:title="@string/all_but_bookmarked_chapters" />
|
||||
<item
|
||||
android:id="@+id/remove_read"
|
||||
android:title="@string/all_read_chapters" />
|
||||
</menu>
|
||||
</item>
|
||||
<item
|
||||
android:id="@+id/action_edit"
|
||||
android:icon="@drawable/ic_edit_white_24dp"
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_edit"
|
||||
android:icon="@drawable/ic_edit_white_24dp"
|
||||
android:title="@string/edit"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_share"
|
||||
android:icon="@drawable/ic_share_white_24dp"
|
||||
android:title="@string/share"
|
||||
app:showAsAction="ifRoom" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_open_in_web_view"
|
||||
android:title="@string/open_in_web_view"
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_add_to_home_screen"
|
||||
android:title="@string/add_to_home_screen"
|
||||
app:showAsAction="never" />
|
||||
|
||||
</menu>
|
|
@ -48,6 +48,10 @@
|
|||
<string name="marked_as_read">Marked as read</string>
|
||||
<string name="marked_as_unread">Marked as unread</string>
|
||||
<string name="removed_bookmark">Removed bookmark</string>
|
||||
<plurals name="remove_n_chapters">
|
||||
<item quantity="one">Remove %1$d downloaded chapter?</item>
|
||||
<item quantity="other">Remove %1$d downloaded chapters?</item>
|
||||
</plurals>
|
||||
<plurals name="chapters">
|
||||
<item quantity="one">%1$d chapter</item>
|
||||
<item quantity="other">%1$d chapters</item>
|
||||
|
@ -335,6 +339,8 @@
|
|||
<string name="custom_range">Custom range</string>
|
||||
<string name="all_chapters">All chapters</string>
|
||||
<string name="all_unread_chapters">All unread chapters</string>
|
||||
<string name="all_read_chapters">All read chapters</string>
|
||||
<string name="all_but_bookmarked_chapters">All but bookmarked chapters</string>
|
||||
<string name="add_x_to_library">Add %1$s to library?</string>
|
||||
<string name="show_all">Show All</string>
|
||||
<string name="show_bookmarked_chapters">Show bookmarked chapters</string>
|
||||
|
@ -527,6 +533,7 @@
|
|||
<string name="download">Download</string>
|
||||
<string name="start_downloading_now">Start downloading now</string>
|
||||
<string name="remove_download">Remove download</string>
|
||||
<string name="remove_downloads">Remove downloads</string>
|
||||
<string name="downloading_progress">Downloading (%1$d/%2$d)</string>
|
||||
<string name="invalid_download_location">Invalid download location</string>
|
||||
<string name="download_paused">Download paused</string>
|
||||
|
|
Reference in a new issue