Setting to save images into a folder named the current board (#211)

multisite
iamzim101 9 years ago committed by Florens
parent 18e0f54fba
commit a250594acd
  1. 7
      Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaveTask.java
  2. 19
      Clover/app/src/main/java/org/floens/chan/core/saver/ImageSaver.java
  3. 4
      Clover/app/src/main/java/org/floens/chan/core/settings/ChanSettings.java
  4. 2
      Clover/app/src/main/java/org/floens/chan/ui/controller/AdvancedSettingsController.java
  5. 1
      Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java
  6. 1
      Clover/app/src/main/res/values/strings.xml

@ -50,9 +50,16 @@ public class ImageSaveTask implements Runnable, FileCache.DownloadedCallback {
private boolean makeBitmap;
private Bitmap bitmap;
private boolean showToast;
private String boardName;
private boolean success = false;
public void setBoardName(String boardName) {this.boardName = boardName;}
public String getBoardName() {
return boardName;
}
public ImageSaveTask(PostImage postImage) {
this.postImage = postImage;
}

@ -43,30 +43,33 @@ 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 NOTIFICATION_ID = 3;
private static final int MAX_NAME_LENGTH = 50;
private static final Pattern REPEATED_UNDERSCORES_PATTERN = Pattern.compile("_+");
private static final Pattern SAFE_CHARACTERS_PATTERN = Pattern.compile("[^a-zA-Z0-9._]");
private static final ImageSaver instance = new ImageSaver();
public static final int MAX_RENAME_TRIES = 500;
private NotificationManager notificationManager;
private ExecutorService executor = Executors.newSingleThreadExecutor();
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);
@ -123,7 +126,11 @@ public class ImageSaver implements ImageSaveTask.ImageSaveTaskCallback {
}
public File getSaveLocation() {
return new File(ChanSettings.saveLocation.get());
if (ChanSettings.saveBoardFolder.get()) {
return new File(ChanSettings.saveLocation.get() + File.separator + boardName);
} else {
return new File(ChanSettings.saveLocation.get());
}
}
@Override

@ -131,6 +131,8 @@ public class ChanSettings {
public static final BooleanSetting neverHideToolbar;
public static final BooleanSetting controllerSwipeable;
public static final BooleanSetting saveBoardFolder;
public static final BooleanSetting watchEnabled;
public static final BooleanSetting watchCountdown;
public static final BooleanSetting watchBackground;
@ -227,6 +229,8 @@ public class ChanSettings {
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);
watchEnabled = new BooleanSetting(p, "preference_watch_enabled", false);
watchEnabled.addCallback(new Setting.SettingCallback<Boolean>() {
@Override

@ -105,6 +105,8 @@ 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);

@ -231,6 +231,7 @@ public class ImageViewerController extends Controller implements ImageViewerPres
} else {
ImageSaveTask task = new ImageSaveTask(postImage);
task.setShare(share);
task.setBoardName(presenter.getLoadable().board);
ImageSaver.getInstance().startDownloadTask(context, task);
}
}

@ -411,6 +411,7 @@ Re-enable this permission in the app settings if you permanently disabled it."</
<string name="setting_use_new_captcha">Use the new captcha</string>
<string name="setting_use_new_captcha_description">Enable to use the newer recaptcha.</string>
<string name="setting_save_original_filename">Save original filename</string>
<string name="setting_save_board_folder">Save in board folder</string>
<string name="setting_share_url">Share url to image</string>
<string name="setting_share_url_description">Share the url to the image instead of the image itself</string>
<string name="setting_network_https">Use HTTPS</string>

Loading…
Cancel
Save