Added option to show input overlay & quit during emulation

This commit is contained in:
SSimco
2024-09-26 21:09:05 +03:00
parent e4bacd8262
commit a08958f3b6
5 changed files with 38 additions and 7 deletions
@@ -6,6 +6,7 @@ import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import androidx.activity.OnBackPressedCallback;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.WindowCompat;
import androidx.core.view.WindowInsetsCompat;
@@ -44,6 +45,13 @@ public class EmulationActivity extends AppCompatActivity implements Observer<Emu
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
@Override
public void handleOnBackPressed() {
showExitConfirmationDialog();
}
});
viewModel = new ViewModelProvider(this).get(EmulationViewModel.class);
viewModel.getEmulationData().observe(this, this);
Intent intent = getIntent();
@@ -70,11 +78,7 @@ public class EmulationActivity extends AppCompatActivity implements Observer<Emu
.add(R.id.emulation_frame, emulationFragment)
.commit();
}
}
@Override
public void onBackPressed() {
showExitConfirmationDialog();
}
private void showExitConfirmationDialog() {
@@ -228,6 +228,20 @@ public class EmulationFragment extends Fragment implements PopupMenu.OnMenuItemC
else
sensorManager.pauseListening();
item.setChecked(isMotionEnabled);
return true;
}
if (itemId == R.id.exit_emulation) {
requireActivity().getOnBackPressedDispatcher().onBackPressed();
return true;
}
if (itemId == R.id.show_input_overlay) {
boolean showInputOverlay = !item.isChecked();
var menu = settingsMenu.getMenu();
menu.findItem(R.id.edit_inputs).setEnabled(showInputOverlay);
menu.findItem(R.id.reset_inputs).setEnabled(showInputOverlay);
item.setChecked(showInputOverlay);
inputOverlaySurfaceView.setVisibility(showInputOverlay ? View.VISIBLE : View.GONE);
return true;
}
return false;
}
@@ -265,8 +279,11 @@ public class EmulationFragment extends Fragment implements PopupMenu.OnMenuItemC
settingsMenu.getMenuInflater().inflate(R.menu.menu_emulation_in_game, settingsMenu.getMenu());
settingsMenu.setOnMenuItemClickListener(EmulationFragment.this);
binding.emulationSettingsButton.setOnClickListener(v -> settingsMenu.show());
var menu = settingsMenu.getMenu();
menu.findItem(R.id.show_input_overlay).setChecked(overlaySettings.isOverlayEnabled());
if (!overlaySettings.isOverlayEnabled()) {
menu.findItem(R.id.reset_inputs).setEnabled(false);
menu.findItem(R.id.edit_inputs).setEnabled(false);
inputOverlaySurfaceView.setVisibility(View.GONE);
}
SurfaceView mainCanvas = binding.mainCanvas;
@@ -26,6 +26,7 @@ public class InputOverlaySurfaceView extends SurfaceView implements View.OnTouch
private InputMode inputMode = InputMode.DEFAULT;
public void resetInputs() {
if (inputs == null) return;
int width = getWidth();
int height = getHeight();
for (var input : InputOverlaySettingsProvider.Input.values()) {
@@ -17,5 +17,12 @@
android:title="@string/edit_inputs" />
<item
android:id="@+id/reset_inputs"
android:title="@string/reset_overlay_inputs" />
android:title="@string/reset_input_overlay" />
<item
android:id="@+id/show_input_overlay"
android:checkable="true"
android:title="@string/show_input_overlay" />
<item
android:id="@+id/exit_emulation"
android:title="@string/exit" />
</menu>
@@ -158,7 +158,7 @@
<string name="input_finish_edit_label">Done</string>
<string name="move_inputs_description">Move inputs</string>
<string name="resize_inputs_description">Resize inputs</string>
<string name="reset_overlay_inputs">Reset overlay inputs</string>
<string name="reset_input_overlay">Reset input overlay</string>
<string name="edit_inputs">Edit inputs</string>
<string name="show_pad">Show pad</string>
<string name="replace_tv_with_pad">Replace TV with PAD</string>
@@ -189,4 +189,6 @@
<string name="downscale_filter">Downscale filter</string>
<string name="overlay_text_scale">Overlay text scale</string>
<string name="notifications_text_scale">Notifications text scale</string>
<string name="exit">Exit</string>
<string name="show_input_overlay">Show input overlay</string>
</resources>