diff --git a/Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaveTask.java b/Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaveTask.java index 523541e7..9a2a23d5 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaveTask.java +++ b/Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaveTask.java @@ -50,14 +50,16 @@ public class ImageSaveTask implements Runnable, FileCache.DownloadedCallback { private boolean makeBitmap; private Bitmap bitmap; private boolean showToast; - private String boardName; + private String subFolder; private boolean success = false; - public void setBoardName(String boardName) {this.boardName = boardName;} + public void setSubFolder(String boardName) { + this.subFolder = boardName; + } - public String getBoardName() { - return boardName; + public String getSubFolder() { + return subFolder; } public ImageSaveTask(PostImage postImage) { diff --git a/Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaver.java b/Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaver.java index 99b69c16..f075a164 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaver.java +++ b/Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaver.java @@ -43,8 +43,8 @@ import static org.floens.chan.utils.AndroidUtils.getAppContext; import static org.floens.chan.utils.AndroidUtils.getString; public class ImageSaver implements ImageSaveTask.ImageSaveTaskCallback { - public static final int MAX_RENAME_TRIES = 500; private static final String TAG = "ImageSaver"; + private static final int MAX_RENAME_TRIES = 500; private static final int NOTIFICATION_ID = 3; private static final int MAX_NAME_LENGTH = 50; private static final Pattern REPEATED_UNDERSCORES_PATTERN = Pattern.compile("_+"); @@ -55,25 +55,21 @@ public class ImageSaver implements ImageSaveTask.ImageSaveTaskCallback { private int doneTasks = 0; private int totalTasks = 0; private Toast toast; - private String boardName; + public static ImageSaver getInstance() { + return instance; + } private ImageSaver() { EventBus.getDefault().register(this); notificationManager = (NotificationManager) getAppContext().getSystemService(Context.NOTIFICATION_SERVICE); } - public static ImageSaver getInstance() { - return instance; - } - public void startDownloadTask(Context context, final ImageSaveTask task) { - - boardName = task.getBoardName(); PostImage postImage = task.getPostImage(); String name = ChanSettings.saveOriginalFilename.get() ? postImage.originalName : postImage.filename; String fileName = filterName(name + "." + postImage.extension); - task.setDestination(findUnusedFileName(new File(getSaveLocation(), fileName), false)); + task.setDestination(findUnusedFileName(new File(getSaveLocation(task), fileName), false)); // task.setMakeBitmap(true); task.setShowToast(true); @@ -125,11 +121,13 @@ public class ImageSaver implements ImageSaveTask.ImageSaveTaskCallback { return filtered; } - public File getSaveLocation() { - if (ChanSettings.saveBoardFolder.get()) { - return new File(ChanSettings.saveLocation.get() + File.separator + boardName); + public File getSaveLocation(ImageSaveTask task) { + String base = ChanSettings.saveLocation.get(); + String boardName = task.getSubFolder(); + if (boardName != null) { + return new File(base + File.separator + boardName); } else { - return new File(ChanSettings.saveLocation.get()); + return new File(base); } } @@ -165,7 +163,7 @@ public class ImageSaver implements ImageSaveTask.ImageSaveTaskCallback { for (ImageSaveTask task : tasks) { PostImage postImage = task.getPostImage(); String fileName = filterName(postImage.originalName + "." + postImage.extension); - task.setDestination(new File(getSaveLocation() + File.separator + subFolder + File.separator + fileName)); + task.setDestination(new File(getSaveLocation(task) + File.separator + subFolder + File.separator + fileName)); startTask(task); } diff --git a/Clover/app/src/main/java/org/floens/chan/core/settings/ChanSettings.java b/Clover/app/src/main/java/org/floens/chan/core/settings/ChanSettings.java index e8f2af2c..715491cf 100644 --- a/Clover/app/src/main/java/org/floens/chan/core/settings/ChanSettings.java +++ b/Clover/app/src/main/java/org/floens/chan/core/settings/ChanSettings.java @@ -130,7 +130,6 @@ public class ChanSettings { public static final BooleanSetting postFilename; public static final BooleanSetting neverHideToolbar; public static final BooleanSetting controllerSwipeable; - public static final BooleanSetting saveBoardFolder; public static final BooleanSetting watchEnabled; @@ -228,8 +227,7 @@ public class ChanSettings { postFilename = new BooleanSetting(p, "preference_post_filename", false); neverHideToolbar = new BooleanSetting(p, "preference_never_hide_toolbar", false); controllerSwipeable = new BooleanSetting(p, "preference_controller_swipeable", true); - - saveBoardFolder = new BooleanSetting(p, "preference_save_subboard", true); + saveBoardFolder = new BooleanSetting(p, "preference_save_subboard", false); watchEnabled = new BooleanSetting(p, "preference_watch_enabled", false); watchEnabled.addCallback(new Setting.SettingCallback() { diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/AdvancedSettingsController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/AdvancedSettingsController.java index c94e7e2f..5b62993b 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/AdvancedSettingsController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/AdvancedSettingsController.java @@ -105,8 +105,6 @@ public class AdvancedSettingsController extends SettingsController { settings.add(new BooleanSettingView(this, ChanSettings.postFilename, R.string.setting_post_filename, 0)); neverHideToolbar = settings.add(new BooleanSettingView(this, ChanSettings.neverHideToolbar, R.string.setting_never_hide_toolbar, 0)); - settings.add(new BooleanSettingView(this, ChanSettings.saveBoardFolder, R.string.setting_save_board_folder, 0)); - groups.add(settings); SettingsGroup proxy = new SettingsGroup(R.string.settings_group_proxy); diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java index ed32cbf4..862bb50e 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java @@ -231,7 +231,9 @@ public class ImageViewerController extends Controller implements ImageViewerPres } else { ImageSaveTask task = new ImageSaveTask(postImage); task.setShare(share); - task.setBoardName(presenter.getLoadable().board); + if (ChanSettings.saveBoardFolder.get()) { + task.setSubFolder(presenter.getLoadable().board); + } ImageSaver.getInstance().startDownloadTask(context, task); } } diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java index 1b7e06df..cce54c56 100644 --- a/Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java +++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/MainSettingsController.java @@ -272,6 +272,7 @@ public class MainSettingsController extends SettingsController implements Toolba } })); setSaveLocationDescription(); + browsing.add(new BooleanSettingView(this, ChanSettings.saveBoardFolder, R.string.setting_save_board_folder, R.string.setting_save_board_folder_description)); browsing.add(new BooleanSettingView(this, ChanSettings.openLinkConfirmation, R.string.setting_open_link_confirmation, 0)); browsing.add(new BooleanSettingView(this, ChanSettings.autoRefreshThread, R.string.setting_auto_refresh_thread, 0)); diff --git a/Clover/app/src/main/res/values/strings.xml b/Clover/app/src/main/res/values/strings.xml index d108e51a..19d2c7e4 100644 --- a/Clover/app/src/main/res/values/strings.xml +++ b/Clover/app/src/main/res/values/strings.xml @@ -411,7 +411,8 @@ Re-enable this permission in the app settings if you permanently disabled it."Use the new captcha Enable to use the newer recaptcha. Save original filename - Save in board folder + Save images in a board folder + Create a folder for each board to store images in Share url to image Share the url to the image instead of the image itself Use HTTPS