Do not redownload images for album downloads.

Still not a perfect solution, files with the same name will not get downloaded etc.
This has to wait until a proper album downloader is implemented.
captchafix
Floens 11 years ago
parent 85d12cda39
commit 76c5f2fc6d
  1. 8
      Clover/app/src/main/java/org/floens/chan/core/model/Loadable.java
  2. 14
      Clover/app/src/main/java/org/floens/chan/core/model/Post.java
  3. 11
      Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java
  4. 18
      Clover/app/src/main/java/org/floens/chan/utils/ImageSaver.java

@ -173,13 +173,7 @@ public class Loadable {
}
public void generateTitle(Post post) {
if (!TextUtils.isEmpty(post.subject)) {
title = post.subject;
} else if (!TextUtils.isEmpty(post.comment)) {
title = "/" + post.board + "/ - " + post.comment.subSequence(0, Math.min(post.comment.length(), 100)).toString();
} else {
title = "/" + post.board + "/" + post.no;
}
title = Post.generateTitle(post);
}
public static class Mode {

@ -36,6 +36,20 @@ import java.util.Random;
public class Post {
private static final Random random = new Random();
public static String generateTitle(Post post) {
return generateTitle(post, 100);
}
public static String generateTitle(Post post, int maxLength) {
if (!TextUtils.isEmpty(post.subject)) {
return post.subject;
} else if (!TextUtils.isEmpty(post.comment)) {
return "/" + post.board + "/ - " + post.comment.subSequence(0, Math.min(post.comment.length(), maxLength)).toString();
} else {
return "/" + post.board + "/" + post.no;
}
}
public String board;
public int no = -1;
public int resto = -1;

@ -208,21 +208,18 @@ public class ImageViewActivity extends Activity implements ViewPager.OnPageChang
finish();
return true;
case R.id.action_download_album:
if (adapter.getList().size() > 0) {
List<ImageSaver.DownloadPair> list = new ArrayList<>();
String name = "downloaded";
String folderName = Post.generateTitle(adapter.getList().get(0), 10);
String filename;
for (Post post : adapter.getList()) {
filename = (ChanPreferences.getImageSaveOriginalFilename() ? post.tim : post.filename) + "." + post.ext;
list.add(new ImageSaver.DownloadPair(post.imageUrl, filename));
name = post.board + "_" + post.resto;
}
if (list.size() > 0) {
if (!TextUtils.isEmpty(name)) {
ImageSaver.getInstance().saveAll(this, name, list);
}
ImageSaver.getInstance().saveAll(this, folderName, list);
}
return true;

@ -44,24 +44,16 @@ import java.util.concurrent.atomic.AtomicBoolean;
public class ImageSaver {
private static final String TAG = "ImageSaver";
private static final int NOTIFICATION_ID = 1;
private static ImageSaver instance;
private static final ImageSaver instance = new ImageSaver();
public static ImageSaver getInstance() {
return instance;
}
static {
instance = new ImageSaver();
}
private BroadcastReceiver receiver;
public void saveAll(final Context context, String folderName, final List<DownloadPair> list) {
folderName = filterName(folderName);
final File subFolder = findUnused(new File(ChanPreferences.getImageSaveDirectory() + File.separator + folderName), true);
final File subFolder = new File(ChanPreferences.getImageSaveDirectory() + File.separator + filterName(folderName));
String text = context.getString(R.string.download_confirm, Integer.toString(list.size()), subFolder.getAbsolutePath());
@ -146,10 +138,8 @@ public class ImageSaver {
final List<Pair> files = new ArrayList<>(list.size());
for (DownloadPair uri : list) {
String name = filterName(uri.imageName);
// Finding unused filenames won't actually work, because the file doesn't get
// saved right away. The download manager will also prevent if there's a name collision.
File destination = findUnused(new File(subFolder, name), false);
File destination = new File(subFolder, filterName(uri.imageName));
if (destination.exists()) continue;
Pair p = new Pair();
p.uri = Uri.parse(uri.imageUrl);

Loading…
Cancel
Save