diff options
Diffstat (limited to 'src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatDetailsFragment.java')
-rw-r--r-- | src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatDetailsFragment.java | 174 |
1 files changed, 0 insertions, 174 deletions
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatDetailsFragment.java b/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatDetailsFragment.java deleted file mode 100644 index 762cdb80e..000000000 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatDetailsFragment.java +++ /dev/null @@ -1,174 +0,0 @@ -package org.citra.citra_emu.features.cheats.ui; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.EditText; -import android.widget.ScrollView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AlertDialog; -import androidx.fragment.app.Fragment; -import androidx.lifecycle.ViewModelProvider; - -import org.citra.citra_emu.R; -import org.citra.citra_emu.features.cheats.model.Cheat; -import org.citra.citra_emu.features.cheats.model.CheatsViewModel; - -public class CheatDetailsFragment extends Fragment { - private View mRoot; - private ScrollView mScrollView; - private TextView mLabelName; - private EditText mEditName; - private EditText mEditNotes; - private EditText mEditCode; - private Button mButtonDelete; - private Button mButtonEdit; - private Button mButtonCancel; - private Button mButtonOk; - - private CheatsViewModel mViewModel; - - @Nullable - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, - @Nullable Bundle savedInstanceState) { - return inflater.inflate(R.layout.fragment_cheat_details, container, false); - } - - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - mRoot = view.findViewById(R.id.root); - mScrollView = view.findViewById(R.id.scroll_view); - mLabelName = view.findViewById(R.id.label_name); - mEditName = view.findViewById(R.id.edit_name); - mEditNotes = view.findViewById(R.id.edit_notes); - mEditCode = view.findViewById(R.id.edit_code); - mButtonDelete = view.findViewById(R.id.button_delete); - mButtonEdit = view.findViewById(R.id.button_edit); - mButtonCancel = view.findViewById(R.id.button_cancel); - mButtonOk = view.findViewById(R.id.button_ok); - - CheatsActivity activity = (CheatsActivity) requireActivity(); - mViewModel = new ViewModelProvider(activity).get(CheatsViewModel.class); - - mViewModel.getSelectedCheat().observe(getViewLifecycleOwner(), - this::onSelectedCheatUpdated); - mViewModel.getIsEditing().observe(getViewLifecycleOwner(), this::onIsEditingUpdated); - - mButtonDelete.setOnClickListener(this::onDeleteClicked); - mButtonEdit.setOnClickListener(this::onEditClicked); - mButtonCancel.setOnClickListener(this::onCancelClicked); - mButtonOk.setOnClickListener(this::onOkClicked); - - // On a portrait phone screen (or other narrow screen), only one of the two panes are shown - // at the same time. If the user is navigating using a d-pad and moves focus to an element - // in the currently hidden pane, we need to manually show that pane. - CheatsActivity.setOnFocusChangeListenerRecursively(view, - (v, hasFocus) -> activity.onDetailsViewFocusChange(hasFocus)); - } - - private void clearEditErrors() { - mEditName.setError(null); - mEditCode.setError(null); - } - - private void onDeleteClicked(View view) { - String name = mEditName.getText().toString(); - - AlertDialog.Builder builder = new AlertDialog.Builder(requireContext()); - builder.setMessage(getString(R.string.cheats_delete_confirmation, name)); - builder.setPositiveButton(android.R.string.yes, - (dialog, i) -> mViewModel.deleteSelectedCheat()); - builder.setNegativeButton(android.R.string.no, null); - builder.show(); - } - - private void onEditClicked(View view) { - mViewModel.setIsEditing(true); - mButtonOk.requestFocus(); - } - - private void onCancelClicked(View view) { - mViewModel.setIsEditing(false); - onSelectedCheatUpdated(mViewModel.getSelectedCheat().getValue()); - mButtonDelete.requestFocus(); - } - - private void onOkClicked(View view) { - clearEditErrors(); - - String name = mEditName.getText().toString(); - String notes = mEditNotes.getText().toString(); - String code = mEditCode.getText().toString(); - - if (name.isEmpty()) { - mEditName.setError(getString(R.string.cheats_error_no_name)); - mScrollView.smoothScrollTo(0, mLabelName.getTop()); - return; - } else if (code.isEmpty()) { - mEditCode.setError(getString(R.string.cheats_error_no_code_lines)); - mScrollView.smoothScrollTo(0, mEditCode.getBottom()); - return; - } - - int validityResult = Cheat.isValidGatewayCode(code); - - if (validityResult != 0) { - mEditCode.setError(getString(R.string.cheats_error_on_line, validityResult)); - mScrollView.smoothScrollTo(0, mEditCode.getBottom()); - return; - } - - Cheat newCheat = Cheat.createGatewayCode(name, notes, code); - - if (mViewModel.getIsAdding().getValue()) { - mViewModel.finishAddingCheat(newCheat); - } else { - mViewModel.updateSelectedCheat(newCheat); - } - - mButtonEdit.requestFocus(); - } - - private void onSelectedCheatUpdated(@Nullable Cheat cheat) { - clearEditErrors(); - - boolean isEditing = mViewModel.getIsEditing().getValue(); - - mRoot.setVisibility(isEditing || cheat != null ? View.VISIBLE : View.GONE); - - // If the fragment was recreated while editing a cheat, it's vital that we - // don't repopulate the fields, otherwise the user's changes will be lost - if (!isEditing) { - if (cheat == null) { - mEditName.setText(""); - mEditNotes.setText(""); - mEditCode.setText(""); - } else { - mEditName.setText(cheat.getName()); - mEditNotes.setText(cheat.getNotes()); - mEditCode.setText(cheat.getCode()); - } - } - } - - private void onIsEditingUpdated(boolean isEditing) { - if (isEditing) { - mRoot.setVisibility(View.VISIBLE); - } - - mEditName.setEnabled(isEditing); - mEditNotes.setEnabled(isEditing); - mEditCode.setEnabled(isEditing); - - mButtonDelete.setVisibility(isEditing ? View.GONE : View.VISIBLE); - mButtonEdit.setVisibility(isEditing ? View.GONE : View.VISIBLE); - mButtonCancel.setVisibility(isEditing ? View.VISIBLE : View.GONE); - mButtonOk.setVisibility(isEditing ? View.VISIBLE : View.GONE); - } -} |