From f41f8cc0cb6a453c5f35f59479a46f322274ede2 Mon Sep 17 00:00:00 2001 From: Julian Raphael Jautz Date: Thu, 14 Dec 2023 16:52:23 +0100 Subject: [PATCH] PAINTROID_697_save_catrobat_image_in_separate_folder changing storage folder --- .../src/main/java/org/catrobat/paintroid/FileIO.kt | 4 ++-- .../command/serialization/CommandSerializer.kt | 10 +++++----- .../java/org/catrobat/paintroid/common/Constants.kt | 3 ++- .../iotasks/OpenRasterFileFormatConversion.kt | 5 +++-- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/FileIO.kt b/Paintroid/src/main/java/org/catrobat/paintroid/FileIO.kt index 864f069b0c..7ddade20b3 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/FileIO.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/FileIO.kt @@ -41,7 +41,7 @@ import androidx.exifinterface.media.ExifInterface import id.zelory.compressor.Compressor import org.catrobat.paintroid.command.serialization.CommandSerializer import org.catrobat.paintroid.common.CATROBAT_IMAGE_ENDING -import org.catrobat.paintroid.common.Constants.DOWNLOADS_DIRECTORY +import org.catrobat.paintroid.common.Constants.ANDROID_DIRECTORY import org.catrobat.paintroid.common.Constants.PICTURES_DIRECTORY import org.catrobat.paintroid.common.MAX_LAYERS import org.catrobat.paintroid.common.TEMP_IMAGE_DIRECTORY_NAME @@ -437,7 +437,7 @@ object FileIO { val contentUri = MediaStore.Downloads.EXTERNAL_CONTENT_URI getUriForFilename(contentUri, filename, resolver) } else { - val file = File(DOWNLOADS_DIRECTORY, filename) + val file = File(ANDROID_DIRECTORY, filename) return if (file.exists()) { Uri.fromFile(file) } else { diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/command/serialization/CommandSerializer.kt b/Paintroid/src/main/java/org/catrobat/paintroid/command/serialization/CommandSerializer.kt index 13a0df7452..9c1ba96eef 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/command/serialization/CommandSerializer.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/command/serialization/CommandSerializer.kt @@ -30,7 +30,6 @@ import android.graphics.RectF import android.graphics.Bitmap import android.net.Uri import android.os.Build -import android.os.Environment import android.provider.MediaStore import com.esotericsoftware.kryo.Kryo import com.esotericsoftware.kryo.io.Input @@ -63,7 +62,8 @@ import org.catrobat.paintroid.command.implementation.SprayCommand import org.catrobat.paintroid.command.implementation.ClipboardCommand import org.catrobat.paintroid.command.implementation.TextToolCommand import org.catrobat.paintroid.command.implementation.SmudgePathCommand -import org.catrobat.paintroid.common.Constants.DOWNLOADS_DIRECTORY +import org.catrobat.paintroid.common.CATROBAT_IMAGE_STORAGE +import org.catrobat.paintroid.common.Constants.ANDROID_DIRECTORY import org.catrobat.paintroid.common.SPECIFIC_FILETYPE_SHARED_PREFERENCES_NAME import org.catrobat.paintroid.iotasks.OpenRasterFileFormatConversion import org.catrobat.paintroid.contract.MainActivityContracts @@ -163,7 +163,7 @@ open class CommandSerializer(private val activityContext: Context, private val c if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { val contentValues = ContentValues().apply { put(MediaStore.Images.Media.DISPLAY_NAME, fileName) - put(MediaStore.Images.Media.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS) + put(MediaStore.Images.Media.RELATIVE_PATH, CATROBAT_IMAGE_STORAGE) } contentResolver.insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI, contentValues)?.let { uri -> contentResolver.openOutputStream(uri)?.use { stream -> @@ -172,10 +172,10 @@ open class CommandSerializer(private val activityContext: Context, private val c } } } else { - if (!(DOWNLOADS_DIRECTORY.exists() || DOWNLOADS_DIRECTORY.mkdirs())) { + if (!(ANDROID_DIRECTORY.exists() || ANDROID_DIRECTORY.mkdirs())) { return null } - val imageFile = File(DOWNLOADS_DIRECTORY, fileName) + val imageFile = File(ANDROID_DIRECTORY, fileName) FileOutputStream(imageFile).use { fileStream -> writeToStream(fileStream) returnUri = Uri.fromFile(imageFile) diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/common/Constants.kt b/Paintroid/src/main/java/org/catrobat/paintroid/common/Constants.kt index 19b121b8b4..e8f833ebf1 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/common/Constants.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/common/Constants.kt @@ -61,10 +61,11 @@ const val TEMP_IMAGE_PATH = "$TEMP_IMAGE_DIRECTORY_NAME/$TEMP_IMAGE_NAME.$CATROB const val TEMP_IMAGE_TEMP_PATH = "$TEMP_IMAGE_DIRECTORY_NAME/${TEMP_IMAGE_NAME}1.$CATROBAT_IMAGE_ENDING" const val SPECIFIC_FILETYPE_SHARED_PREFERENCES_NAME = "Ownfiletypepreferences" const val ANIMATION_DURATION: Long = 250 +const val CATROBAT_IMAGE_STORAGE = "Android/media/org.catrobat.paintroid" object Constants { @JvmField val PICTURES_DIRECTORY = File(Environment.getExternalStorageDirectory(), Environment.DIRECTORY_PICTURES) @JvmField - val DOWNLOADS_DIRECTORY = File(Environment.getExternalStorageDirectory(), Environment.DIRECTORY_DOWNLOADS) + val ANDROID_DIRECTORY = File(Environment.getExternalStorageDirectory(), CATROBAT_IMAGE_STORAGE) } diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/iotasks/OpenRasterFileFormatConversion.kt b/Paintroid/src/main/java/org/catrobat/paintroid/iotasks/OpenRasterFileFormatConversion.kt index f197ee83df..3f515d875b 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/iotasks/OpenRasterFileFormatConversion.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/iotasks/OpenRasterFileFormatConversion.kt @@ -32,6 +32,7 @@ import android.provider.MediaStore import android.util.Log import org.catrobat.paintroid.FileIO.enableAlpha import org.catrobat.paintroid.MainActivity +import org.catrobat.paintroid.common.CATROBAT_IMAGE_STORAGE import org.catrobat.paintroid.contract.LayerContracts import org.catrobat.paintroid.model.Layer import java.io.ByteArrayOutputStream @@ -93,11 +94,11 @@ class OpenRasterFileFormatConversion private constructor() { val bitmapThumbArray = bosThumb.toByteArray() if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { contentValues.put(MediaStore.Files.FileColumns.DISPLAY_NAME, fileName) - contentValues.put(MediaStore.Files.FileColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS) + contentValues.put(MediaStore.Files.FileColumns.RELATIVE_PATH, CATROBAT_IMAGE_STORAGE) contentValues.put(MediaStore.Files.FileColumns.MIME_TYPE, "application/applefile") imageUri = resolver?.insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI, contentValues) } else { - val imageRoot = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + val imageRoot = Environment.getExternalStoragePublicDirectory(CATROBAT_IMAGE_STORAGE) if (!imageRoot.exists() && !imageRoot.mkdirs()) { imageRoot.mkdirs() }