Skip to content

Commit a08958f

Browse files
committed
Added option to show input overlay & quit during emulation
1 parent e4bacd8 commit a08958f

File tree

5 files changed

+38
-7
lines changed

5 files changed

+38
-7
lines changed

src/android/app/src/main/java/info/cemu/Cemu/emulation/EmulationActivity.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.view.KeyEvent;
77
import android.view.MotionEvent;
88

9+
import androidx.activity.OnBackPressedCallback;
910
import androidx.appcompat.app.AppCompatActivity;
1011
import androidx.core.view.WindowCompat;
1112
import androidx.core.view.WindowInsetsCompat;
@@ -44,6 +45,13 @@ public boolean dispatchKeyEvent(KeyEvent event) {
4445
@Override
4546
protected void onCreate(Bundle savedInstanceState) {
4647
super.onCreate(savedInstanceState);
48+
getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) {
49+
@Override
50+
public void handleOnBackPressed() {
51+
showExitConfirmationDialog();
52+
}
53+
});
54+
4755
viewModel = new ViewModelProvider(this).get(EmulationViewModel.class);
4856
viewModel.getEmulationData().observe(this, this);
4957
Intent intent = getIntent();
@@ -70,11 +78,7 @@ protected void onCreate(Bundle savedInstanceState) {
7078
.add(R.id.emulation_frame, emulationFragment)
7179
.commit();
7280
}
73-
}
7481

75-
@Override
76-
public void onBackPressed() {
77-
showExitConfirmationDialog();
7882
}
7983

8084
private void showExitConfirmationDialog() {

src/android/app/src/main/java/info/cemu/Cemu/emulation/EmulationFragment.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,20 @@ public boolean onMenuItemClick(MenuItem item) {
228228
else
229229
sensorManager.pauseListening();
230230
item.setChecked(isMotionEnabled);
231+
return true;
232+
}
233+
if (itemId == R.id.exit_emulation) {
234+
requireActivity().getOnBackPressedDispatcher().onBackPressed();
235+
return true;
236+
}
237+
if (itemId == R.id.show_input_overlay) {
238+
boolean showInputOverlay = !item.isChecked();
239+
var menu = settingsMenu.getMenu();
240+
menu.findItem(R.id.edit_inputs).setEnabled(showInputOverlay);
241+
menu.findItem(R.id.reset_inputs).setEnabled(showInputOverlay);
242+
item.setChecked(showInputOverlay);
243+
inputOverlaySurfaceView.setVisibility(showInputOverlay ? View.VISIBLE : View.GONE);
244+
return true;
231245
}
232246
return false;
233247
}
@@ -265,8 +279,11 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
265279
settingsMenu.getMenuInflater().inflate(R.menu.menu_emulation_in_game, settingsMenu.getMenu());
266280
settingsMenu.setOnMenuItemClickListener(EmulationFragment.this);
267281
binding.emulationSettingsButton.setOnClickListener(v -> settingsMenu.show());
268-
282+
var menu = settingsMenu.getMenu();
283+
menu.findItem(R.id.show_input_overlay).setChecked(overlaySettings.isOverlayEnabled());
269284
if (!overlaySettings.isOverlayEnabled()) {
285+
menu.findItem(R.id.reset_inputs).setEnabled(false);
286+
menu.findItem(R.id.edit_inputs).setEnabled(false);
270287
inputOverlaySurfaceView.setVisibility(View.GONE);
271288
}
272289
SurfaceView mainCanvas = binding.mainCanvas;

src/android/app/src/main/java/info/cemu/Cemu/inputoverlay/InputOverlaySurfaceView.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public enum InputMode {
2626
private InputMode inputMode = InputMode.DEFAULT;
2727

2828
public void resetInputs() {
29+
if (inputs == null) return;
2930
int width = getWidth();
3031
int height = getHeight();
3132
for (var input : InputOverlaySettingsProvider.Input.values()) {

src/android/app/src/main/res/menu/menu_emulation_in_game.xml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,12 @@
1717
android:title="@string/edit_inputs" />
1818
<item
1919
android:id="@+id/reset_inputs"
20-
android:title="@string/reset_overlay_inputs" />
20+
android:title="@string/reset_input_overlay" />
21+
<item
22+
android:id="@+id/show_input_overlay"
23+
android:checkable="true"
24+
android:title="@string/show_input_overlay" />
25+
<item
26+
android:id="@+id/exit_emulation"
27+
android:title="@string/exit" />
2128
</menu>

src/android/app/src/main/res/values/strings.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@
158158
<string name="input_finish_edit_label">Done</string>
159159
<string name="move_inputs_description">Move inputs</string>
160160
<string name="resize_inputs_description">Resize inputs</string>
161-
<string name="reset_overlay_inputs">Reset overlay inputs</string>
161+
<string name="reset_input_overlay">Reset input overlay</string>
162162
<string name="edit_inputs">Edit inputs</string>
163163
<string name="show_pad">Show pad</string>
164164
<string name="replace_tv_with_pad">Replace TV with PAD</string>
@@ -189,4 +189,6 @@
189189
<string name="downscale_filter">Downscale filter</string>
190190
<string name="overlay_text_scale">Overlay text scale</string>
191191
<string name="notifications_text_scale">Notifications text scale</string>
192+
<string name="exit">Exit</string>
193+
<string name="show_input_overlay">Show input overlay</string>
192194
</resources>

0 commit comments

Comments
 (0)