diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/MultiRTConfigDialog.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/MultiRTConfigDialog.java index 052f2da19..fae70fe9e 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/MultiRTConfigDialog.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/MultiRTConfigDialog.java @@ -3,8 +3,11 @@ package net.kdt.pojavlaunch.multirt; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; +import android.content.DialogInterface; import android.content.Intent; +import android.view.View; import android.webkit.MimeTypeMap; +import android.widget.Button; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -33,14 +36,25 @@ public class MultiRTConfigDialog { public void prepare(Activity activity) { mDialogView = new RecyclerView(activity); mDialogView.setLayoutManager(new LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false)); - mDialogView.setAdapter(new RTRecyclerViewAdapter()); + RTRecyclerViewAdapter adapter = new RTRecyclerViewAdapter(); + mDialogView.setAdapter(adapter); mDialog = new AlertDialog.Builder(activity) .setTitle(R.string.multirt_config_title) .setView(mDialogView) .setPositiveButton(R.string.multirt_config_add, (dialog, which) -> openRuntimeSelector(activity,MULTIRT_PICK_RUNTIME)) - .setNegativeButton(R.string.mcn_exit_call, (dialog, which) -> dialog.cancel()) + .setNeutralButton(R.string.multirt_delete_runtime, null) .create(); + + // Custom button behavior without dismiss + mDialog.setOnShowListener(dialog -> { + Button button = ((AlertDialog) dialog).getButton(AlertDialog.BUTTON_NEUTRAL); + button.setOnClickListener(view -> { + boolean isEditing = !adapter.getIsEditing(); + adapter.setIsEditing(isEditing); + button.setText(isEditing ? R.string.multirt_config_setdefault : R.string.multirt_delete_runtime); + }); + }); } public static void openRuntimeSelector(Activity activity, int code) { diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/RTRecyclerViewAdapter.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/RTRecyclerViewAdapter.java index 7c28e839b..02e4072e2 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/RTRecyclerViewAdapter.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/multirt/RTRecyclerViewAdapter.java @@ -10,6 +10,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.ImageButton; import android.widget.TextView; import androidx.annotation.NonNull; @@ -26,6 +27,8 @@ import java.util.List; public class RTRecyclerViewAdapter extends RecyclerView.Adapter { + private boolean mIsDeleting = false; + @NonNull @Override public RTViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { @@ -55,12 +58,23 @@ public class RTRecyclerViewAdapter extends RecyclerView.Adapter { + if(mCurrentRuntime != null) { + setDefault(mCurrentRuntime); + RTRecyclerViewAdapter.this.notifyDataSetChanged(); + } + }); + + mDeleteButton.setOnClickListener(v -> { if (mCurrentRuntime == null) return; - if(MultiRTUtils.getRuntimes().size() < 2 && mSetDefaultButton.isShown()) { - AlertDialog.Builder bldr = new AlertDialog.Builder(mContext); - bldr.setTitle(R.string.global_error); - bldr.setMessage(R.string.multirt_config_removeerror_last); - bldr.setPositiveButton(android.R.string.ok,(adapter, which)->adapter.dismiss()); - bldr.show(); + if(MultiRTUtils.getRuntimes().size() < 2) { + new AlertDialog.Builder(mContext) + .setTitle(R.string.global_error) + .setMessage(R.string.multirt_config_removeerror_last) + .setPositiveButton(android.R.string.ok,(adapter, which)->adapter.dismiss()) + .show(); return; } sExecutorService.execute(() -> { try { MultiRTUtils.removeRuntimeNamed(mCurrentRuntime.name); + mDeleteButton.post(() -> { + if(getBindingAdapter() != null) + getBindingAdapter().notifyDataSetChanged(); + }); + } catch (IOException e) { Tools.showError(itemView.getContext(), e); } }); - }else if(view.getId() == R.id.multirt_view_setdefaultbtn) { - if(mCurrentRuntime != null) { - setDefault(mCurrentRuntime); - RTRecyclerViewAdapter.this.notifyDataSetChanged(); - } - } + }); } public void bindRuntime(Runtime runtime, int pos) { @@ -116,14 +138,17 @@ public class RTRecyclerViewAdapter extends RecyclerView.Adapter + android:layout_height="@dimen/_60sdp" + android:paddingHorizontal="@dimen/padding_medium" + > + app:layout_constraintStart_toEndOf="@+id/multirt_view_java_version" + app:layout_constraintTop_toTopOf="parent" + tools:visibility="visible" />