diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/controller/DefaultToolController.kt b/Paintroid/src/main/java/org/catrobat/paintroid/controller/DefaultToolController.kt index 5f49fc9bc2..799fd573fd 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/controller/DefaultToolController.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/controller/DefaultToolController.kt @@ -73,14 +73,17 @@ class DefaultToolController( } else if (toolType != ToolType.CLIP) { toolOptionsViewController.removeToolViews() } - if (toolList.contains(toolType)) { + + if (toolsThatUseCheckmark.contains(toolType)) { toolOptionsViewController.showCheckmark() } else { toolOptionsViewController.hideCheckmark() } + if (toolReference.tool?.toolType == ToolType.SPRAY) { (currentTool as SprayTool).resetRadiusToStrokeWidth() } + val tool: Tool = toolFactory.createTool( toolType, toolOptionsViewController, diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/controller/ToolController.kt b/Paintroid/src/main/java/org/catrobat/paintroid/controller/ToolController.kt index a94851e64f..66bf2aa8cd 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/controller/ToolController.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/controller/ToolController.kt @@ -29,7 +29,7 @@ interface ToolController { val toolType: ToolType? val toolColor: Int? val currentTool: Tool? - val toolList: HashSet + val toolsThatUseCheckmark: HashSet get() = hashSetOf( ToolType.TEXT, ToolType.TRANSFORM, diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/dialog/AdvancedSettingsDialog.kt b/Paintroid/src/main/java/org/catrobat/paintroid/dialog/AdvancedSettingsDialog.kt index 3f181ba151..1b111c5ef7 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/dialog/AdvancedSettingsDialog.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/dialog/AdvancedSettingsDialog.kt @@ -8,21 +8,25 @@ import android.view.View import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.SwitchCompat import org.catrobat.paintroid.R +import org.catrobat.paintroid.presenter.MainActivityPresenter.Companion.autoSave import org.catrobat.paintroid.tools.helper.AdvancedSettingsAlgorithms.smoothing import org.catrobat.paintroid.tools.implementation.DefaultToolPaint.Companion.antialiasing class AdvancedSettingsDialog : MainActivityDialogFragment() { private var initValueAntialiasing: Boolean = antialiasing private var initValueSmoothing: Boolean = smoothing + private var initValueAutoSave: Boolean = autoSave @SuppressLint("UseSwitchCompatOrMaterialCode") override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) val antialiasingSwitch = view.findViewById(R.id.pocketpaint_antialiasing) val smoothSwitch = view.findViewById(R.id.pocketpaint_smoothing) + val autoSaveSwitch = view.findViewById(R.id.pocketpaint_auto_save) antialiasingSwitch.isChecked = antialiasing smoothSwitch.isChecked = smoothing + autoSaveSwitch.isChecked = autoSave antialiasingSwitch.setOnCheckedChangeListener { _, isChecked -> antialiasing = isChecked @@ -31,6 +35,10 @@ class AdvancedSettingsDialog : MainActivityDialogFragment() { smoothSwitch?.setOnCheckedChangeListener { _, isChecked -> smoothing = isChecked } + + autoSaveSwitch?.setOnCheckedChangeListener { _, isChecked -> + autoSave = isChecked + } } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { @@ -49,6 +57,7 @@ class AdvancedSettingsDialog : MainActivityDialogFragment() { .setNegativeButton(R.string.cancel_button_text) { _, _ -> antialiasing = initValueAntialiasing smoothing = initValueSmoothing + autoSave = initValueAutoSave dismiss() } .create() @@ -57,6 +66,7 @@ class AdvancedSettingsDialog : MainActivityDialogFragment() { override fun onCancel(dialog: DialogInterface) { antialiasing = initValueAntialiasing smoothing = initValueSmoothing + autoSave = initValueAutoSave super.onCancel(dialog) } } diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/presenter/MainActivityPresenter.kt b/Paintroid/src/main/java/org/catrobat/paintroid/presenter/MainActivityPresenter.kt index 5c8430bfc5..75622d9380 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/presenter/MainActivityPresenter.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/presenter/MainActivityPresenter.kt @@ -95,6 +95,7 @@ import org.catrobat.paintroid.tools.Workspace import org.catrobat.paintroid.tools.implementation.BaseToolWithShape import org.catrobat.paintroid.tools.implementation.CLICK_TIMEOUT_MILLIS import org.catrobat.paintroid.tools.implementation.CONSTANT_3 +import org.catrobat.paintroid.tools.implementation.ClipboardTool import org.catrobat.paintroid.tools.implementation.ClippingTool import org.catrobat.paintroid.tools.implementation.LineTool import org.catrobat.paintroid.tools.implementation.DefaultToolPaint @@ -813,7 +814,7 @@ open class MainActivityPresenter( if (toolController.toolType === toolType && toolController.hasToolOptionsView()) { toolController.toggleToolOptionsView() } else { - checkForImplicitToolApplication() + if (autoSave) checkForImplicitToolApplication() switchTool(toolType) } idlingResource.decrement() @@ -822,7 +823,7 @@ open class MainActivityPresenter( private fun checkForImplicitToolApplication() { val currentTool = toolController.currentTool val currentToolType = currentTool?.toolType - if (toolController.toolList.contains(currentToolType)) { + if (toolController.toolsThatUseCheckmark.contains(currentToolType) || currentTool is ClipboardTool) { val toolToApply = currentTool as BaseToolWithShape toolToApply.onClickOnButton() } else if (currentToolType == ToolType.CLIP) (currentTool as ClippingTool).onClickOnButton() @@ -833,7 +834,7 @@ open class MainActivityPresenter( view.hideKeyboard() downTimer = object : CountDownTimer( - if (toolController.toolList.contains(toolController.currentTool?.toolType)) CLICK_TIMEOUT_MILLIS else 0L, + if (toolController.toolsThatUseCheckmark.contains(toolController.currentTool?.toolType)) CLICK_TIMEOUT_MILLIS else 0L, CLICK_TIMEOUT_MILLIS / CONSTANT_3 ) { override fun onTick(millisUntilFinished: Long) { @@ -1172,6 +1173,8 @@ open class MainActivityPresenter( } companion object { + var autoSave = false + @JvmStatic fun getPathFromUri(context: Context, uri: Uri): String { if (DocumentsContract.isDocumentUri(context, uri)) { diff --git a/Paintroid/src/main/res/layout/dialog_pocketpaint_advanced_settings.xml b/Paintroid/src/main/res/layout/dialog_pocketpaint_advanced_settings.xml index 04b9c068cb..4047b919f4 100644 --- a/Paintroid/src/main/res/layout/dialog_pocketpaint_advanced_settings.xml +++ b/Paintroid/src/main/res/layout/dialog_pocketpaint_advanced_settings.xml @@ -45,4 +45,16 @@ android:textColor="@color/design_default_color_on_secondary" android:theme="@style/CustomSwitchTheme" /> + + + diff --git a/Paintroid/src/main/res/values/string.xml b/Paintroid/src/main/res/values/string.xml index de2ea72fb6..4b7b6aedc3 100644 --- a/Paintroid/src/main/res/values/string.xml +++ b/Paintroid/src/main/res/values/string.xml @@ -167,6 +167,7 @@ Antialiasing Smoothing + Auto-save Enabled 100