From 963484310916b9b55e5dceccfc82ccb19c6e4336 Mon Sep 17 00:00:00 2001 From: seven332 Date: Fri, 26 Feb 2016 22:09:27 +0800 Subject: [PATCH] Add start all download items --- .../ehviewer/download/DownloadManager.java | 44 +++++++++++++++--- .../ehviewer/download/DownloadService.java | 8 +++- .../ehviewer/ui/scene/DownloadScene.java | 26 +++++++++++ .../res/drawable-hdpi/ic_pause_dark_x24.png | Bin 0 -> 106 bytes .../res/drawable-hdpi/ic_play_dark_x24.png | Bin 0 -> 187 bytes .../res/drawable-mdpi/ic_pause_dark_x24.png | Bin 0 -> 86 bytes .../res/drawable-mdpi/ic_play_dark_x24.png | Bin 0 -> 156 bytes .../res/drawable-xhdpi/ic_pause_dark_x24.png | Bin 0 -> 114 bytes .../res/drawable-xhdpi/ic_play_dark_x24.png | Bin 0 -> 213 bytes .../res/drawable-xxhdpi/ic_pause_dark_x24.png | Bin 0 -> 133 bytes .../res/drawable-xxhdpi/ic_play_dark_x24.png | Bin 0 -> 270 bytes app/src/main/res/menu/scene_download.xml | 34 ++++++++++++++ app/src/main/res/values-zh-rCN/strings.xml | 2 +- app/src/main/res/values-zh-rHK/strings.xml | 2 +- app/src/main/res/values-zh-rTW/strings.xml | 2 +- 15 files changed, 106 insertions(+), 12 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_pause_dark_x24.png create mode 100644 app/src/main/res/drawable-hdpi/ic_play_dark_x24.png create mode 100644 app/src/main/res/drawable-mdpi/ic_pause_dark_x24.png create mode 100644 app/src/main/res/drawable-mdpi/ic_play_dark_x24.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_pause_dark_x24.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_play_dark_x24.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_pause_dark_x24.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_play_dark_x24.png create mode 100644 app/src/main/res/menu/scene_download.xml 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 525ac4bed..4eb66f8e2 100644 --- a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java +++ b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java @@ -79,14 +79,16 @@ public class DownloadManager implements SpiderQueen.OnSpiderListener { mLabelList = labels; // Create list for each label - mMap = new HashMap<>(); + HashMap> map = new HashMap<>(); + mMap = map; for (String label : labels) { - mMap.put(label, new LinkedList()); + map.put(label, new LinkedList()); } // Create default for non tag mDefaultInfoList = new LinkedList<>(); // Create all download info map - mAllInfoMap = new SparseArray<>(); + SparseArray allInfoMap = new SparseArray<>(); + mAllInfoMap = allInfoMap; // Fill download info list LazyList lazyList = EhDB.getDownloadInfoLazyList(); @@ -97,15 +99,15 @@ public class DownloadManager implements SpiderQueen.OnSpiderListener { } // Add to all info map - mAllInfoMap.put(info.galleryInfo.gid, info); + allInfoMap.put(info.galleryInfo.gid, info); // Add to list LinkedList list = getInfoListForLabel(info.label); if (list == null) { list = new LinkedList<>(); - mMap.put(info.label, list); - if (!mLabelList.contains(info.label)) { - mLabelList.add(info.label); + map.put(info.label, list); + if (!labels.contains(info.label)) { + labels.add(info.label); } } list.add(info); @@ -267,6 +269,34 @@ public class DownloadManager implements SpiderQueen.OnSpiderListener { } } + void startAllDownload() { + boolean update = false; + // Start all STATE_NONE and STATE_FAILED item + SparseArray allInfoMap = mAllInfoMap; + List waitList = mWaitList; + for (int i = 0, n = allInfoMap.size(); i < n; i++) { + DownloadInfo info = allInfoMap.valueAt(i); + if (info.state == DownloadInfo.STATE_NONE || info.state == DownloadInfo.STATE_FAILED) { + update = true; + // Set state DownloadInfo.STATE_WAIT + info.state = DownloadInfo.STATE_WAIT; + // Add to wait list + waitList.add(info); + // Update in DB + EhDB.updateDownloadInfo(info); + } + } + + if (update) { + // Notify Listener + if (mDownloadInfoListener != null) { + mDownloadInfoListener.onUpdateAll(); + } + // Ensure download + ensureDownload(); + } + } + void stopDownload(int gid) { DownloadInfo info = stopDownloadInternal(gid); if (info != null) { diff --git a/app/src/main/java/com/hippo/ehviewer/download/DownloadService.java b/app/src/main/java/com/hippo/ehviewer/download/DownloadService.java index d2d3e1126..431e74550 100644 --- a/app/src/main/java/com/hippo/ehviewer/download/DownloadService.java +++ b/app/src/main/java/com/hippo/ehviewer/download/DownloadService.java @@ -132,11 +132,15 @@ public class DownloadService extends Service implements DownloadManager.Download } if (ACTION_START.equals(action)) { - GalleryInfo gi= intent.getParcelableExtra(KEY_GALLERY_INFO); + GalleryInfo gi = intent.getParcelableExtra(KEY_GALLERY_INFO); String label = intent.getStringExtra(KEY_LABEL); if (gi != null && mDownloadManager != null) { mDownloadManager.startDownload(gi, label); } + } else if (ACTION_START_ALL.equals(action)) { + if (mDownloadManager != null) { + mDownloadManager.startAllDownload(); + } } else if (ACTION_STOP.equals(action)) { int gid = intent.getIntExtra(KEY_GID, -1); if (gid != -1 && mDownloadManager != null) { @@ -182,7 +186,7 @@ public class DownloadService extends Service implements DownloadManager.Download .setAutoCancel(false) .setCategory(NotificationCompat.CATEGORY_PROGRESS) .setColor(getResources().getColor(R.color.colorPrimary)) - .addAction(R.drawable.ic_stop_x24, getString(R.string.stat_download_action_stop_all), piStopAll); + .addAction(R.drawable.ic_pause_x24, getString(R.string.stat_download_action_stop_all), piStopAll); } private void ensureDownloadedBuilder() { diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadScene.java index 0ff7d1305..3d126f542 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadScene.java @@ -32,6 +32,7 @@ import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.transition.TransitionInflater; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ProgressBar; @@ -191,6 +192,31 @@ public class DownloadScene extends ToolbarScene finish(); } + @Override + public int getMenuResId() { + return R.menu.scene_download; + } + + @Override + public boolean onMenuItemClick(MenuItem item) { + int id = item.getItemId(); + switch (id) { + case R.id.action_start_all: { + Intent intent = new Intent(getActivity(), DownloadService.class); + intent.setAction(DownloadService.ACTION_START_ALL); + getActivity().startService(intent); + return true; + } + case R.id.action_stop_all: { + Intent intent = new Intent(getActivity(), DownloadService.class); + intent.setAction(DownloadService.ACTION_STOP_ALL); + getActivity().startService(intent); + return true; + } + } + return false; + } + @Override public void onDestroyView() { super.onDestroyView(); diff --git a/app/src/main/res/drawable-hdpi/ic_pause_dark_x24.png b/app/src/main/res/drawable-hdpi/ic_pause_dark_x24.png new file mode 100644 index 0000000000000000000000000000000000000000..2efde69c0ae8139d6a4ca8fead54b8ec9e5e5c6e GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;p{I*uNCjiE1LNWZkw5tk4mFQj zc%7Ikjlpbh)aIC{Qzlr>mdKI;Vst0L?@i A+5i9m literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_play_dark_x24.png b/app/src/main/res/drawable-hdpi/ic_play_dark_x24.png new file mode 100644 index 0000000000000000000000000000000000000000..c2bbeedf10441fcefce7528f6285f9b6061fc2a1 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8lc$SgNCo5DDc+1uh5|<>1aNw+ zU{O(EbP0l+XkKZ1g|h literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_pause_dark_x24.png b/app/src/main/res/drawable-mdpi/ic_pause_dark_x24.png new file mode 100644 index 0000000000000000000000000000000000000000..1648532cdc6a22e59fdcca1563cdc0e6d74a81aa GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1Sx*_G30uMl(FXX>A6hIr#Eb`U!c)tb2-LwlX1+!>E*k$J<8;! zF@*7XGh7xrpkD6Da73H4BV0&ey_!N?pu?VN49heW;@laQt323fd(i9qy@d1`GxuHE zQ}1Bjm9VUG_lq+N*Jd|~u&`)ya0CemEMai;5?FHNyyGts*Fwhou9JH2uPNOFbSHzS LtDnm{r-UW|jl@XL literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_pause_dark_x24.png b/app/src/main/res/drawable-xxhdpi/ic_pause_dark_x24.png new file mode 100644 index 0000000000000000000000000000000000000000..ca711d9b3f6886df5f0cf4c2c6155d701721d0aa GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawd^}woLn;{Go(pGeaNuz;T=JMF z)0IIwZ}Ro?(q~mXCtXR{_~!iM-z&SCgYL33fx# + + + + + + + + + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 1d340f628..33bf986f5 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -178,7 +178,7 @@ 等待中 失败 %d 未完成 - 完成 + 已完成 509 警告 图片配额已用尽。请停止下载,休息一下。 下载结束 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index d54ea1ec6..5c136e252 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -178,7 +178,7 @@ 等待中 失敗 %d 未完成 - 完成 + 已完成 509 警告 圖片配額已用盡。請停止下載,休息一下。 下載結束 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 0028338a0..b31e546b8 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -178,7 +178,7 @@ 等待中 失敗 %d 未完成 - 完成 + 已完成 509 警告 圖片配額已用盡。請停止下載,休息一下。 下載結束