Add resetting reading progress
This commit is contained in:
1 parent
021fe45c8d
commit
d5c788fe80
7 files changed
+73
No files matched your search
@@ -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<DownloadInfo> list = new LinkedList<>(mAllInfoList);
|
||||
|
||||
new AsyncTask<Void, Void, Void>() {
|
||||
@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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user