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 f8e8453cc..45a37e7f9 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.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 EditViewDialog(@NonNull Context context, CustomControl cloneView, GameMen
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 void onClick(View v) {
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 6e6201cf4..e05285bf4 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 @@ protected void onDraw(Canvas canvas) {
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 boolean onTouchEvent(MotionEvent event) {
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 boolean onTouchEvent(MotionEvent event) {
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 boolean onTouchEvent(MotionEvent event) {
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 void onPositive(CustomControl view) {
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 f42531c6c..32dc78fba 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 @@ protected void onDraw(Canvas canvas) {
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 boolean onTouchEvent(MotionEvent event) {
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 boolean onTouchEvent(MotionEvent event) {
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 void onPositive(CustomControl view) {
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 55dd092c3..ac8ec2ce3 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 52d65cadb..4806c70a1 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 c07e437d1..18d54a185 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!