fix #82, notify the user when overwriting an existing file
This commit is contained in:
parent
c66256fbae
commit
d2cec078d3
|
@ -305,15 +305,38 @@ class MainActivity : SimpleActivity(), CanvasListener {
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun saveImage() {
|
private fun saveImage() {
|
||||||
SaveImageDialog(this, defaultExtension, defaultPath, defaultFilename, my_canvas) { path, extension ->
|
SaveImageDialog(this, defaultExtension, defaultPath, defaultFilename) {
|
||||||
defaultPath = File(path).parent
|
saveFile(it)
|
||||||
defaultFilename = path.getFilenameFromPath()
|
defaultPath = it.getParentPath()
|
||||||
|
defaultFilename = it.getFilenameFromPath()
|
||||||
defaultFilename = defaultFilename.substring(0, defaultFilename.lastIndexOf("."))
|
defaultFilename = defaultFilename.substring(0, defaultFilename.lastIndexOf("."))
|
||||||
defaultExtension = extension
|
defaultExtension = it.getFilenameExtension()
|
||||||
config.lastSaveFolder = defaultPath
|
config.lastSaveFolder = defaultPath
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun saveFile(path: String) {
|
||||||
|
when (path.getFilenameExtension()) {
|
||||||
|
SVG -> Svg.saveSvg(this, path, my_canvas)
|
||||||
|
else -> saveImageFile(path)
|
||||||
|
}
|
||||||
|
scanPath(path) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun saveImageFile(path: String) {
|
||||||
|
val fileDirItem = FileDirItem(path, path.getFilenameFromPath())
|
||||||
|
getFileOutputStream(fileDirItem, true) {
|
||||||
|
writeToOutputStream(path, it!!)
|
||||||
|
toast(R.string.file_saved)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun writeToOutputStream(path: String, out: OutputStream) {
|
||||||
|
out.use {
|
||||||
|
my_canvas.getBitmap().compress(path.getCompressionFormat(), 70, out)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun shareImage() {
|
private fun shareImage() {
|
||||||
getImagePath(my_canvas.getBitmap()) {
|
getImagePath(my_canvas.getBitmap()) {
|
||||||
if (it != null) {
|
if (it != null) {
|
||||||
|
|
|
@ -2,22 +2,18 @@ package com.simplemobiletools.draw.dialogs
|
||||||
|
|
||||||
import android.support.v7.app.AlertDialog
|
import android.support.v7.app.AlertDialog
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
|
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||||
import com.simplemobiletools.commons.dialogs.FilePickerDialog
|
import com.simplemobiletools.commons.dialogs.FilePickerDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.models.FileDirItem
|
|
||||||
import com.simplemobiletools.draw.R
|
import com.simplemobiletools.draw.R
|
||||||
import com.simplemobiletools.draw.activities.SimpleActivity
|
import com.simplemobiletools.draw.activities.SimpleActivity
|
||||||
import com.simplemobiletools.draw.helpers.JPG
|
import com.simplemobiletools.draw.helpers.JPG
|
||||||
import com.simplemobiletools.draw.helpers.PNG
|
import com.simplemobiletools.draw.helpers.PNG
|
||||||
import com.simplemobiletools.draw.helpers.SVG
|
import com.simplemobiletools.draw.helpers.SVG
|
||||||
import com.simplemobiletools.draw.models.Svg
|
|
||||||
import com.simplemobiletools.draw.views.MyCanvas
|
|
||||||
import kotlinx.android.synthetic.main.dialog_save_image.view.*
|
import kotlinx.android.synthetic.main.dialog_save_image.view.*
|
||||||
import java.io.File
|
|
||||||
import java.io.OutputStream
|
|
||||||
|
|
||||||
class SaveImageDialog(val activity: SimpleActivity, val defaultExtension: String, val defaultPath: String, val defaultFilename: String,
|
class SaveImageDialog(val activity: SimpleActivity, val defaultExtension: String, val defaultPath: String, val defaultFilename: String,
|
||||||
val canvas: MyCanvas, callback: (path: String, extension: String) -> Unit) {
|
callback: (savePath: String) -> Unit) {
|
||||||
private val SIMPLE_DRAW = "Simple Draw"
|
private val SIMPLE_DRAW = "Simple Draw"
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
@ -65,46 +61,21 @@ class SaveImageDialog(val activity: SimpleActivity, val defaultExtension: String
|
||||||
return@setOnClickListener
|
return@setOnClickListener
|
||||||
}
|
}
|
||||||
|
|
||||||
if (saveFile(newPath)) {
|
if (activity.getDoesFilePathExist(newPath)) {
|
||||||
callback(newPath, extension)
|
val title = String.format(activity.getString(R.string.file_already_exists_overwrite), newPath.getFilenameFromPath())
|
||||||
dismiss()
|
ConfirmationDialog(activity, title) {
|
||||||
|
callback(newPath)
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
activity.toast(R.string.unknown_error_occurred)
|
callback(newPath)
|
||||||
|
dismiss()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun saveFile(path: String): Boolean {
|
|
||||||
if (!activity.getDoesFilePathExist(path.getParentPath())) {
|
|
||||||
if (!File(path).parentFile.mkdir()) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
when (path.getFilenameExtension()) {
|
|
||||||
SVG -> Svg.saveSvg(activity, path, canvas)
|
|
||||||
else -> saveImageFile(path)
|
|
||||||
}
|
|
||||||
activity.scanPath(path) {}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun saveImageFile(path: String) {
|
|
||||||
val fileDirItem = FileDirItem(path, path.getFilenameFromPath())
|
|
||||||
activity.getFileOutputStream(fileDirItem, true) {
|
|
||||||
writeToOutputStream(path, it!!)
|
|
||||||
activity.toast(R.string.file_saved)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun writeToOutputStream(path: String, out: OutputStream) {
|
|
||||||
out.use {
|
|
||||||
canvas.getBitmap().compress(path.getCompressionFormat(), 70, out)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun getInitialFilename(): String {
|
private fun getInitialFilename(): String {
|
||||||
val newFilename = "image_${activity.getCurrentFormattedDateTime()}"
|
val newFilename = "image_${activity.getCurrentFormattedDateTime()}"
|
||||||
return if (defaultFilename.isEmpty()) newFilename else defaultFilename
|
return if (defaultFilename.isEmpty()) newFilename else defaultFilename
|
||||||
|
|
Loading…
Reference in New Issue