From 7779ba2ac590b075ab27aa3ddfcf620242456958 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Thu, 12 Jan 2023 14:57:36 +0800 Subject: [PATCH] Add "All" in download labels Resolve #412 --- .../ehviewer/download/DownloadManager.java | 5 ++++ .../hippo/ehviewer/ui/scene/DownloadsScene.kt | 29 ++++++++++++------- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java index 91772b024..3649f3abf 100644 --- a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java +++ b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java @@ -158,6 +158,11 @@ public class DownloadManager implements SpiderQueen.OnSpiderListener { return mLabelList; } + @NonNull + public List getAllDownloadInfoList() { + return mAllInfoList; + } + @NonNull public List getDefaultDownloadInfoList() { return mDefaultInfoList; diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt index 130a2b1cc..6e373c8f1 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.kt @@ -111,7 +111,8 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe private fun initLabels() { context ?: return val listLabel = downloadManager.labelList - mLabels = ArrayList(listLabel.size + 1) + mLabels = ArrayList(listLabel.size + 2) + mLabels.add(getString(R.string.download_all)) // Add default label name mLabels.add(getString(R.string.default_download_label_name)) for ((_, label) in listLabel) { @@ -184,12 +185,14 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe } var list: MutableList? if (mLabel == null) { + list = mDownloadManager!!.allDownloadInfoList + } else if (mLabel == getString(R.string.default_download_label_name)) { list = mDownloadManager!!.defaultDownloadInfoList } else { list = mDownloadManager!!.getLabelDownloadInfoList(mLabel) if (list == null) { mLabel = null - list = mDownloadManager!!.defaultDownloadInfoList + list = mDownloadManager!!.allDownloadInfoList } } if (mType != -1) { @@ -212,7 +215,7 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe setTitle( getString( R.string.scene_download_title, - if (mLabel != null) mLabel else getString(R.string.default_download_label_name) + if (mLabel != null) mLabel else getString(R.string.download_all) ) ) } @@ -826,10 +829,16 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe } var list: List? = null if (mDownloadManager != null) { - list = if (position == 0) { - mDownloadManager!!.defaultDownloadInfoList - } else { - mDownloadManager!!.getLabelDownloadInfoList(label) + list = when (position) { + 0 -> { + mDownloadManager!!.allDownloadInfoList + } + 1 -> { + mDownloadManager!!.defaultDownloadInfoList + } + else -> { + mDownloadManager!!.getLabelDownloadInfoList(label) + } } } if (list != null) { @@ -837,7 +846,7 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe } else { holder.label.text = label } - if (position > 0) { + if (position > 1) { holder.edit.visibility = View.VISIBLE holder.option.visibility = View.VISIBLE } else { @@ -847,7 +856,7 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe } override fun getItemId(position: Int): Long { - return mLabels[position].hashCode().toLong() + return (if (position <= 1) position else mLabels[position].hashCode()).toLong() } override fun getItemCount(): Int { @@ -1169,7 +1178,7 @@ class DownloadsScene : BaseToolbarScene(), DownloadInfoListener, OnClickFabListe override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { val position = viewHolder.bindingAdapterPosition if (mDownloadManager == null) return - if (position == 0) { + if (position <= 1) { mLabelAdapter!!.notifyItemChanged(position) return }