From ec6acfbd83ecad682d85e98cbba049d0b42e10ef Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Fri, 8 Mar 2024 18:36:38 +0800 Subject: [PATCH] change delete view to EditViewDialog --- .../tungsten/fcl/control/EditViewDialog.java | 9 +++++++ .../fcl/control/view/ControlButton.java | 25 ++++--------------- .../fcl/control/view/ControlDirection.java | 24 ++++-------------- FCL/src/main/res/layout/dialog_edit_view.xml | 10 ++++++++ FCL/src/main/res/values-zh/strings.xml | 1 + FCL/src/main/res/values/strings.xml | 1 + 6 files changed, 31 insertions(+), 39 deletions(-) diff --git a/FCL/src/main/java/com/tungsten/fcl/control/EditViewDialog.java b/FCL/src/main/java/com/tungsten/fcl/control/EditViewDialog.java index f8e8453c..45a37e7f 100644 --- a/FCL/src/main/java/com/tungsten/fcl/control/EditViewDialog.java +++ b/FCL/src/main/java/com/tungsten/fcl/control/EditViewDialog.java @@ -17,6 +17,7 @@ import com.tungsten.fcl.control.data.ControlDirectionData; import com.tungsten.fcl.control.data.ControlViewGroup; import com.tungsten.fcl.control.data.CustomControl; import com.tungsten.fcl.control.data.DirectionEventData; +import com.tungsten.fcl.control.view.ControlButton; import com.tungsten.fcl.util.AndroidUtils; import com.tungsten.fcl.util.FXUtils; import com.tungsten.fclcore.fakefx.beans.InvalidationListener; @@ -49,6 +50,7 @@ public class EditViewDialog extends FCLDialog implements View.OnClickListener { private FCLButton positive; private FCLButton negative; private FCLButton clone; + private FCLButton delete; private FCLLinearLayout container; private Details details; @@ -56,6 +58,7 @@ public class EditViewDialog extends FCLDialog implements View.OnClickListener { public interface Callback { void onPositive(CustomControl view); void onClone(CustomControl view); + default void onDelete(){} } public EditViewDialog(@NonNull Context context, CustomControl cloneView, GameMenu menu, Callback callback, boolean cloneable) { @@ -75,9 +78,11 @@ public class EditViewDialog extends FCLDialog implements View.OnClickListener { positive = findViewById(R.id.positive); negative = findViewById(R.id.negative); clone = findViewById(R.id.clone); + delete = findViewById(R.id.delete); positive.setOnClickListener(this); negative.setOnClickListener(this); clone.setOnClickListener(this); + delete.setOnClickListener(this); clone.setVisibility(cloneable ? View.VISIBLE : View.GONE); @@ -102,6 +107,10 @@ public class EditViewDialog extends FCLDialog implements View.OnClickListener { callback.onClone(customControl.cloneView()); dismiss(); } + if (v == delete) { + callback.onDelete(); + dismiss(); + } if (v == positive) { callback.onPositive(details.getView()); dismiss(); diff --git a/FCL/src/main/java/com/tungsten/fcl/control/view/ControlButton.java b/FCL/src/main/java/com/tungsten/fcl/control/view/ControlButton.java index 6e6201cf..e05285bf 100644 --- a/FCL/src/main/java/com/tungsten/fcl/control/view/ControlButton.java +++ b/FCL/src/main/java/com/tungsten/fcl/control/view/ControlButton.java @@ -271,21 +271,6 @@ public class ControlButton extends AppCompatButton implements CustomView { private final Handler handler = new Handler(); private final Runnable runnable = () -> handleLongPressEvent(!longPressEvent); - private final Runnable deleteRunnable = () -> { - Vibrator vibrator = (Vibrator) getContext().getSystemService(Context.VIBRATOR_SERVICE); - vibrator.vibrate(VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE)); - FCLAlertDialog.Builder builder = new FCLAlertDialog.Builder(getContext()); - builder.setAlertLevel(FCLAlertDialog.AlertLevel.ALERT); - builder.setCancelable(false); - builder.setMessage(getContext().getString(R.string.edit_button_delete)); - builder.setPositiveButton(this::deleteView); - builder.setNegativeButton(() -> { - setX(positionX); - setY(positionY); - }); - builder.create().show(); - }; - private void deleteView() { if (menu != null) { menu.getViewManager().removeView(getData()); @@ -304,7 +289,6 @@ public class ControlButton extends AppCompatButton implements CustomView { positionX = getX(); positionY = getY(); downTime = System.currentTimeMillis(); - handler.postDelayed(deleteRunnable, 400); break; case MotionEvent.ACTION_MOVE: int deltaX = (int) (event.getX() - downX); @@ -313,9 +297,6 @@ public class ControlButton extends AppCompatButton implements CustomView { float targetY = Math.max(0, Math.min(screenHeight - getHeight(), getY() + deltaY)); setX(targetX); setY(targetY); - if ((Math.abs(event.getX() - downX) > 2 || Math.abs(event.getY() - downY) > 2) && System.currentTimeMillis() - downTime < 400) { - handler.removeCallbacks(deleteRunnable); - } autoFitPosition(); break; case MotionEvent.ACTION_UP: @@ -323,7 +304,6 @@ public class ControlButton extends AppCompatButton implements CustomView { removeLine(0); removeLine(1); setNormalStyle(); - handler.removeCallbacks(deleteRunnable); if (System.currentTimeMillis() - downTime <= 100 && Math.abs(event.getX() - downX) <= 10 && Math.abs(event.getY() - downY) <= 10) { @@ -344,6 +324,11 @@ public class ControlButton extends AppCompatButton implements CustomView { public void onClone(CustomControl view) { menu.getViewManager().addView(view); } + + @Override + public void onDelete() { + menu.getViewManager().removeView(getData()); + } }, true); dialog.show(); } else { diff --git a/FCL/src/main/java/com/tungsten/fcl/control/view/ControlDirection.java b/FCL/src/main/java/com/tungsten/fcl/control/view/ControlDirection.java index f42531c6..32dc78fb 100644 --- a/FCL/src/main/java/com/tungsten/fcl/control/view/ControlDirection.java +++ b/FCL/src/main/java/com/tungsten/fcl/control/view/ControlDirection.java @@ -424,20 +424,6 @@ public class ControlDirection extends RelativeLayout implements CustomView { private boolean startRecord = false; private final Handler handler = new Handler(); - private final Runnable deleteRunnable = () -> { - Vibrator vibrator = (Vibrator) getContext().getSystemService(Context.VIBRATOR_SERVICE); - vibrator.vibrate(VibrationEffect.createOneShot(100, VibrationEffect.DEFAULT_AMPLITUDE)); - FCLAlertDialog.Builder builder = new FCLAlertDialog.Builder(getContext()); - builder.setAlertLevel(FCLAlertDialog.AlertLevel.ALERT); - builder.setCancelable(false); - builder.setMessage(getContext().getString(R.string.edit_direction_delete)); - builder.setPositiveButton(this::deleteView); - builder.setNegativeButton(() -> { - setX(positionX); - setY(positionY); - }); - builder.create().show(); - }; private void deleteView() { if (menu != null) { @@ -456,7 +442,6 @@ public class ControlDirection extends RelativeLayout implements CustomView { positionX = getX(); positionY = getY(); downTime = System.currentTimeMillis(); - handler.postDelayed(deleteRunnable, 400); break; case MotionEvent.ACTION_MOVE: int deltaX = (int) ((event.getX() - downX) * menu.getMenuSetting().getMouseSensitivity()); @@ -465,16 +450,12 @@ public class ControlDirection extends RelativeLayout implements CustomView { float targetY = Math.max(0, Math.min(screenHeight - getSize(), getY() + deltaY)); setX(targetX); setY(targetY); - if ((Math.abs(event.getX() - downX) > 2 || Math.abs(event.getY() - downY) > 2) && System.currentTimeMillis() - downTime < 400) { - handler.removeCallbacks(deleteRunnable); - } autoFitPosition(); break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: removeLine(0); removeLine(1); - handler.removeCallbacks(deleteRunnable); if (System.currentTimeMillis() - downTime <= 100 && Math.abs(event.getX() - downX) <= 10 && Math.abs(event.getY() - downY) <= 10) { @@ -494,6 +475,11 @@ public class ControlDirection extends RelativeLayout implements CustomView { public void onClone(CustomControl view) { menu.getViewManager().addView(view); } + + @Override + public void onDelete() { + menu.getViewManager().removeView(getData()); + } }, true); dialog.show(); } else { diff --git a/FCL/src/main/res/layout/dialog_edit_view.xml b/FCL/src/main/res/layout/dialog_edit_view.xml index 55dd092c..ac8ec2ce 100644 --- a/FCL/src/main/res/layout/dialog_edit_view.xml +++ b/FCL/src/main/res/layout/dialog_edit_view.xml @@ -84,6 +84,16 @@ android:layout_height="wrap_content" android:layout_marginTop="10dp" app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@id/delete" + app:layout_constraintBottom_toBottomOf="parent"/> + + diff --git a/FCL/src/main/res/values-zh/strings.xml b/FCL/src/main/res/values-zh/strings.xml index 52d65cad..4806c70a 100644 --- a/FCL/src/main/res/values-zh/strings.xml +++ b/FCL/src/main/res/values-zh/strings.xml @@ -270,6 +270,7 @@ 尽量使用镜像源 复制控件 + 删除控件 控件事件 控件基本信息 请先添加或选择一个控件组! diff --git a/FCL/src/main/res/values/strings.xml b/FCL/src/main/res/values/strings.xml index c07e437d..18d54a18 100644 --- a/FCL/src/main/res/values/strings.xml +++ b/FCL/src/main/res/values/strings.xml @@ -292,6 +292,7 @@ From Mirror Clone View + Delete View View Event Base View Info Please add or select a view group first!