diff --git a/Clover/app/src/main/java/org/floens/chan/core/model/Loadable.java b/Clover/app/src/main/java/org/floens/chan/core/model/Loadable.java index 20df6d6f..36e4e79f 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/model/Loadable.java +++ b/Clover/app/src/main/java/org/floens/chan/core/model/Loadable.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 { diff --git a/Clover/app/src/main/java/org/floens/chan/core/model/Post.java b/Clover/app/src/main/java/org/floens/chan/core/model/Post.java index 0038e595..16dac0c4 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/model/Post.java +++ b/Clover/app/src/main/java/org/floens/chan/core/model/Post.java @@ -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; diff --git a/Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java b/Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java index 5f060f6d..8c39e28c 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/activity/ImageViewActivity.java @@ -208,21 +208,18 @@ public class ImageViewActivity extends Activity implements ViewPager.OnPageChang finish(); return true; case R.id.action_download_album: - List list = new ArrayList<>(); + if (adapter.getList().size() > 0) { + List list = new ArrayList<>(); - String name = "downloaded"; - String filename; - for (Post post : adapter.getList()) { - filename = (ChanPreferences.getImageSaveOriginalFilename() ? post.tim : post.filename) + "." + post.ext; - list.add(new ImageSaver.DownloadPair(post.imageUrl, filename)); + String folderName = Post.generateTitle(adapter.getList().get(0), 10); - name = post.board + "_" + post.resto; - } - - if (list.size() > 0) { - if (!TextUtils.isEmpty(name)) { - ImageSaver.getInstance().saveAll(this, name, list); + String filename; + for (Post post : adapter.getList()) { + filename = (ChanPreferences.getImageSaveOriginalFilename() ? post.tim : post.filename) + "." + post.ext; + list.add(new ImageSaver.DownloadPair(post.imageUrl, filename)); } + + ImageSaver.getInstance().saveAll(this, folderName, list); } return true; diff --git a/Clover/app/src/main/java/org/floens/chan/utils/ImageSaver.java b/Clover/app/src/main/java/org/floens/chan/utils/ImageSaver.java index 1360ca5c..b9e9c526 100644 --- a/Clover/app/src/main/java/org/floens/chan/utils/ImageSaver.java +++ b/Clover/app/src/main/java/org/floens/chan/utils/ImageSaver.java @@ -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 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 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);