change delete view to EditViewDialog

This commit is contained in:
ShirosakiMio 2024-03-08 18:36:38 +08:00
parent 127b85afef
commit ec6acfbd83
6 changed files with 31 additions and 39 deletions

View File

@ -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();

View File

@ -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 {

View File

@ -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 {

View File

@ -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"/>
<com.tungsten.fcllibrary.component.view.FCLButton
android:id="@+id/delete"
android:text="@string/edit_view_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
app:layout_constraintStart_toEndOf="@id/clone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"/>

View File

@ -270,6 +270,7 @@
<string name="download_provider_mirror">尽量使用镜像源</string>
<string name="edit_view_clone">复制控件</string>
<string name="edit_view_delete">删除控件</string>
<string name="edit_view_event">控件事件</string>
<string name="edit_view_info">控件基本信息</string>
<string name="edit_view_no_group">请先添加或选择一个控件组!</string>

View File

@ -292,6 +292,7 @@
<string name="download_provider_mirror">From Mirror</string>
<string name="edit_view_clone">Clone View</string>
<string name="edit_view_delete">Delete View</string>
<string name="edit_view_event">View Event</string>
<string name="edit_view_info">Base View Info</string>
<string name="edit_view_no_group">Please add or select a view group first!</string>