From 47746e74e759401204d2b501a86b7469779cd54b Mon Sep 17 00:00:00 2001 From: amwatson Date: Sat, 6 Apr 2024 18:42:04 -0500 Subject: [PATCH] remove prev/next UI buttons and make radio buttons functional --- .../citra/citra_emu/vr/ui/VrRibbonLayer.kt | 178 ++++++++---------- .../main/jni/vr/layers/GameSurfaceLayer.cpp | 8 +- .../src/main/jni/vr/layers/GameSurfaceLayer.h | 2 +- .../app/src/main/jni/vr/utils/MessageQueue.h | 10 +- .../app/src/main/res/layout/vr_ribbon.xml | 49 +---- 5 files changed, 96 insertions(+), 151 deletions(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/vr/ui/VrRibbonLayer.kt b/src/android/app/src/main/java/org/citra/citra_emu/vr/ui/VrRibbonLayer.kt index b91edcbfd..feaf30530 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/vr/ui/VrRibbonLayer.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/vr/ui/VrRibbonLayer.kt @@ -14,124 +14,110 @@ import org.citra.citra_emu.utils.Log class VrRibbonLayer(activity: VrActivity) : VrUILayer(activity, R.layout.vr_ribbon) { - enum class MenuType(val resId: Int) { - MAIN(R.id.main_panel), - POSITION(R.id.position_panel) - } + enum class MenuType(val resId: Int, buttonId: Int) { + MAIN(R.id.main_panel, R.id.button_menu_main), + POSITION(R.id.position_panel, R.id.button_menu_positional) + } - private var menuTypeCurrent: MenuType = MenuType.MAIN + private var menuTypeCurrent: MenuType = MenuType.MAIN override fun onSurfaceCreated() { - super.onSurfaceCreated() + super.onSurfaceCreated() initializeLeftMenu() initializeMainPanel() initializePositionalPanel() } - fun switchMenus(menuTypeNew: MenuType) { - if (menuTypeNew == menuTypeCurrent) - return + fun switchMenus(menuTypeNew: MenuType) { + if (menuTypeNew == menuTypeCurrent) + return window?.findViewById(menuTypeCurrent.resId)?.visibility = View.GONE menuTypeCurrent = menuTypeNew window?.findViewById(menuTypeCurrent.resId)?.visibility = View.VISIBLE if (menuTypeCurrent == MenuType.MAIN) - VrMessageQueue.post(VrMessageQueue.MessageType.CHANGE_LOWER_MENU, 0) + VrMessageQueue.post(VrMessageQueue.MessageType.CHANGE_LOWER_MENU, 0) else if (menuTypeCurrent == MenuType.POSITION) - VrMessageQueue.post(VrMessageQueue.MessageType.CHANGE_LOWER_MENU, 1) - } + VrMessageQueue.post(VrMessageQueue.MessageType.CHANGE_LOWER_MENU, 1) + } - private fun initializeLeftMenu() { - val radioGroup = window?.findViewById(R.id.vertical_tab) - radioGroup?.setOnCheckedChangeListener { group, checkedId -> - // Loop through all radio buttons in the group - for (i in 0 until group.childCount) { - val btn = group.getChildAt(i) as RadioButton + private fun initializeLeftMenu() { + val radioGroup = window?.findViewById(R.id.vertical_tab) + radioGroup?.setOnCheckedChangeListener { group, checkedId -> + // Loop through all radio buttons in the group + for (i in 0 until group.childCount) { + val btn = group.getChildAt(i) as RadioButton if (btn.id == checkedId) { // This button is checked, change the background accordingly btn.background = activity?.getDrawable( - R.drawable.vr_ribbon_button_pressed) + R.drawable.vr_ribbon_button_pressed) + when (btn.id) { + R.id.button_menu_main -> switchMenus(MenuType.MAIN) + R.id.button_menu_positional -> switchMenus(MenuType.POSITION) + } } else { // This button is not checked, revert to the default background btn.background = activity?.getDrawable(R.drawable.vr_ribbon_button_default) } - } } + } + // Set the first button as checked + radioGroup?.check(R.id.button_menu_main) + } + + private fun initializePositionalPanel() { + val horizontalLockToggle = window?.findViewById(R.id.horizontalAxisToggle) + horizontalLockToggle?.setOnCheckedChangeListener { _, isChecked -> + VrMessageQueue.post(VrMessageQueue.MessageType.CHANGE_LOCK_HORIZONTAL_AXIS, if (isChecked) 1 else 0) + } + val btnReset = window?.findViewById