From d5c788fe80bf4cc7b0c1dfd710ed721f086c7a5d Mon Sep 17 00:00:00 2001 From: seven332 Date: Sun, 2 Sep 2018 01:25:43 +0800 Subject: [PATCH] Add resetting reading progress --- .../ehviewer/download/DownloadManager.java | 49 +++++++++++++++++++ .../ehviewer/ui/scene/DownloadsScene.java | 11 +++++ app/src/main/res/menu/scene_download.xml | 5 ++ 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 + app/src/main/res/values/strings.xml | 2 + 7 files changed, 73 insertions(+) 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 55655e689..90c2f8266 100644 --- a/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java +++ b/app/src/main/java/com/hippo/ehviewer/download/DownloadManager.java @@ -16,7 +16,9 @@ package com.hippo.ehviewer.download; +import android.annotation.SuppressLint; import android.content.Context; +import android.os.AsyncTask; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.Log; @@ -25,8 +27,11 @@ import com.hippo.ehviewer.EhDB; import com.hippo.ehviewer.client.data.GalleryInfo; import com.hippo.ehviewer.dao.DownloadInfo; import com.hippo.ehviewer.dao.DownloadLabel; +import com.hippo.ehviewer.spider.SpiderDen; +import com.hippo.ehviewer.spider.SpiderInfo; import com.hippo.ehviewer.spider.SpiderQueen; import com.hippo.image.Image; +import com.hippo.unifile.UniFile; import com.hippo.yorozuya.ConcurrentPool; import com.hippo.yorozuya.MathUtils; import com.hippo.yorozuya.ObjectUtils; @@ -35,6 +40,7 @@ import com.hippo.yorozuya.collect.LongList; import com.hippo.yorozuya.collect.SparseIJArray; import com.hippo.yorozuya.collect.SparseJLArray; +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -562,6 +568,49 @@ public class DownloadManager implements SpiderQueen.OnSpiderListener { } } + @SuppressLint("StaticFieldLeak") + public void resetAllReadingProgress() { + LinkedList list = new LinkedList<>(mAllInfoList); + + new AsyncTask() { + @Override + protected Void doInBackground(Void... voids) { + GalleryInfo galleryInfo = new GalleryInfo(); + for (DownloadInfo downloadInfo : list) { + galleryInfo.gid = downloadInfo.gid; + galleryInfo.token = downloadInfo.token; + galleryInfo.title = downloadInfo.title; + galleryInfo.thumb = downloadInfo.thumb; + galleryInfo.category = downloadInfo.category; + galleryInfo.posted = downloadInfo.posted; + galleryInfo.uploader = downloadInfo.uploader; + galleryInfo.rating = downloadInfo.rating; + + UniFile downloadDir = SpiderDen.getGalleryDownloadDir(galleryInfo); + if (downloadDir == null) { + continue; + } + UniFile file = downloadDir.findFile(".ehviewer"); + if (file == null) { + continue; + } + SpiderInfo spiderInfo = SpiderInfo.read(file); + if (spiderInfo == null) { + continue; + } + spiderInfo.startPage = 0; + + try { + spiderInfo.write(file.openOutputStream()); + } catch (IOException e) { + Log.e(TAG, "Can't write SpiderInfo", e); + } + } + return null; + } + }.execute(); + } + // Update in DB // Update listener // No ensureDownload diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java index 38265a0d8..145f34db7 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java @@ -489,6 +489,17 @@ public class DownloadsScene extends ToolbarScene } return true; } + case R.id.action_reset_reading_progress: { + new AlertDialog.Builder(getContext()) + .setMessage(R.string.reset_reading_progress_message) + .setNegativeButton(android.R.string.cancel, null) + .setPositiveButton(android.R.string.ok, (dialog, which) -> { + if (mDownloadManager != null) { + mDownloadManager.resetAllReadingProgress(); + } + }).show(); + return true; + } } return false; } diff --git a/app/src/main/res/menu/scene_download.xml b/app/src/main/res/menu/scene_download.xml index 42edfcb1c..bcab66f8e 100644 --- a/app/src/main/res/menu/scene_download.xml +++ b/app/src/main/res/menu/scene_download.xml @@ -31,4 +31,9 @@ android:title="@string/download_stop_all" app:showAsAction="ifRoom"/> + + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 49eec549d..6aa2b0de9 100755 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -307,6 +307,8 @@ 下载标签 全部开始 全部停止 + 重置阅读进度 + 重置所有已下载画廊的阅读进度? EhViewer 下载服务 %s %1$s,剩余 %2$s diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 66f203a21..6db50111e 100755 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -307,6 +307,8 @@ 下載標籤 全部開始 全部停止 + 重置阅读进度 + 重置所有已下载画廊的阅读进度? EhViewer 下載服務 %s %1$s,剩餘 %2$s diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index e891d61de..2a3716d51 100755 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -307,6 +307,8 @@ 下載標籤 全部開始 全部停止 + 重置閱讀進度 + 重置所有已下載圖庫的閱讀進度? EhViewer 下載服務 %s %1$s,剩餘 %2$s diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 071cc1bcc..389733204 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -351,6 +351,8 @@ Download labels Start all Stop all + Reset reading progress + Reset the reading progress of all downloaded galleries? EhViewer Download Service %s %1$s, %2$s left