diff --git a/Paintroid/src/androidTest/java/org/catrobat/paintroid/test/espresso/dialog/ColorDialogIntegrationTest.java b/Paintroid/src/androidTest/java/org/catrobat/paintroid/test/espresso/dialog/ColorDialogIntegrationTest.java index d284024915..f0882437c5 100644 --- a/Paintroid/src/androidTest/java/org/catrobat/paintroid/test/espresso/dialog/ColorDialogIntegrationTest.java +++ b/Paintroid/src/androidTest/java/org/catrobat/paintroid/test/espresso/dialog/ColorDialogIntegrationTest.java @@ -142,8 +142,9 @@ public void testTabsAreSelectable() { } @Test - public void dontShowAlphaSliderFromCatrobat() { + public void dontShowAlphaRelatedStuffFromCatroidFormulaEditor() { launchActivityRule.getActivity().model.setOpenedFromCatroid(true); + launchActivityRule.getActivity().model.setOpenedFromFormulaEditorInCatroid(true); onColorPickerView() .performOpenColorPicker(); @@ -161,10 +162,52 @@ public void dontShowAlphaSliderFromCatrobat() { onView(withId(R.id.color_alpha_slider)) .check(matches(not(isDisplayed()))); + + onColorPickerView() + .onPositiveButton() + .perform(click()); + + int currentSelectColor = toolReference.getTool().getDrawPaint().getColor(); + + onColorPickerView() + .performOpenColorPicker(); + + onView(allOf(withId(R.id.color_picker_tab_icon), withBackground(R.drawable.ic_color_picker_tab_rgba))).perform(click()); + + onView(withId(R.id.color_picker_base_layout)) + .perform(swipeUp()); + + onView(withId(R.id.color_picker_alpha_row)) + .check(matches(not(isDisplayed()))); + + onView(withId(R.id.color_picker_color_rgb_hex)) + .check(matches(withText(String.format("#%02X%02X%02X", Color.red(currentSelectColor), Color.green(currentSelectColor), Color.blue(currentSelectColor))))); } @Test - public void showAlphaSliderIfNotCatrobatFlagSet() { + public void showAlphaSliderFromCatroid() { + launchActivityRule.getActivity().model.setOpenedFromCatroid(true); + + onColorPickerView() + .performOpenColorPicker(); + + onView(withId(R.id.color_picker_base_layout)) + .perform(swipeUp()); + + onView(withId(R.id.color_alpha_slider)) + .check(matches(isDisplayed())); + + onView(allOf(withId(R.id.color_picker_tab_icon), withBackground(R.drawable.ic_color_picker_tab_hsv))).perform(click()); + + onView(withId(R.id.color_picker_base_layout)) + .perform(swipeUp()); + + onView(withId(R.id.color_alpha_slider)) + .check(matches(isDisplayed())); + } + + @Test + public void showAlphaSliderIfNotCatroidFlagSet() { onColorPickerView() .performOpenColorPicker(); @@ -682,6 +725,9 @@ public void alphaValueIsSetInSliderWhenChangedInSeekBar() { // set color to value #7F000000, alpha seekbar 49% onView(withId(R.id.color_picker_color_rgb_seekbar_alpha)).perform(touchCenterMiddle()); onView(allOf(withId(R.id.color_picker_tab_icon), withBackground(R.drawable.ic_color_picker_tab_preset))).perform(scrollTo(), click()); + onColorPickerView() + .onPositiveButton() + .perform(click()); onToolProperties() .checkMatchesColor(Color.parseColor("#7F000000")); } diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/MainActivity.kt b/Paintroid/src/main/java/org/catrobat/paintroid/MainActivity.kt index 16095c26d9..b22a4f9b4d 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/MainActivity.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/MainActivity.kt @@ -1,6 +1,6 @@ /* * Paintroid: An image manipulation application for Android. - * Copyright (C) 2010-2021 The Catrobat Team + * Copyright (C) 2010-2022 The Catrobat Team * () * * This program is free software: you can redistribute it and/or modify @@ -134,6 +134,8 @@ class MainActivity : AppCompatActivity(), MainView, CommandListener { private const val IS_FULLSCREEN_KEY = "isFullscreen" private const val IS_SAVED_KEY = "isSaved" private const val IS_OPENED_FROM_CATROID_KEY = "isOpenedFromCatroid" + private const val IS_OPENED_FROM_FORMULA_EDITOR_IN_CATROID_KEY = + "isOpenedFromFormulaEditorInCatroid" private const val WAS_INITIAL_ANIMATION_PLAYED = "wasInitialAnimationPlayed" private const val SAVED_PICTURE_URI_KEY = "savedPictureUri" private const val CAMERA_IMAGE_URI_KEY = "cameraImageUri" @@ -261,12 +263,15 @@ class MainActivity : AppCompatActivity(), MainView, CommandListener { val isSaved = savedInstanceState.getBoolean(IS_SAVED_KEY, false) val isOpenedFromCatroid = savedInstanceState.getBoolean(IS_OPENED_FROM_CATROID_KEY, false) + val isOpenedFromFormulaEditorInCatroid = savedInstanceState.getBoolean( + IS_OPENED_FROM_FORMULA_EDITOR_IN_CATROID_KEY, false + ) val wasInitialAnimationPlayed = savedInstanceState.getBoolean(WAS_INITIAL_ANIMATION_PLAYED, false) val savedPictureUri = savedInstanceState.getParcelable(SAVED_PICTURE_URI_KEY) val cameraImageUri = savedInstanceState.getParcelable(CAMERA_IMAGE_URI_KEY) presenterMain.restoreState( - isFullscreen, isSaved, isOpenedFromCatroid, + isFullscreen, isSaved, isOpenedFromCatroid, isOpenedFromFormulaEditorInCatroid, wasInitialAnimationPlayed, savedPictureUri, cameraImageUri ) } @@ -522,6 +527,10 @@ class MainActivity : AppCompatActivity(), MainView, CommandListener { putBoolean(IS_FULLSCREEN_KEY, model.isFullscreen) putBoolean(IS_SAVED_KEY, model.isSaved) putBoolean(IS_OPENED_FROM_CATROID_KEY, model.isOpenedFromCatroid) + putBoolean( + IS_OPENED_FROM_FORMULA_EDITOR_IN_CATROID_KEY, + model.isOpenedFromFormulaEditorInCatroid + ) putBoolean(WAS_INITIAL_ANIMATION_PLAYED, model.wasInitialAnimationPlayed()) putParcelable(SAVED_PICTURE_URI_KEY, model.savedPictureUri) putParcelable(CAMERA_IMAGE_URI_KEY, model.cameraImageUri) diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/contract/LayerContracts.kt b/Paintroid/src/main/java/org/catrobat/paintroid/contract/LayerContracts.kt index de47e80f41..d665233496 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/contract/LayerContracts.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/contract/LayerContracts.kt @@ -87,6 +87,8 @@ interface LayerContracts { fun setMergable() + fun isSelected(): Boolean + fun setCheckBox(setTo: Boolean) } diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/contract/MainActivityContracts.kt b/Paintroid/src/main/java/org/catrobat/paintroid/contract/MainActivityContracts.kt index 2f90de5fd8..2e3daede4a 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/contract/MainActivityContracts.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/contract/MainActivityContracts.kt @@ -1,6 +1,6 @@ /* * Paintroid: An image manipulation application for Android. - * Copyright (C) 2010-2021 The Catrobat Team + * Copyright (C) 2010-2022 The Catrobat Team * () * * This program is free software: you can redistribute it and/or modify @@ -178,6 +178,7 @@ interface MainActivityContracts { isFullscreen: Boolean, isSaved: Boolean, isOpenedFromCatroid: Boolean, + isOpenedFromFormulaEditorInCatroid: Boolean, wasInitialAnimationPlayed: Boolean, savedPictureUri: Uri?, cameraImageUri: Uri? @@ -298,6 +299,7 @@ interface MainActivityContracts { var isSaved: Boolean var isFullscreen: Boolean var isOpenedFromCatroid: Boolean + var isOpenedFromFormulaEditorInCatroid: Boolean fun wasInitialAnimationPlayed(): Boolean diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/model/MainActivityModel.kt b/Paintroid/src/main/java/org/catrobat/paintroid/model/MainActivityModel.kt index 21870476bc..45b5658e9f 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/model/MainActivityModel.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/model/MainActivityModel.kt @@ -1,6 +1,6 @@ /* * Paintroid: An image manipulation application for Android. - * Copyright (C) 2010-2021 The Catrobat Team + * Copyright (C) 2010-2022 The Catrobat Team * () * * This program is free software: you can redistribute it and/or modify @@ -24,6 +24,7 @@ import org.catrobat.paintroid.contract.MainActivityContracts class MainActivityModel : MainActivityContracts.Model { private var wasInitialAnimationPlayed = false override var isOpenedFromCatroid = false + override var isOpenedFromFormulaEditorInCatroid = false override var isFullscreen = false override var isSaved = false override var savedPictureUri: Uri? = null diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/presenter/LayerPresenter.kt b/Paintroid/src/main/java/org/catrobat/paintroid/presenter/LayerPresenter.kt index 60f645a2eb..1b6a56f405 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/presenter/LayerPresenter.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/presenter/LayerPresenter.kt @@ -260,4 +260,14 @@ class LayerPresenter( adapter?.notifyDataSetChanged() listItemLongClickHandler.stopDragging() } + + fun resetMergeColor(layerPosition: Int) { + if (adapter != null && adapter?.getViewHolderAt(layerPosition) != null) { + if (adapter?.getViewHolderAt(layerPosition)!!.isSelected()) { + adapter?.getViewHolderAt(layerPosition)?.setSelected() + } else { + adapter?.getViewHolderAt(layerPosition)?.setDeselected() + } + } + } } 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 fa73828373..0e18012180 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/presenter/MainActivityPresenter.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/presenter/MainActivityPresenter.kt @@ -577,9 +577,9 @@ open class MainActivityPresenter( override fun initializeFromCleanState(extraPicturePath: String?, extraPictureName: String?) { model.isOpenedFromCatroid = extraPicturePath != null FileIO.wasImageLoaded = false - if (extraPictureName != null) { - val imageFile = extraPicturePath?.let { File(it) } - if (imageFile != null && imageFile.exists()) { + if (extraPicturePath != null) { + val imageFile = File(extraPicturePath) + if (imageFile.exists()) { model.savedPictureUri = view.getUriFromFile(imageFile) interactor.loadFile( this, @@ -589,7 +589,7 @@ open class MainActivityPresenter( false, workspace ) - } else { + } else if (extraPictureName != null) { interactor.createFile( this, CREATE_FILE_DEFAULT, @@ -648,6 +648,7 @@ open class MainActivityPresenter( isFullscreen: Boolean, isSaved: Boolean, isOpenedFromCatroid: Boolean, + isOpenedFromFormulaEditorInCatroid: Boolean, wasInitialAnimationPlayed: Boolean, savedPictureUri: Uri?, cameraImageUri: Uri? @@ -655,6 +656,7 @@ open class MainActivityPresenter( model.isFullscreen = isFullscreen model.isSaved = isSaved model.isOpenedFromCatroid = isOpenedFromCatroid + model.isOpenedFromFormulaEditorInCatroid = isOpenedFromFormulaEditorInCatroid model.setInitialAnimationPlayed(wasInitialAnimationPlayed) model.savedPictureUri = savedPictureUri model.cameraImageUri = cameraImageUri diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/ui/LayerAdapter.kt b/Paintroid/src/main/java/org/catrobat/paintroid/ui/LayerAdapter.kt index eee0988bbe..db0c72a6b5 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/ui/LayerAdapter.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/ui/LayerAdapter.kt @@ -90,6 +90,7 @@ class LayerAdapter(val presenter: LayerContracts.Presenter) : BaseAdapter(), Lay private val imageView: ImageView = itemView.findViewById(R.id.pocketpaint_item_layer_image) private var currentBitmap: Bitmap? = null private val checkBox: CheckBox = itemView.findViewById(R.id.pocketpaint_checkbox_layer) + private var isSelected = false companion object { private const val RESIZE_LENGTH = 400f @@ -107,16 +108,21 @@ class LayerAdapter(val presenter: LayerContracts.Presenter) : BaseAdapter(), Lay bottomNavigationViewHolder?.showCurrentTool(ToolType.HAND) } layerBackground.setBackgroundColor(Color.BLUE) + isSelected = true } override fun setSelected() { layerBackground.setBackgroundColor(Color.BLUE) + isSelected = true } override fun setDeselected() { layerBackground.setBackgroundColor(Color.TRANSPARENT) + isSelected = false } + override fun isSelected() = isSelected + override fun updateImageView(bitmap: Bitmap?, isDrawerLayoutOpen: Boolean) { if (isDrawerLayoutOpen) { runBlocking { diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/ui/MainActivityNavigator.kt b/Paintroid/src/main/java/org/catrobat/paintroid/ui/MainActivityNavigator.kt index 578e57992a..1289877df0 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/ui/MainActivityNavigator.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/ui/MainActivityNavigator.kt @@ -1,6 +1,6 @@ /* * Paintroid: An image manipulation application for Android. - * Copyright (C) 2010-2021 The Catrobat Team + * Copyright (C) 2010-2022 The Catrobat Team * () * * This program is free software: you can redistribute it and/or modify @@ -28,7 +28,6 @@ import android.graphics.Bitmap import android.net.Uri import android.os.Build import android.provider.OpenableColumns -import android.view.Gravity import android.widget.Toast import androidx.appcompat.app.AppCompatDialogFragment import androidx.core.app.ActivityCompat @@ -197,7 +196,8 @@ class MainActivityNavigator( toolReference.tool?.let { val dialog = ColorPickerDialog.newInstance( it.drawPaint.color, - mainActivity.model.isOpenedFromCatroid + mainActivity.model.isOpenedFromCatroid, + mainActivity.model.isOpenedFromFormulaEditorInCatroid ) setupColorPickerDialogListeners(dialog) showDialogFragmentSafely(dialog, COLOR_PICKER_DIALOG_TAG) @@ -485,11 +485,9 @@ class MainActivityNavigator( override fun showToolChangeToast(offset: Int, idRes: Int) { var offset = offset val toolNameToast = ToastFactory.makeText(mainActivity, idRes, Toast.LENGTH_SHORT) - val gravity = Gravity.TOP or Gravity.CENTER if (mainActivity.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) { offset = 0 } - toolNameToast.setGravity(gravity, 0, offset) toolNameToast.show() } diff --git a/Paintroid/src/main/java/org/catrobat/paintroid/ui/dragndrop/DragAndDropListView.kt b/Paintroid/src/main/java/org/catrobat/paintroid/ui/dragndrop/DragAndDropListView.kt index 6741198066..f147ec1540 100644 --- a/Paintroid/src/main/java/org/catrobat/paintroid/ui/dragndrop/DragAndDropListView.kt +++ b/Paintroid/src/main/java/org/catrobat/paintroid/ui/dragndrop/DragAndDropListView.kt @@ -33,6 +33,7 @@ import android.view.View import android.widget.AdapterView.OnItemClickListener import android.widget.AdapterView.OnItemLongClickListener import android.widget.ListView +import org.catrobat.paintroid.presenter.LayerPresenter import kotlin.math.max import kotlin.math.min @@ -109,6 +110,9 @@ class DragAndDropListView : ListView, ListItemLongClickHandler { override fun stopDragging() { hoveringListItem ?: return + if (presenter is LayerPresenter) { + (presenter as LayerPresenter).resetMergeColor(mergePosition) + } mergePosition = -1 view?.visibility = VISIBLE view = null 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 1cec5fc87b..04b9c068cb 100644 --- a/Paintroid/src/main/res/layout/dialog_pocketpaint_advanced_settings.xml +++ b/Paintroid/src/main/res/layout/dialog_pocketpaint_advanced_settings.xml @@ -18,42 +18,31 @@ * along with this program. If not, see . --> + android:padding="?dialogPreferredPadding"> - + android:layout_height="match_parent" + android:checked="true" + android:text="@string/dialog_antialiasing" + android:textColor="@color/design_default_color_on_secondary" + android:theme="@style/CustomSwitchTheme" /> - - + - - - - + android:layout_height="match_parent" + android:checked="true" + android:text="@string/dialog_smoothing" + android:textColor="@color/design_default_color_on_secondary" + android:theme="@style/CustomSwitchTheme" /> diff --git a/Paintroid/src/main/res/values-hu-rHU/string.xml b/Paintroid/src/main/res/values-hu-rHU/string.xml index dbca291418..8120cf08da 100644 --- a/Paintroid/src/main/res/values-hu-rHU/string.xml +++ b/Paintroid/src/main/res/values-hu-rHU/string.xml @@ -168,7 +168,7 @@ You are all set. Enjoy Pocket Paint. Get started and create a new masterpiece. Let\'s go - Next + Következő Átugrás About Pocket Paint is a picture editing library that is part of the Catrobat project.\n\nCatrobat is a visual programming language and set of creativity tools for smartphones.\n\nThe source code of Pocket Paint is mainly licensed under the %s.\nFor precise details of the license see the link below. diff --git a/Paintroid/src/main/res/values-sq-rAL/string.xml b/Paintroid/src/main/res/values-sq-rAL/string.xml index e34bc71e26..7136aa07e6 100644 --- a/Paintroid/src/main/res/values-sq-rAL/string.xml +++ b/Paintroid/src/main/res/values-sq-rAL/string.xml @@ -35,11 +35,11 @@ Tekst Format Duar - Watercolor + Akuarel Kanaçe me spërkatje Apliko Shenjë kontrolli - Connect Line Segment + Lidh segmentin e linjës i përfunduar Galeria Pulla nuk mund të ngarkohej @@ -58,7 +58,7 @@ Ndihmë Hiqni pjesë të figurës me një gomë fshirëse. Prekni simbolet në pjesen e poshtëm për të ndryshuar ngjyrën ose madhësinë e furçës. - Similar to the brush tool with a watercolor effect. However you can also change the strength of the brush with the slider in the color menu. + Ngjashëm me furçën me efektin e bojërave të ujit. Megjithatë, ju gjithashtu mund të ndryshoni forcën e furçës me rrëshqitësin në menunë e ngjyrave. Prekni imazhin për të zgjedhur një ngjyrë. Trokit për të zhbërë veprimin tënd të mëparshëm. Prekni për të ribërë një veprim të pakthyer. diff --git a/Paintroid/src/main/res/values-uk-rUA/string.xml b/Paintroid/src/main/res/values-uk-rUA/string.xml index c32255f2a6..c5d669b474 100644 --- a/Paintroid/src/main/res/values-uk-rUA/string.xml +++ b/Paintroid/src/main/res/values-uk-rUA/string.xml @@ -128,10 +128,10 @@ віддзеркалити горизонтально розмір зрізати чи розтягнути - Ширина - Висота + Шир. + Вис. Авто - пікс. + п. Створіть дубль кнопкою «Копіювати» Шари Створити шар @@ -155,9 +155,9 @@ Застосунку бракує дозволу для коректної роботи. Щоб зберігати зображення в локальній пам\'яті, дозвольте застосунку читання й запис. Застосунку бракує дозволу для коректної роботи. Щоб зберігати зображення в локальній пам\'яті, дозвольте застосунку читання й запис. Ви заборонили доступ назовсім. Будь ласка, надайте необхідні дозволи в налаштуваннях телефону, якщо бажаєте використовувати ці функції. - Drag edges to their new position, then tap to enlarge or crop the image area. + Змістіть краї й застосуйте розтягнення чи зріз полотна пташкою. Прицільтесь і торкніть, щоб почати лінію. - Намалюйте й торкніть іще раз, щоб зупинити лінію. + Посуньте курсор і торкніть іще раз, щоб зупинити лінію. Вас вітає Pocket Paint Із Pocket Paint вашій творчості нема меж. Радимо пройти вступ. Якщо ви вже знайомі з Pocket Paint, можете його пропустити. Торкніть інструмент, щоб дізнатися більше diff --git a/Paintroid/src/main/res/values/style.xml b/Paintroid/src/main/res/values/style.xml index 1cff69abe7..70ce975c03 100644 --- a/Paintroid/src/main/res/values/style.xml +++ b/Paintroid/src/main/res/values/style.xml @@ -89,6 +89,12 @@ false + + +