summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/android/app/build.gradle2
-rw-r--r--src/android/app/src/androidTest/java/org/yuzu/yuzu_emu/ExampleInstrumentedTest.java (renamed from src/android/app/src/androidTest/java/org/citra/citra_emu/ExampleInstrumentedTest.java)2
-rw-r--r--src/android/app/src/main/AndroidManifest.xml34
-rw-r--r--src/android/app/src/main/java/org/citra/citra_emu/applets/MiiSelector.java122
-rw-r--r--src/android/app/src/main/java/org/citra/citra_emu/camera/StillImageCameraHelper.java65
-rw-r--r--src/android/app/src/main/java/org/citra/citra_emu/disk_shader_cache/DiskShaderCacheProgress.java138
-rw-r--r--src/android/app/src/main/java/org/citra/citra_emu/features/cheats/model/Cheat.java57
-rw-r--r--src/android/app/src/main/java/org/citra/citra_emu/features/cheats/model/CheatEngine.java13
-rw-r--r--src/android/app/src/main/java/org/citra/citra_emu/features/cheats/model/CheatsViewModel.java177
-rw-r--r--src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatDetailsFragment.java174
-rw-r--r--src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatListFragment.java46
-rw-r--r--src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatViewHolder.java56
-rw-r--r--src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatsActivity.java161
-rw-r--r--src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatsAdapter.java72
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/NativeLibrary.java)14
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/CitraApplication.java)12
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/CustomFilePickerActivity.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/activities/CustomFilePickerActivity.java)4
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.java)452
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/adapters/GameAdapter.java)18
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/applets/SoftwareKeyboard.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/applets/SoftwareKeyboard.java)18
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/MotionAlertDialog.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/dialogs/MotionAlertDialog.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/BooleanSetting.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/FloatSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Setting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Setting.java)4
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/SettingSection.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/SettingSection.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.java)17
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/StringSetting.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/CheckBoxSetting.java)16
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/DateTimeSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/DateTimeSetting.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/HeaderSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/HeaderSetting.java)4
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/InputBindingSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.java)32
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/PremiumHeader.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/PremiumHeader.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/PremiumSingleChoiceSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/PremiumSingleChoiceSetting.java)14
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.java)8
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SingleChoiceSetting.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SliderSetting.java)10
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/StringSingleChoiceSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/StringSingleChoiceSetting.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SubmenuSetting.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SubmenuSetting.java)4
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivity.java)18
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityPresenter.java)29
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityView.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityView.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.java)52
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragment.java)12
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.java)134
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentView.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentView.java)8
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFrameLayout.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFrameLayout.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java)10
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/DateTimeViewHolder.java)12
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/HeaderViewHolder.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/HeaderViewHolder.java)8
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java)10
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/PremiumViewHolder.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/PremiumViewHolder.java)12
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SettingViewHolder.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SettingViewHolder.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.java)14
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SliderViewHolder.java)10
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SubmenuViewHolder.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SubmenuViewHolder.java)10
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/features/settings/utils/SettingsFile.java)36
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/CustomFilePickerFragment.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/fragments/CustomFilePickerFragment.java)4
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.java)28
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/MenuFragment.java129
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/model/Game.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameDatabase.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/model/GameDatabase.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameProvider.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/model/GameProvider.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/overlay/InputOverlay.java)14
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/overlay/InputOverlayDrawableButton.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableDpad.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/overlay/InputOverlayDrawableDpad.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableJoystick.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/overlay/InputOverlayDrawableJoystick.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/DividerItemDecoration.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/ui/DividerItemDecoration.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/TwoPaneOnBackPressedCallback.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/ui/TwoPaneOnBackPressedCallback.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainActivity.java)28
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainPresenter.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainPresenter.java)18
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainView.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainView.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesFragment.java)12
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesPresenter.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesPresenter.java)10
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesView.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesView.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Action1.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/Action1.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/AddDirectoryHelper.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/AddDirectoryHelper.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/BiMap.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/BiMap.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/BillingManager.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/BillingManager.java)14
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ControllerMappingHelper.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/ControllerMappingHelper.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/DirectoryInitialization.java)34
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryStateReceiver.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/DirectoryStateReceiver.java)4
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/EmulationMenuSettings.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileBrowserHelper.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/FileBrowserHelper.java)4
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileUtil.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/FileUtil.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ForegroundService.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/ForegroundService.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GameIconRequestHandler.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/GameIconRequestHandler.java)4
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/Log.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PermissionsHandler.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/PermissionsHandler.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PicassoRoundedCornersTransformation.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/PicassoRoundedCornersTransformation.java)2
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PicassoUtils.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/PicassoUtils.java)8
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/StartupHandler.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/StartupHandler.java)6
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ThemeUtil.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/utils/ThemeUtil.java)8
-rw-r--r--src/android/app/src/main/java/org/yuzu/yuzu_emu/viewholders/GameViewHolder.java (renamed from src/android/app/src/main/java/org/citra/citra_emu/viewholders/GameViewHolder.java)4
-rw-r--r--src/android/app/src/main/jni/native.cpp64
-rw-r--r--src/android/app/src/main/jni/native.h68
-rw-r--r--src/android/app/src/main/res/animator/menu_slide_in_from_end.xml20
-rw-r--r--src/android/app/src/main/res/animator/menu_slide_in_from_start.xml20
-rw-r--r--src/android/app/src/main/res/animator/menu_slide_out_to_end.xml21
-rw-r--r--src/android/app/src/main/res/animator/menu_slide_out_to_start.xml21
-rw-r--r--src/android/app/src/main/res/layout-ldrtl/list_item_cheat.xml38
-rw-r--r--src/android/app/src/main/res/layout/activity_cheats.xml22
-rw-r--r--src/android/app/src/main/res/layout/activity_emulation.xml31
-rw-r--r--src/android/app/src/main/res/layout/fragment_cheat_details.xml163
-rw-r--r--src/android/app/src/main/res/layout/fragment_cheat_list.xml27
-rw-r--r--src/android/app/src/main/res/layout/fragment_emulation.xml5
-rw-r--r--src/android/app/src/main/res/layout/fragment_ingame_menu.xml56
-rw-r--r--src/android/app/src/main/res/layout/fragment_settings.xml6
-rw-r--r--src/android/app/src/main/res/layout/list_item_cheat.xml38
-rw-r--r--src/android/app/src/main/res/menu/menu_emulation.xml118
-rw-r--r--src/android/app/src/main/res/mipmap-hdpi/ic_launcher.pngbin5899 -> 17950 bytes
-rw-r--r--src/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.pngbin7416 -> 48880 bytes
-rw-r--r--src/android/app/src/main/res/mipmap-mdpi/ic_launcher.pngbin3377 -> 15249 bytes
-rw-r--r--src/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.pngbin4413 -> 47388 bytes
-rw-r--r--src/android/app/src/main/res/mipmap-xhdpi/ic_launcher.pngbin8742 -> 17663 bytes
-rw-r--r--src/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.pngbin10530 -> 49903 bytes
-rw-r--r--src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.pngbin14300 -> 20413 bytes
-rw-r--r--src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.pngbin17511 -> 57817 bytes
-rw-r--r--src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.pngbin20804 -> 23487 bytes
-rw-r--r--src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.pngbin24886 -> 58695 bytes
-rw-r--r--src/android/app/src/main/res/values-night/colors.xml7
-rw-r--r--src/android/app/src/main/res/values/colors.xml7
-rw-r--r--src/android/app/src/main/res/values/dimens.xml9
-rw-r--r--src/android/app/src/main/res/values/integers.xml1
-rw-r--r--src/android/app/src/main/res/values/strings.xml74
-rw-r--r--src/android/app/src/main/res/values/styles.xml39
-rw-r--r--src/android/app/src/test/java/org/citra/citra_emu/ExampleUnitTest.java17
-rw-r--r--src/android/code-style-java.xml3
128 files changed, 934 insertions, 2509 deletions
diff --git a/src/android/app/build.gradle b/src/android/app/build.gradle
index 5a108743b..ffbadce14 100644
--- a/src/android/app/build.gradle
+++ b/src/android/app/build.gradle
@@ -30,7 +30,7 @@ android {
30 30
31 defaultConfig { 31 defaultConfig {
32 // TODO If this is ever modified, change application_id in strings.xml 32 // TODO If this is ever modified, change application_id in strings.xml
33 applicationId "org.citra.citra_emu" 33 applicationId "org.yuzu.yuzu_emu"
34 minSdkVersion 28 34 minSdkVersion 28
35 targetSdkVersion 29 35 targetSdkVersion 29
36 versionCode autoVersion 36 versionCode autoVersion
diff --git a/src/android/app/src/androidTest/java/org/citra/citra_emu/ExampleInstrumentedTest.java b/src/android/app/src/androidTest/java/org/yuzu/yuzu_emu/ExampleInstrumentedTest.java
index 6a25f2ce6..0cea19827 100644
--- a/src/android/app/src/androidTest/java/org/citra/citra_emu/ExampleInstrumentedTest.java
+++ b/src/android/app/src/androidTest/java/org/yuzu/yuzu_emu/ExampleInstrumentedTest.java
@@ -1,3 +1,3 @@
1package org.citra.citra_emu; 1package org.yuzu.yuzu_emu;
2 2
3import android.content.Context; 3import android.content.Context;
diff --git a/src/android/app/src/main/AndroidManifest.xml b/src/android/app/src/main/AndroidManifest.xml
index c2463e079..0d7e3f7ad 100644
--- a/src/android/app/src/main/AndroidManifest.xml
+++ b/src/android/app/src/main/AndroidManifest.xml
@@ -1,6 +1,6 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<manifest xmlns:android="http://schemas.android.com/apk/res/android" 2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 package="org.citra.citra_emu"> 3 package="org.yuzu.yuzu_emu">
4 <uses-feature 4 <uses-feature
5 android:name="android.hardware.touchscreen" 5 android:name="android.hardware.touchscreen"
6 android:required="false"/> 6 android:required="false"/>
@@ -11,9 +11,6 @@
11 <uses-feature android:glEsVersion="0x00030002" android:required="true" /> 11 <uses-feature android:glEsVersion="0x00030002" android:required="true" />
12 12
13 <uses-feature android:name="android.hardware.opengles.aep" android:required="true" /> 13 <uses-feature android:name="android.hardware.opengles.aep" android:required="true" />
14 <uses-feature
15 android:name="android.hardware.camera.any"
16 android:required="false" />
17 14
18 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 15 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
19 <uses-permission android:name="android.permission.INTERNET" /> 16 <uses-permission android:name="android.permission.INTERNET" />
@@ -23,7 +20,7 @@
23 20
24 21
25 <application 22 <application
26 android:name="org.citra.citra_emu.CitraApplication" 23 android:name="org.yuzu.yuzu_emu.YuzuApplication"
27 android:label="@string/app_name" 24 android:label="@string/app_name"
28 android:icon="@mipmap/ic_launcher" 25 android:icon="@mipmap/ic_launcher"
29 android:allowBackup="false" 26 android:allowBackup="false"
@@ -33,8 +30,8 @@
33 android:requestLegacyExternalStorage="true"> 30 android:requestLegacyExternalStorage="true">
34 31
35 <activity 32 <activity
36 android:name="org.citra.citra_emu.ui.main.MainActivity" 33 android:name="org.yuzu.yuzu_emu.ui.main.MainActivity"
37 android:theme="@style/CitraBase" 34 android:theme="@style/YuzuBase"
38 android:resizeableActivity="false"> 35 android:resizeableActivity="false">
39 36
40 <!-- This intentfilter marks this Activity as the one that gets launched from Home screen. --> 37 <!-- This intentfilter marks this Activity as the one that gets launched from Home screen. -->
@@ -46,22 +43,22 @@
46 </activity> 43 </activity>
47 44
48 <activity 45 <activity
49 android:name="org.citra.citra_emu.features.settings.ui.SettingsActivity" 46 android:name="org.yuzu.yuzu_emu.features.settings.ui.SettingsActivity"
50 android:configChanges="orientation|screenSize|uiMode" 47 android:configChanges="orientation|screenSize|uiMode"
51 android:theme="@style/CitraSettingsBase" 48 android:theme="@style/YuzuSettingsBase"
52 android:label="@string/preferences_settings"/> 49 android:label="@string/preferences_settings"/>
53 50
54 <activity 51 <activity
55 android:name="org.citra.citra_emu.activities.EmulationActivity" 52 android:name="org.yuzu.yuzu_emu.activities.EmulationActivity"
56 android:resizeableActivity="false" 53 android:resizeableActivity="false"
57 android:theme="@style/CitraEmulationBase" 54 android:theme="@style/YuzuEmulationBase"
58 android:launchMode="singleTop" 55 android:launchMode="singleTop"
59 android:screenOrientation="landscape"/> 56 android:screenOrientation="landscape"/>
60 57
61 <service android:name="org.citra.citra_emu.utils.ForegroundService"/> 58 <service android:name="org.yuzu.yuzu_emu.utils.ForegroundService"/>
62 59
63 <activity 60 <activity
64 android:name="org.citra.citra_emu.activities.CustomFilePickerActivity" 61 android:name="org.yuzu.yuzu_emu.activities.CustomFilePickerActivity"
65 android:label="@string/app_name" 62 android:label="@string/app_name"
66 android:theme="@style/FilePickerTheme"> 63 android:theme="@style/FilePickerTheme">
67 <intent-filter> 64 <intent-filter>
@@ -70,16 +67,10 @@
70 </intent-filter> 67 </intent-filter>
71 </activity> 68 </activity>
72 69
73 <activity 70 <service android:name="org.yuzu.yuzu_emu.utils.DirectoryInitialization"/>
74 android:name="org.citra.citra_emu.features.cheats.ui.CheatsActivity"
75 android:exported="false"
76 android:theme="@style/CitraSettingsBase"
77 android:label="@string/cheats"/>
78
79 <service android:name="org.citra.citra_emu.utils.DirectoryInitialization"/>
80 71
81 <provider 72 <provider
82 android:name="org.citra.citra_emu.model.GameProvider" 73 android:name="org.yuzu.yuzu_emu.model.GameProvider"
83 android:authorities="${applicationId}.provider" 74 android:authorities="${applicationId}.provider"
84 android:enabled="true" 75 android:enabled="true"
85 android:exported="false"> 76 android:exported="false">
@@ -97,3 +88,4 @@
97 </application> 88 </application>
98 89
99</manifest> 90</manifest>
91
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/applets/MiiSelector.java b/src/android/app/src/main/java/org/citra/citra_emu/applets/MiiSelector.java
deleted file mode 100644
index 3586a9b34..000000000
--- a/src/android/app/src/main/java/org/citra/citra_emu/applets/MiiSelector.java
+++ /dev/null
@@ -1,122 +0,0 @@
1// Copyright 2020 Citra Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5package org.citra.citra_emu.applets;
6
7import android.app.Activity;
8import android.app.Dialog;
9import android.os.Bundle;
10
11import org.citra.citra_emu.NativeLibrary;
12import org.citra.citra_emu.R;
13import org.citra.citra_emu.activities.EmulationActivity;
14
15import java.util.ArrayList;
16import java.util.Arrays;
17import java.util.Objects;
18
19import androidx.annotation.NonNull;
20import androidx.appcompat.app.AlertDialog;
21import androidx.fragment.app.DialogFragment;
22
23public final class MiiSelector {
24 public static class MiiSelectorConfig implements java.io.Serializable {
25 public boolean enable_cancel_button;
26 public String title;
27 public long initially_selected_mii_index;
28 // List of Miis to display
29 public String[] mii_names;
30 }
31
32 public static class MiiSelectorData {
33 public long return_code;
34 public int index;
35
36 private MiiSelectorData(long return_code, int index) {
37 this.return_code = return_code;
38 this.index = index;
39 }
40 }
41
42 public static class MiiSelectorDialogFragment extends DialogFragment {
43 static MiiSelectorDialogFragment newInstance(MiiSelectorConfig config) {
44 MiiSelectorDialogFragment frag = new MiiSelectorDialogFragment();
45 Bundle args = new Bundle();
46 args.putSerializable("config", config);
47 frag.setArguments(args);
48 return frag;
49 }
50
51 @NonNull
52 @Override
53 public Dialog onCreateDialog(Bundle savedInstanceState) {
54 final Activity emulationActivity = Objects.requireNonNull(getActivity());
55
56 MiiSelectorConfig config =
57 Objects.requireNonNull((MiiSelectorConfig) Objects.requireNonNull(getArguments())
58 .getSerializable("config"));
59
60 // Note: we intentionally leave out the Standard Mii in the native code so that
61 // the string can get translated
62 ArrayList<String> list = new ArrayList<>();
63 list.add(emulationActivity.getString(R.string.standard_mii));
64 list.addAll(Arrays.asList(config.mii_names));
65
66 final int initialIndex = config.initially_selected_mii_index < list.size()
67 ? (int) config.initially_selected_mii_index
68 : 0;
69 data.index = initialIndex;
70 AlertDialog.Builder builder =
71 new AlertDialog.Builder(emulationActivity)
72 .setTitle(config.title.isEmpty()
73 ? emulationActivity.getString(R.string.mii_selector)
74 : config.title)
75 .setSingleChoiceItems(list.toArray(new String[]{}), initialIndex,
76 (dialog, which) -> {
77 data.index = which;
78 })
79 .setPositiveButton(android.R.string.ok, (dialog, which) -> {
80 data.return_code = 0;
81 synchronized (finishLock) {
82 finishLock.notifyAll();
83 }
84 });
85 if (config.enable_cancel_button) {
86 builder.setNegativeButton(android.R.string.cancel, (dialog, which) -> {
87 data.return_code = 1;
88 synchronized (finishLock) {
89 finishLock.notifyAll();
90 }
91 });
92 }
93 setCancelable(false);
94 return builder.create();
95 }
96 }
97
98 private static MiiSelectorData data;
99 private static final Object finishLock = new Object();
100
101 private static void ExecuteImpl(MiiSelectorConfig config) {
102 final EmulationActivity emulationActivity = NativeLibrary.sEmulationActivity.get();
103
104 data = new MiiSelectorData(0, 0);
105
106 MiiSelectorDialogFragment fragment = MiiSelectorDialogFragment.newInstance(config);
107 fragment.show(emulationActivity.getSupportFragmentManager(), "mii_selector");
108 }
109
110 public static MiiSelectorData Execute(MiiSelectorConfig config) {
111 NativeLibrary.sEmulationActivity.get().runOnUiThread(() -> ExecuteImpl(config));
112
113 synchronized (finishLock) {
114 try {
115 finishLock.wait();
116 } catch (Exception ignored) {
117 }
118 }
119
120 return data;
121 }
122}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/camera/StillImageCameraHelper.java b/src/android/app/src/main/java/org/citra/citra_emu/camera/StillImageCameraHelper.java
deleted file mode 100644
index 701cb0710..000000000
--- a/src/android/app/src/main/java/org/citra/citra_emu/camera/StillImageCameraHelper.java
+++ /dev/null
@@ -1,65 +0,0 @@
1// Copyright 2020 Citra Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5package org.citra.citra_emu.camera;
6
7import android.content.Intent;
8import android.graphics.Bitmap;
9import android.provider.MediaStore;
10
11import org.citra.citra_emu.NativeLibrary;
12import org.citra.citra_emu.R;
13import org.citra.citra_emu.activities.EmulationActivity;
14import org.citra.citra_emu.utils.PicassoUtils;
15
16import androidx.annotation.Nullable;
17
18// Used in native code.
19public final class StillImageCameraHelper {
20 public static final int REQUEST_CAMERA_FILE_PICKER = 1;
21 private static final Object filePickerLock = new Object();
22 private static @Nullable
23 String filePickerPath;
24
25 // Opens file picker for camera.
26 public static @Nullable
27 String OpenFilePicker() {
28 final EmulationActivity emulationActivity = NativeLibrary.sEmulationActivity.get();
29
30 // At this point, we are assuming that we already have permissions as they are
31 // needed to launch a game
32 emulationActivity.runOnUiThread(() -> {
33 Intent intent = new Intent(Intent.ACTION_PICK);
34 intent.setDataAndType(MediaStore.Images.Media.INTERNAL_CONTENT_URI, "image/*");
35 emulationActivity.startActivityForResult(
36 Intent.createChooser(intent,
37 emulationActivity.getString(R.string.camera_select_image)),
38 REQUEST_CAMERA_FILE_PICKER);
39 });
40
41 synchronized (filePickerLock) {
42 try {
43 filePickerLock.wait();
44 } catch (InterruptedException ignored) {
45 }
46 }
47
48 return filePickerPath;
49 }
50
51 // Called from EmulationActivity.
52 public static void OnFilePickerResult(Intent result) {
53 filePickerPath = result == null ? null : result.getDataString();
54
55 synchronized (filePickerLock) {
56 filePickerLock.notifyAll();
57 }
58 }
59
60 // Blocking call. Load image from file and crop/resize it to fit in width x height.
61 @Nullable
62 public static Bitmap LoadImageFromFile(String uri, int width, int height) {
63 return PicassoUtils.LoadBitmapFromFile(uri, width, height);
64 }
65}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/disk_shader_cache/DiskShaderCacheProgress.java b/src/android/app/src/main/java/org/citra/citra_emu/disk_shader_cache/DiskShaderCacheProgress.java
deleted file mode 100644
index d6d14cc5f..000000000
--- a/src/android/app/src/main/java/org/citra/citra_emu/disk_shader_cache/DiskShaderCacheProgress.java
+++ /dev/null
@@ -1,138 +0,0 @@
1// Copyright 2021 Citra Emulator Project
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5package org.citra.citra_emu.disk_shader_cache;
6
7import android.app.Activity;
8import android.app.Dialog;
9import android.content.DialogInterface;
10import android.os.Bundle;
11import android.view.LayoutInflater;
12import android.view.View;
13import android.widget.ProgressBar;
14import android.widget.TextView;
15
16import androidx.annotation.NonNull;
17import androidx.appcompat.app.AlertDialog;
18import androidx.fragment.app.DialogFragment;
19
20import org.citra.citra_emu.NativeLibrary;
21import org.citra.citra_emu.R;
22import org.citra.citra_emu.activities.EmulationActivity;
23import org.citra.citra_emu.utils.Log;
24
25import java.util.Objects;
26
27public class DiskShaderCacheProgress {
28
29 // Equivalent to VideoCore::LoadCallbackStage
30 public enum LoadCallbackStage {
31 Prepare,
32 Decompile,
33 Build,
34 Complete,
35 }
36
37 private static final Object finishLock = new Object();
38 private static ProgressDialogFragment fragment;
39
40 public static class ProgressDialogFragment extends DialogFragment {
41 ProgressBar progressBar;
42 TextView progressText;
43 AlertDialog dialog;
44
45 static ProgressDialogFragment newInstance(String title, String message) {
46 ProgressDialogFragment frag = new ProgressDialogFragment();
47 Bundle args = new Bundle();
48 args.putString("title", title);
49 args.putString("message", message);
50 frag.setArguments(args);
51 return frag;
52 }
53
54 @NonNull
55 @Override
56 public Dialog onCreateDialog(Bundle savedInstanceState) {
57 final Activity emulationActivity = Objects.requireNonNull(getActivity());
58
59 final String title = Objects.requireNonNull(Objects.requireNonNull(getArguments()).getString("title"));
60 final String message = Objects.requireNonNull(Objects.requireNonNull(getArguments()).getString("message"));
61
62 LayoutInflater inflater = LayoutInflater.from(emulationActivity);
63 View view = inflater.inflate(R.layout.dialog_progress_bar, null);
64
65 progressBar = view.findViewById(R.id.progress_bar);
66 progressText = view.findViewById(R.id.progress_text);
67 progressText.setText("");
68
69 setCancelable(false);
70 setRetainInstance(true);
71
72 AlertDialog.Builder builder = new AlertDialog.Builder(emulationActivity);
73 builder.setTitle(title);
74 builder.setMessage(message);
75 builder.setView(view);
76 builder.setNegativeButton(android.R.string.cancel, null);
77
78 dialog = builder.create();
79 dialog.create();
80
81 dialog.getButton(DialogInterface.BUTTON_NEGATIVE).setOnClickListener((v) -> emulationActivity.onBackPressed());
82
83 synchronized (finishLock) {
84 finishLock.notifyAll();
85 }
86
87 return dialog;
88 }
89
90 private void onUpdateProgress(String msg, int progress, int max) {
91 Objects.requireNonNull(getActivity()).runOnUiThread(() -> {
92 progressBar.setProgress(progress);
93 progressBar.setMax(max);
94 progressText.setText(String.format("%d/%d", progress, max));
95 dialog.setMessage(msg);
96 });
97 }
98 }
99
100 private static void prepareDialog() {
101 NativeLibrary.sEmulationActivity.get().runOnUiThread(() -> {
102 final EmulationActivity emulationActivity = NativeLibrary.sEmulationActivity.get();
103 fragment = ProgressDialogFragment.newInstance(emulationActivity.getString(R.string.loading), emulationActivity.getString(R.string.preparing_shaders));
104 fragment.show(emulationActivity.getSupportFragmentManager(), "diskShaders");
105 });
106
107 synchronized (finishLock) {
108 try {
109 finishLock.wait();
110 } catch (Exception ignored) {
111 }
112 }
113 }
114
115 public static void loadProgress(LoadCallbackStage stage, int progress, int max) {
116 final EmulationActivity emulationActivity = NativeLibrary.sEmulationActivity.get();
117 if (emulationActivity == null) {
118 Log.error("[DiskShaderCacheProgress] EmulationActivity not present");
119 return;
120 }
121
122 switch (stage) {
123 case Prepare:
124 prepareDialog();
125 break;
126 case Decompile:
127 fragment.onUpdateProgress(emulationActivity.getString(R.string.preparing_shaders), progress, max);
128 break;
129 case Build:
130 fragment.onUpdateProgress(emulationActivity.getString(R.string.building_shaders), progress, max);
131 break;
132 case Complete:
133 // Workaround for when dialog is dismissed when the app is in the background
134 fragment.dismissAllowingStateLoss();
135 break;
136 }
137 }
138}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/model/Cheat.java b/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/model/Cheat.java
deleted file mode 100644
index 93b026364..000000000
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/model/Cheat.java
+++ /dev/null
@@ -1,57 +0,0 @@
1package org.citra.citra_emu.features.cheats.model;
2
3import androidx.annotation.Keep;
4import androidx.annotation.NonNull;
5import androidx.annotation.Nullable;
6
7public class Cheat {
8 @Keep
9 private final long mPointer;
10
11 private Runnable mEnabledChangedCallback = null;
12
13 @Keep
14 private Cheat(long pointer) {
15 mPointer = pointer;
16 }
17
18 @Override
19 protected native void finalize();
20
21 @NonNull
22 public native String getName();
23
24 @NonNull
25 public native String getNotes();
26
27 @NonNull
28 public native String getCode();
29
30 public native boolean getEnabled();
31
32 public void setEnabled(boolean enabled) {
33 setEnabledImpl(enabled);
34 onEnabledChanged();
35 }
36
37 private native void setEnabledImpl(boolean enabled);
38
39 public void setEnabledChangedCallback(@Nullable Runnable callback) {
40 mEnabledChangedCallback = callback;
41 }
42
43 private void onEnabledChanged() {
44 if (mEnabledChangedCallback != null) {
45 mEnabledChangedCallback.run();
46 }
47 }
48
49 /**
50 * If the code is valid, returns 0. Otherwise, returns the 1-based index
51 * for the line containing the error.
52 */
53 public static native int isValidGatewayCode(@NonNull String code);
54
55 public static native Cheat createGatewayCode(@NonNull String name, @NonNull String notes,
56 @NonNull String code);
57}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/model/CheatEngine.java b/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/model/CheatEngine.java
deleted file mode 100644
index 5748162bb..000000000
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/model/CheatEngine.java
+++ /dev/null
@@ -1,13 +0,0 @@
1package org.citra.citra_emu.features.cheats.model;
2
3public class CheatEngine {
4 public static native Cheat[] getCheats();
5
6 public static native void addCheat(Cheat cheat);
7
8 public static native void removeCheat(int index);
9
10 public static native void updateCheat(int index, Cheat newCheat);
11
12 public static native void saveCheatFile();
13}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/model/CheatsViewModel.java b/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/model/CheatsViewModel.java
deleted file mode 100644
index 66f4202d8..000000000
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/model/CheatsViewModel.java
+++ /dev/null
@@ -1,177 +0,0 @@
1package org.citra.citra_emu.features.cheats.model;
2
3import androidx.lifecycle.LiveData;
4import androidx.lifecycle.MutableLiveData;
5import androidx.lifecycle.ViewModel;
6
7public class CheatsViewModel extends ViewModel {
8 private int mSelectedCheatPosition = -1;
9 private final MutableLiveData<Cheat> mSelectedCheat = new MutableLiveData<>(null);
10 private final MutableLiveData<Boolean> mIsAdding = new MutableLiveData<>(false);
11 private final MutableLiveData<Boolean> mIsEditing = new MutableLiveData<>(false);
12
13 private final MutableLiveData<Integer> mCheatAddedEvent = new MutableLiveData<>(null);
14 private final MutableLiveData<Integer> mCheatChangedEvent = new MutableLiveData<>(null);
15 private final MutableLiveData<Integer> mCheatDeletedEvent = new MutableLiveData<>(null);
16 private final MutableLiveData<Boolean> mOpenDetailsViewEvent = new MutableLiveData<>(false);
17
18 private Cheat[] mCheats;
19 private boolean mCheatsNeedSaving = false;
20
21 public void load() {
22 mCheats = CheatEngine.getCheats();
23
24 for (int i = 0; i < mCheats.length; i++) {
25 int position = i;
26 mCheats[i].setEnabledChangedCallback(() -> {
27 mCheatsNeedSaving = true;
28 notifyCheatUpdated(position);
29 });
30 }
31 }
32
33 public void saveIfNeeded() {
34 if (mCheatsNeedSaving) {
35 CheatEngine.saveCheatFile();
36 mCheatsNeedSaving = false;
37 }
38 }
39
40 public Cheat[] getCheats() {
41 return mCheats;
42 }
43
44 public LiveData<Cheat> getSelectedCheat() {
45 return mSelectedCheat;
46 }
47
48 public void setSelectedCheat(Cheat cheat, int position) {
49 if (mIsEditing.getValue()) {
50 setIsEditing(false);
51 }
52
53 mSelectedCheat.setValue(cheat);
54 mSelectedCheatPosition = position;
55 }
56
57 public LiveData<Boolean> getIsAdding() {
58 return mIsAdding;
59 }
60
61 public LiveData<Boolean> getIsEditing() {
62 return mIsEditing;
63 }
64
65 public void setIsEditing(boolean isEditing) {
66 mIsEditing.setValue(isEditing);
67
68 if (mIsAdding.getValue() && !isEditing) {
69 mIsAdding.setValue(false);
70 setSelectedCheat(null, -1);
71 }
72 }
73
74 /**
75 * When a cheat is added, the integer stored in the returned LiveData
76 * changes to the position of that cheat, then changes back to null.
77 */
78 public LiveData<Integer> getCheatAddedEvent() {
79 return mCheatAddedEvent;
80 }
81
82 private void notifyCheatAdded(int position) {
83 mCheatAddedEvent.setValue(position);
84 mCheatAddedEvent.setValue(null);
85 }
86
87 public void startAddingCheat() {
88 mSelectedCheat.setValue(null);
89 mSelectedCheatPosition = -1;
90
91 mIsAdding.setValue(true);
92 mIsEditing.setValue(true);
93 }
94
95 public void finishAddingCheat(Cheat cheat) {
96 if (!mIsAdding.getValue()) {
97 throw new IllegalStateException();
98 }
99
100 mIsAdding.setValue(false);
101 mIsEditing.setValue(false);
102
103 int position = mCheats.length;
104
105 CheatEngine.addCheat(cheat);
106
107 mCheatsNeedSaving = true;
108 load();
109
110 notifyCheatAdded(position);
111 setSelectedCheat(mCheats[position], position);
112 }
113
114 /**
115 * When a cheat is edited, the integer stored in the returned LiveData
116 * changes to the position of that cheat, then changes back to null.
117 */
118 public LiveData<Integer> getCheatUpdatedEvent() {
119 return mCheatChangedEvent;
120 }
121
122 /**
123 * Notifies that an edit has been made to the contents of the cheat at the given position.
124 */
125 private void notifyCheatUpdated(int position) {
126 mCheatChangedEvent.setValue(position);
127 mCheatChangedEvent.setValue(null);
128 }
129
130 public void updateSelectedCheat(Cheat newCheat) {
131 CheatEngine.updateCheat(mSelectedCheatPosition, newCheat);
132
133 mCheatsNeedSaving = true;
134 load();
135
136 notifyCheatUpdated(mSelectedCheatPosition);
137 setSelectedCheat(mCheats[mSelectedCheatPosition], mSelectedCheatPosition);
138 }
139
140 /**
141 * When a cheat is deleted, the integer stored in the returned LiveData
142 * changes to the position of that cheat, then changes back to null.
143 */
144 public LiveData<Integer> getCheatDeletedEvent() {
145 return mCheatDeletedEvent;
146 }
147
148 /**
149 * Notifies that the cheat at the given position has been deleted.
150 */
151 private void notifyCheatDeleted(int position) {
152 mCheatDeletedEvent.setValue(position);
153 mCheatDeletedEvent.setValue(null);
154 }
155
156 public void deleteSelectedCheat() {
157 int position = mSelectedCheatPosition;
158
159 setSelectedCheat(null, -1);
160
161 CheatEngine.removeCheat(position);
162
163 mCheatsNeedSaving = true;
164 load();
165
166 notifyCheatDeleted(position);
167 }
168
169 public LiveData<Boolean> getOpenDetailsViewEvent() {
170 return mOpenDetailsViewEvent;
171 }
172
173 public void openDetailsView() {
174 mOpenDetailsViewEvent.setValue(true);
175 mOpenDetailsViewEvent.setValue(false);
176 }
177}
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 @@
1package org.citra.citra_emu.features.cheats.ui;
2
3import android.os.Bundle;
4import android.view.LayoutInflater;
5import android.view.View;
6import android.view.ViewGroup;
7import android.widget.Button;
8import android.widget.EditText;
9import android.widget.ScrollView;
10import android.widget.TextView;
11
12import androidx.annotation.NonNull;
13import androidx.annotation.Nullable;
14import androidx.appcompat.app.AlertDialog;
15import androidx.fragment.app.Fragment;
16import androidx.lifecycle.ViewModelProvider;
17
18import org.citra.citra_emu.R;
19import org.citra.citra_emu.features.cheats.model.Cheat;
20import org.citra.citra_emu.features.cheats.model.CheatsViewModel;
21
22public class CheatDetailsFragment extends Fragment {
23 private View mRoot;
24 private ScrollView mScrollView;
25 private TextView mLabelName;
26 private EditText mEditName;
27 private EditText mEditNotes;
28 private EditText mEditCode;
29 private Button mButtonDelete;
30 private Button mButtonEdit;
31 private Button mButtonCancel;
32 private Button mButtonOk;
33
34 private CheatsViewModel mViewModel;
35
36 @Nullable
37 @Override
38 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
39 @Nullable Bundle savedInstanceState) {
40 return inflater.inflate(R.layout.fragment_cheat_details, container, false);
41 }
42
43 @Override
44 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
45 mRoot = view.findViewById(R.id.root);
46 mScrollView = view.findViewById(R.id.scroll_view);
47 mLabelName = view.findViewById(R.id.label_name);
48 mEditName = view.findViewById(R.id.edit_name);
49 mEditNotes = view.findViewById(R.id.edit_notes);
50 mEditCode = view.findViewById(R.id.edit_code);
51 mButtonDelete = view.findViewById(R.id.button_delete);
52 mButtonEdit = view.findViewById(R.id.button_edit);
53 mButtonCancel = view.findViewById(R.id.button_cancel);
54 mButtonOk = view.findViewById(R.id.button_ok);
55
56 CheatsActivity activity = (CheatsActivity) requireActivity();
57 mViewModel = new ViewModelProvider(activity).get(CheatsViewModel.class);
58
59 mViewModel.getSelectedCheat().observe(getViewLifecycleOwner(),
60 this::onSelectedCheatUpdated);
61 mViewModel.getIsEditing().observe(getViewLifecycleOwner(), this::onIsEditingUpdated);
62
63 mButtonDelete.setOnClickListener(this::onDeleteClicked);
64 mButtonEdit.setOnClickListener(this::onEditClicked);
65 mButtonCancel.setOnClickListener(this::onCancelClicked);
66 mButtonOk.setOnClickListener(this::onOkClicked);
67
68 // On a portrait phone screen (or other narrow screen), only one of the two panes are shown
69 // at the same time. If the user is navigating using a d-pad and moves focus to an element
70 // in the currently hidden pane, we need to manually show that pane.
71 CheatsActivity.setOnFocusChangeListenerRecursively(view,
72 (v, hasFocus) -> activity.onDetailsViewFocusChange(hasFocus));
73 }
74
75 private void clearEditErrors() {
76 mEditName.setError(null);
77 mEditCode.setError(null);
78 }
79
80 private void onDeleteClicked(View view) {
81 String name = mEditName.getText().toString();
82
83 AlertDialog.Builder builder = new AlertDialog.Builder(requireContext());
84 builder.setMessage(getString(R.string.cheats_delete_confirmation, name));
85 builder.setPositiveButton(android.R.string.yes,
86 (dialog, i) -> mViewModel.deleteSelectedCheat());
87 builder.setNegativeButton(android.R.string.no, null);
88 builder.show();
89 }
90
91 private void onEditClicked(View view) {
92 mViewModel.setIsEditing(true);
93 mButtonOk.requestFocus();
94 }
95
96 private void onCancelClicked(View view) {
97 mViewModel.setIsEditing(false);
98 onSelectedCheatUpdated(mViewModel.getSelectedCheat().getValue());
99 mButtonDelete.requestFocus();
100 }
101
102 private void onOkClicked(View view) {
103 clearEditErrors();
104
105 String name = mEditName.getText().toString();
106 String notes = mEditNotes.getText().toString();
107 String code = mEditCode.getText().toString();
108
109 if (name.isEmpty()) {
110 mEditName.setError(getString(R.string.cheats_error_no_name));
111 mScrollView.smoothScrollTo(0, mLabelName.getTop());
112 return;
113 } else if (code.isEmpty()) {
114 mEditCode.setError(getString(R.string.cheats_error_no_code_lines));
115 mScrollView.smoothScrollTo(0, mEditCode.getBottom());
116 return;
117 }
118
119 int validityResult = Cheat.isValidGatewayCode(code);
120
121 if (validityResult != 0) {
122 mEditCode.setError(getString(R.string.cheats_error_on_line, validityResult));
123 mScrollView.smoothScrollTo(0, mEditCode.getBottom());
124 return;
125 }
126
127 Cheat newCheat = Cheat.createGatewayCode(name, notes, code);
128
129 if (mViewModel.getIsAdding().getValue()) {
130 mViewModel.finishAddingCheat(newCheat);
131 } else {
132 mViewModel.updateSelectedCheat(newCheat);
133 }
134
135 mButtonEdit.requestFocus();
136 }
137
138 private void onSelectedCheatUpdated(@Nullable Cheat cheat) {
139 clearEditErrors();
140
141 boolean isEditing = mViewModel.getIsEditing().getValue();
142
143 mRoot.setVisibility(isEditing || cheat != null ? View.VISIBLE : View.GONE);
144
145 // If the fragment was recreated while editing a cheat, it's vital that we
146 // don't repopulate the fields, otherwise the user's changes will be lost
147 if (!isEditing) {
148 if (cheat == null) {
149 mEditName.setText("");
150 mEditNotes.setText("");
151 mEditCode.setText("");
152 } else {
153 mEditName.setText(cheat.getName());
154 mEditNotes.setText(cheat.getNotes());
155 mEditCode.setText(cheat.getCode());
156 }
157 }
158 }
159
160 private void onIsEditingUpdated(boolean isEditing) {
161 if (isEditing) {
162 mRoot.setVisibility(View.VISIBLE);
163 }
164
165 mEditName.setEnabled(isEditing);
166 mEditNotes.setEnabled(isEditing);
167 mEditCode.setEnabled(isEditing);
168
169 mButtonDelete.setVisibility(isEditing ? View.GONE : View.VISIBLE);
170 mButtonEdit.setVisibility(isEditing ? View.GONE : View.VISIBLE);
171 mButtonCancel.setVisibility(isEditing ? View.VISIBLE : View.GONE);
172 mButtonOk.setVisibility(isEditing ? View.VISIBLE : View.GONE);
173 }
174}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatListFragment.java b/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatListFragment.java
deleted file mode 100644
index 6c67a31d4..000000000
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatListFragment.java
+++ /dev/null
@@ -1,46 +0,0 @@
1package org.citra.citra_emu.features.cheats.ui;
2
3import android.os.Bundle;
4import android.view.LayoutInflater;
5import android.view.View;
6import android.view.ViewGroup;
7
8import androidx.annotation.NonNull;
9import androidx.annotation.Nullable;
10import androidx.fragment.app.Fragment;
11import androidx.lifecycle.ViewModelProvider;
12import androidx.recyclerview.widget.LinearLayoutManager;
13import androidx.recyclerview.widget.RecyclerView;
14
15import com.google.android.material.floatingactionbutton.FloatingActionButton;
16
17import org.citra.citra_emu.R;
18import org.citra.citra_emu.features.cheats.model.CheatsViewModel;
19import org.citra.citra_emu.ui.DividerItemDecoration;
20
21public class CheatListFragment extends Fragment {
22 @Nullable
23 @Override
24 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
25 @Nullable Bundle savedInstanceState) {
26 return inflater.inflate(R.layout.fragment_cheat_list, container, false);
27 }
28
29 @Override
30 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
31 RecyclerView recyclerView = view.findViewById(R.id.cheat_list);
32 FloatingActionButton fab = view.findViewById(R.id.fab);
33
34 CheatsActivity activity = (CheatsActivity) requireActivity();
35 CheatsViewModel viewModel = new ViewModelProvider(activity).get(CheatsViewModel.class);
36
37 recyclerView.setAdapter(new CheatsAdapter(activity, viewModel));
38 recyclerView.setLayoutManager(new LinearLayoutManager(activity));
39 recyclerView.addItemDecoration(new DividerItemDecoration(activity, null));
40
41 fab.setOnClickListener(v -> {
42 viewModel.startAddingCheat();
43 viewModel.openDetailsView();
44 });
45 }
46}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatViewHolder.java b/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatViewHolder.java
deleted file mode 100644
index 8ba8f86e7..000000000
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatViewHolder.java
+++ /dev/null
@@ -1,56 +0,0 @@
1package org.citra.citra_emu.features.cheats.ui;
2
3import android.view.View;
4import android.widget.CheckBox;
5import android.widget.CompoundButton;
6import android.widget.TextView;
7
8import androidx.annotation.NonNull;
9import androidx.lifecycle.ViewModelProvider;
10import androidx.recyclerview.widget.RecyclerView;
11
12import org.citra.citra_emu.R;
13import org.citra.citra_emu.features.cheats.model.Cheat;
14import org.citra.citra_emu.features.cheats.model.CheatsViewModel;
15
16public class CheatViewHolder extends RecyclerView.ViewHolder
17 implements View.OnClickListener, CompoundButton.OnCheckedChangeListener {
18 private final View mRoot;
19 private final TextView mName;
20 private final CheckBox mCheckbox;
21
22 private CheatsViewModel mViewModel;
23 private Cheat mCheat;
24 private int mPosition;
25
26 public CheatViewHolder(@NonNull View itemView) {
27 super(itemView);
28
29 mRoot = itemView.findViewById(R.id.root);
30 mName = itemView.findViewById(R.id.text_name);
31 mCheckbox = itemView.findViewById(R.id.checkbox);
32 }
33
34 public void bind(CheatsActivity activity, Cheat cheat, int position) {
35 mCheckbox.setOnCheckedChangeListener(null);
36
37 mViewModel = new ViewModelProvider(activity).get(CheatsViewModel.class);
38 mCheat = cheat;
39 mPosition = position;
40
41 mName.setText(mCheat.getName());
42 mCheckbox.setChecked(mCheat.getEnabled());
43
44 mRoot.setOnClickListener(this);
45 mCheckbox.setOnCheckedChangeListener(this);
46 }
47
48 public void onClick(View root) {
49 mViewModel.setSelectedCheat(mCheat, mPosition);
50 mViewModel.openDetailsView();
51 }
52
53 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
54 mCheat.setEnabled(isChecked);
55 }
56}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatsActivity.java b/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatsActivity.java
deleted file mode 100644
index a36bf427c..000000000
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatsActivity.java
+++ /dev/null
@@ -1,161 +0,0 @@
1package org.citra.citra_emu.features.cheats.ui;
2
3import android.content.Context;
4import android.content.Intent;
5import android.os.Bundle;
6import android.view.Menu;
7import android.view.MenuInflater;
8import android.view.View;
9import android.view.ViewGroup;
10
11import androidx.annotation.NonNull;
12import androidx.appcompat.app.AppCompatActivity;
13import androidx.core.view.ViewCompat;
14import androidx.lifecycle.ViewModelProvider;
15import androidx.slidingpanelayout.widget.SlidingPaneLayout;
16
17import org.citra.citra_emu.R;
18import org.citra.citra_emu.features.cheats.model.Cheat;
19import org.citra.citra_emu.features.cheats.model.CheatsViewModel;
20import org.citra.citra_emu.ui.TwoPaneOnBackPressedCallback;
21
22public class CheatsActivity extends AppCompatActivity
23 implements SlidingPaneLayout.PanelSlideListener {
24 private CheatsViewModel mViewModel;
25
26 private SlidingPaneLayout mSlidingPaneLayout;
27 private View mCheatList;
28 private View mCheatDetails;
29
30 private View mCheatListLastFocus;
31 private View mCheatDetailsLastFocus;
32
33 public static void launch(Context context) {
34 Intent intent = new Intent(context, CheatsActivity.class);
35 context.startActivity(intent);
36 }
37
38 @Override
39 protected void onCreate(Bundle savedInstanceState) {
40 super.onCreate(savedInstanceState);
41
42 mViewModel = new ViewModelProvider(this).get(CheatsViewModel.class);
43 mViewModel.load();
44
45 setContentView(R.layout.activity_cheats);
46
47 mSlidingPaneLayout = findViewById(R.id.sliding_pane_layout);
48 mCheatList = findViewById(R.id.cheat_list);
49 mCheatDetails = findViewById(R.id.cheat_details);
50
51 mCheatListLastFocus = mCheatList;
52 mCheatDetailsLastFocus = mCheatDetails;
53
54 mSlidingPaneLayout.addPanelSlideListener(this);
55
56 getOnBackPressedDispatcher().addCallback(this,
57 new TwoPaneOnBackPressedCallback(mSlidingPaneLayout));
58
59 mViewModel.getSelectedCheat().observe(this, this::onSelectedCheatChanged);
60 mViewModel.getIsEditing().observe(this, this::onIsEditingChanged);
61 onSelectedCheatChanged(mViewModel.getSelectedCheat().getValue());
62
63 mViewModel.getOpenDetailsViewEvent().observe(this, this::openDetailsView);
64
65 // Show "Up" button in the action bar for navigation
66 getSupportActionBar().setDisplayHomeAsUpEnabled(true);
67 }
68
69 @Override
70 public boolean onCreateOptionsMenu(Menu menu) {
71 MenuInflater inflater = getMenuInflater();
72 inflater.inflate(R.menu.menu_settings, menu);
73
74 return true;
75 }
76
77 @Override
78 protected void onStop() {
79 super.onStop();
80
81 mViewModel.saveIfNeeded();
82 }
83
84 @Override
85 public void onPanelSlide(@NonNull View panel, float slideOffset) {
86 }
87
88 @Override
89 public void onPanelOpened(@NonNull View panel) {
90 boolean rtl = ViewCompat.getLayoutDirection(panel) == ViewCompat.LAYOUT_DIRECTION_RTL;
91 mCheatDetailsLastFocus.requestFocus(rtl ? View.FOCUS_LEFT : View.FOCUS_RIGHT);
92 }
93
94 @Override
95 public void onPanelClosed(@NonNull View panel) {
96 boolean rtl = ViewCompat.getLayoutDirection(panel) == ViewCompat.LAYOUT_DIRECTION_RTL;
97 mCheatListLastFocus.requestFocus(rtl ? View.FOCUS_RIGHT : View.FOCUS_LEFT);
98 }
99
100 private void onIsEditingChanged(boolean isEditing) {
101 if (isEditing) {
102 mSlidingPaneLayout.setLockMode(SlidingPaneLayout.LOCK_MODE_UNLOCKED);
103 }
104 }
105
106 private void onSelectedCheatChanged(Cheat selectedCheat) {
107 boolean cheatSelected = selectedCheat != null || mViewModel.getIsEditing().getValue();
108
109 if (!cheatSelected && mSlidingPaneLayout.isOpen()) {
110 mSlidingPaneLayout.close();
111 }
112
113 mSlidingPaneLayout.setLockMode(cheatSelected ?
114 SlidingPaneLayout.LOCK_MODE_UNLOCKED : SlidingPaneLayout.LOCK_MODE_LOCKED_CLOSED);
115 }
116
117 public void onListViewFocusChange(boolean hasFocus) {
118 if (hasFocus) {
119 mCheatListLastFocus = mCheatList.findFocus();
120 if (mCheatListLastFocus == null)
121 throw new NullPointerException();
122
123 mSlidingPaneLayout.close();
124 }
125 }
126
127 public void onDetailsViewFocusChange(boolean hasFocus) {
128 if (hasFocus) {
129 mCheatDetailsLastFocus = mCheatDetails.findFocus();
130 if (mCheatDetailsLastFocus == null)
131 throw new NullPointerException();
132
133 mSlidingPaneLayout.open();
134 }
135 }
136
137 @Override
138 public boolean onSupportNavigateUp() {
139 onBackPressed();
140 return true;
141 }
142
143 private void openDetailsView(boolean open) {
144 if (open) {
145 mSlidingPaneLayout.open();
146 }
147 }
148
149 public static void setOnFocusChangeListenerRecursively(@NonNull View view,
150 View.OnFocusChangeListener listener) {
151 view.setOnFocusChangeListener(listener);
152
153 if (view instanceof ViewGroup) {
154 ViewGroup viewGroup = (ViewGroup) view;
155 for (int i = 0; i < viewGroup.getChildCount(); i++) {
156 View child = viewGroup.getChildAt(i);
157 setOnFocusChangeListenerRecursively(child, listener);
158 }
159 }
160 }
161}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatsAdapter.java b/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatsAdapter.java
deleted file mode 100644
index 9cb2ce8d8..000000000
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/cheats/ui/CheatsAdapter.java
+++ /dev/null
@@ -1,72 +0,0 @@
1package org.citra.citra_emu.features.cheats.ui;
2
3import android.view.LayoutInflater;
4import android.view.View;
5import android.view.ViewGroup;
6
7import androidx.annotation.NonNull;
8import androidx.recyclerview.widget.RecyclerView;
9
10import org.citra.citra_emu.R;
11import org.citra.citra_emu.features.cheats.model.Cheat;
12import org.citra.citra_emu.features.cheats.model.CheatsViewModel;
13
14public class CheatsAdapter extends RecyclerView.Adapter<CheatViewHolder> {
15 private final CheatsActivity mActivity;
16 private final CheatsViewModel mViewModel;
17
18 public CheatsAdapter(CheatsActivity activity, CheatsViewModel viewModel) {
19 mActivity = activity;
20 mViewModel = viewModel;
21
22 mViewModel.getCheatAddedEvent().observe(activity, (position) -> {
23 if (position != null) {
24 notifyItemInserted(position);
25 }
26 });
27
28 mViewModel.getCheatUpdatedEvent().observe(activity, (position) -> {
29 if (position != null) {
30 notifyItemChanged(position);
31 }
32 });
33
34 mViewModel.getCheatDeletedEvent().observe(activity, (position) -> {
35 if (position != null) {
36 notifyItemRemoved(position);
37 }
38 });
39 }
40
41 @NonNull
42 @Override
43 public CheatViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
44 LayoutInflater inflater = LayoutInflater.from(parent.getContext());
45
46 View cheatView = inflater.inflate(R.layout.list_item_cheat, parent, false);
47 addViewListeners(cheatView);
48 return new CheatViewHolder(cheatView);
49 }
50
51 @Override
52 public void onBindViewHolder(@NonNull CheatViewHolder holder, int position) {
53 holder.bind(mActivity, getItemAt(position), position);
54 }
55
56 @Override
57 public int getItemCount() {
58 return mViewModel.getCheats().length;
59 }
60
61 private void addViewListeners(View view) {
62 // On a portrait phone screen (or other narrow screen), only one of the two panes are shown
63 // at the same time. If the user is navigating using a d-pad and moves focus to an element
64 // in the currently hidden pane, we need to manually show that pane.
65 CheatsActivity.setOnFocusChangeListenerRecursively(view,
66 (v, hasFocus) -> mActivity.onListViewFocusChange(hasFocus));
67 }
68
69 private Cheat getItemAt(int position) {
70 return mViewModel.getCheats()[position];
71 }
72}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/NativeLibrary.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.java
index baff99dc8..e15612a36 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/NativeLibrary.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/NativeLibrary.java
@@ -4,7 +4,7 @@
4 * Refer to the license.txt file included. 4 * Refer to the license.txt file included.
5 */ 5 */
6 6
7package org.citra.citra_emu; 7package org.yuzu.yuzu_emu;
8 8
9import android.app.Activity; 9import android.app.Activity;
10import android.app.Dialog; 10import android.app.Dialog;
@@ -24,9 +24,9 @@ import androidx.appcompat.app.AlertDialog;
24import androidx.core.content.ContextCompat; 24import androidx.core.content.ContextCompat;
25import androidx.fragment.app.DialogFragment; 25import androidx.fragment.app.DialogFragment;
26 26
27import org.citra.citra_emu.activities.EmulationActivity; 27import org.yuzu.yuzu_emu.activities.EmulationActivity;
28import org.citra.citra_emu.utils.EmulationMenuSettings; 28import org.yuzu.yuzu_emu.utils.EmulationMenuSettings;
29import org.citra.citra_emu.utils.Log; 29import org.yuzu.yuzu_emu.utils.Log;
30 30
31import java.lang.ref.WeakReference; 31import java.lang.ref.WeakReference;
32import java.util.Objects; 32import java.util.Objects;
@@ -314,7 +314,7 @@ public final class NativeLibrary {
314 } 314 }
315 315
316 public static boolean isPortraitMode() { 316 public static boolean isPortraitMode() {
317 return CitraApplication.getAppContext().getResources().getConfiguration().orientation == 317 return YuzuApplication.getAppContext().getResources().getConfiguration().orientation ==
318 Configuration.ORIENTATION_PORTRAIT; 318 Configuration.ORIENTATION_PORTRAIT;
319 } 319 }
320 320
@@ -420,10 +420,10 @@ public final class NativeLibrary {
420 alertPromptButton = 0; 420 alertPromptButton = 0;
421 421
422 FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 422 FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
423 params.leftMargin = params.rightMargin = CitraApplication.getAppContext().getResources().getDimensionPixelSize(R.dimen.dialog_margin); 423 params.leftMargin = params.rightMargin = YuzuApplication.getAppContext().getResources().getDimensionPixelSize(R.dimen.dialog_margin);
424 424
425 // Set up the input 425 // Set up the input
426 alertPromptEditText = new EditText(CitraApplication.getAppContext()); 426 alertPromptEditText = new EditText(YuzuApplication.getAppContext());
427 alertPromptEditText.setText(text); 427 alertPromptEditText.setText(text);
428 alertPromptEditText.setSingleLine(); 428 alertPromptEditText.setSingleLine();
429 alertPromptEditText.setLayoutParams(params); 429 alertPromptEditText.setLayoutParams(params);
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/CitraApplication.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.java
index 41ac7e27c..700916f87 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/CitraApplication.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/YuzuApplication.java
@@ -2,7 +2,7 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5package org.citra.citra_emu; 5package org.yuzu.yuzu_emu;
6 6
7import android.app.Application; 7import android.app.Application;
8import android.app.NotificationChannel; 8import android.app.NotificationChannel;
@@ -10,13 +10,13 @@ import android.app.NotificationManager;
10import android.content.Context; 10import android.content.Context;
11import android.os.Build; 11import android.os.Build;
12 12
13import org.citra.citra_emu.model.GameDatabase; 13import org.yuzu.yuzu_emu.model.GameDatabase;
14import org.citra.citra_emu.utils.DirectoryInitialization; 14import org.yuzu.yuzu_emu.utils.DirectoryInitialization;
15import org.citra.citra_emu.utils.PermissionsHandler; 15import org.yuzu.yuzu_emu.utils.PermissionsHandler;
16 16
17public class CitraApplication extends Application { 17public class YuzuApplication extends Application {
18 public static GameDatabase databaseHelper; 18 public static GameDatabase databaseHelper;
19 private static CitraApplication application; 19 private static YuzuApplication application;
20 20
21 private void createNotificationChannel() { 21 private void createNotificationChannel() {
22 // Create the NotificationChannel, but only on API 26+ because 22 // Create the NotificationChannel, but only on API 26+ because
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/activities/CustomFilePickerActivity.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/CustomFilePickerActivity.java
index 3083286e2..a79780814 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/activities/CustomFilePickerActivity.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/CustomFilePickerActivity.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.activities; 1package org.yuzu.yuzu_emu.activities;
2 2
3import android.content.Intent; 3import android.content.Intent;
4import android.os.Environment; 4import android.os.Environment;
@@ -8,7 +8,7 @@ import androidx.annotation.Nullable;
8import com.nononsenseapps.filepicker.AbstractFilePickerFragment; 8import com.nononsenseapps.filepicker.AbstractFilePickerFragment;
9import com.nononsenseapps.filepicker.FilePickerActivity; 9import com.nononsenseapps.filepicker.FilePickerActivity;
10 10
11import org.citra.citra_emu.fragments.CustomFilePickerFragment; 11import org.yuzu.yuzu_emu.fragments.CustomFilePickerFragment;
12 12
13import java.io.File; 13import java.io.File;
14 14
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.java
index 47ef0fd23..cd64a3298 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/activities/EmulationActivity.java
@@ -1,9 +1,10 @@
1package org.citra.citra_emu.activities; 1package org.yuzu.yuzu_emu.activities;
2 2
3import android.app.Activity; 3import android.app.Activity;
4import android.content.Intent; 4import android.content.Intent;
5import android.content.SharedPreferences; 5import android.content.SharedPreferences;
6import android.content.pm.PackageManager; 6import android.content.pm.PackageManager;
7import android.graphics.Rect;
7import android.os.Bundle; 8import android.os.Bundle;
8import android.os.Handler; 9import android.os.Handler;
9import android.preference.PreferenceManager; 10import android.preference.PreferenceManager;
@@ -15,37 +16,31 @@ import android.view.Menu;
15import android.view.MenuItem; 16import android.view.MenuItem;
16import android.view.MotionEvent; 17import android.view.MotionEvent;
17import android.view.View; 18import android.view.View;
18import android.widget.CheckBox;
19import android.widget.SeekBar; 19import android.widget.SeekBar;
20import android.widget.TextView; 20import android.widget.TextView;
21 21
22import androidx.annotation.IntDef; 22import androidx.annotation.IntDef;
23import androidx.annotation.NonNull; 23import androidx.annotation.NonNull;
24import androidx.annotation.Nullable;
24import androidx.appcompat.app.AlertDialog; 25import androidx.appcompat.app.AlertDialog;
25import androidx.appcompat.app.AppCompatActivity; 26import androidx.appcompat.app.AppCompatActivity;
26import androidx.core.app.NotificationManagerCompat; 27import androidx.core.app.NotificationManagerCompat;
28import androidx.fragment.app.Fragment;
27import androidx.fragment.app.FragmentActivity; 29import androidx.fragment.app.FragmentActivity;
30import androidx.fragment.app.FragmentManager;
31
32import org.yuzu.yuzu_emu.NativeLibrary;
33import org.yuzu.yuzu_emu.R;
34import org.yuzu.yuzu_emu.features.settings.model.view.InputBindingSetting;
35import org.yuzu.yuzu_emu.features.settings.ui.SettingsActivity;
36import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile;
37import org.yuzu.yuzu_emu.fragments.EmulationFragment;
38import org.yuzu.yuzu_emu.fragments.MenuFragment;
39import org.yuzu.yuzu_emu.utils.ControllerMappingHelper;
40import org.yuzu.yuzu_emu.utils.EmulationMenuSettings;
41import org.yuzu.yuzu_emu.utils.ForegroundService;
28 42
29import org.citra.citra_emu.CitraApplication;
30import org.citra.citra_emu.NativeLibrary;
31import org.citra.citra_emu.R;
32import org.citra.citra_emu.features.cheats.ui.CheatsActivity;
33import org.citra.citra_emu.features.settings.model.view.InputBindingSetting;
34import org.citra.citra_emu.features.settings.ui.SettingsActivity;
35import org.citra.citra_emu.features.settings.utils.SettingsFile;
36import org.citra.citra_emu.camera.StillImageCameraHelper;
37import org.citra.citra_emu.fragments.EmulationFragment;
38import org.citra.citra_emu.ui.main.MainActivity;
39import org.citra.citra_emu.utils.ControllerMappingHelper;
40import org.citra.citra_emu.utils.EmulationMenuSettings;
41import org.citra.citra_emu.utils.FileBrowserHelper;
42import org.citra.citra_emu.utils.FileUtil;
43import org.citra.citra_emu.utils.ForegroundService;
44
45import java.io.File;
46import java.io.IOException;
47import java.lang.annotation.Retention; 43import java.lang.annotation.Retention;
48import java.util.Collections;
49import java.util.List; 44import java.util.List;
50 45
51import static android.Manifest.permission.CAMERA; 46import static android.Manifest.permission.CAMERA;
@@ -53,6 +48,10 @@ import static android.Manifest.permission.RECORD_AUDIO;
53import static java.lang.annotation.RetentionPolicy.SOURCE; 48import static java.lang.annotation.RetentionPolicy.SOURCE;
54 49
55public final class EmulationActivity extends AppCompatActivity { 50public final class EmulationActivity extends AppCompatActivity {
51 private static final String BACKSTACK_NAME_MENU = "menu";
52
53 private static final String BACKSTACK_NAME_SUBMENU = "submenu";
54
56 public static final String EXTRA_SELECTED_GAME = "SelectedGame"; 55 public static final String EXTRA_SELECTED_GAME = "SelectedGame";
57 public static final String EXTRA_SELECTED_TITLE = "SelectedTitle"; 56 public static final String EXTRA_SELECTED_TITLE = "SelectedTitle";
58 public static final int MENU_ACTION_EDIT_CONTROLS_PLACEMENT = 0; 57 public static final int MENU_ACTION_EDIT_CONTROLS_PLACEMENT = 0;
@@ -60,61 +59,10 @@ public final class EmulationActivity extends AppCompatActivity {
60 public static final int MENU_ACTION_ADJUST_SCALE = 2; 59 public static final int MENU_ACTION_ADJUST_SCALE = 2;
61 public static final int MENU_ACTION_EXIT = 3; 60 public static final int MENU_ACTION_EXIT = 3;
62 public static final int MENU_ACTION_SHOW_FPS = 4; 61 public static final int MENU_ACTION_SHOW_FPS = 4;
63 public static final int MENU_ACTION_SCREEN_LAYOUT_LANDSCAPE = 5; 62 public static final int MENU_ACTION_RESET_OVERLAY = 6;
64 public static final int MENU_ACTION_SCREEN_LAYOUT_PORTRAIT = 6; 63 public static final int MENU_ACTION_SHOW_OVERLAY = 7;
65 public static final int MENU_ACTION_SCREEN_LAYOUT_SINGLE = 7; 64 public static final int MENU_ACTION_OPEN_SETTINGS = 8;
66 public static final int MENU_ACTION_SCREEN_LAYOUT_SIDEBYSIDE = 8;
67 public static final int MENU_ACTION_SWAP_SCREENS = 9;
68 public static final int MENU_ACTION_RESET_OVERLAY = 10;
69 public static final int MENU_ACTION_SHOW_OVERLAY = 11;
70 public static final int MENU_ACTION_OPEN_SETTINGS = 12;
71 public static final int MENU_ACTION_LOAD_AMIIBO = 13;
72 public static final int MENU_ACTION_REMOVE_AMIIBO = 14;
73 public static final int MENU_ACTION_JOYSTICK_REL_CENTER = 15;
74 public static final int MENU_ACTION_DPAD_SLIDE_ENABLE = 16;
75 public static final int MENU_ACTION_OPEN_CHEATS = 17;
76
77 public static final int REQUEST_SELECT_AMIIBO = 2;
78 private static final int EMULATION_RUNNING_NOTIFICATION = 0x1000; 65 private static final int EMULATION_RUNNING_NOTIFICATION = 0x1000;
79 private static SparseIntArray buttonsActionsMap = new SparseIntArray();
80
81 static {
82 buttonsActionsMap.append(R.id.menu_emulation_edit_layout,
83 EmulationActivity.MENU_ACTION_EDIT_CONTROLS_PLACEMENT);
84 buttonsActionsMap.append(R.id.menu_emulation_toggle_controls,
85 EmulationActivity.MENU_ACTION_TOGGLE_CONTROLS);
86 buttonsActionsMap
87 .append(R.id.menu_emulation_adjust_scale, EmulationActivity.MENU_ACTION_ADJUST_SCALE);
88 buttonsActionsMap.append(R.id.menu_emulation_show_fps,
89 EmulationActivity.MENU_ACTION_SHOW_FPS);
90 buttonsActionsMap.append(R.id.menu_screen_layout_landscape,
91 EmulationActivity.MENU_ACTION_SCREEN_LAYOUT_LANDSCAPE);
92 buttonsActionsMap.append(R.id.menu_screen_layout_portrait,
93 EmulationActivity.MENU_ACTION_SCREEN_LAYOUT_PORTRAIT);
94 buttonsActionsMap.append(R.id.menu_screen_layout_single,
95 EmulationActivity.MENU_ACTION_SCREEN_LAYOUT_SINGLE);
96 buttonsActionsMap.append(R.id.menu_screen_layout_sidebyside,
97 EmulationActivity.MENU_ACTION_SCREEN_LAYOUT_SIDEBYSIDE);
98 buttonsActionsMap.append(R.id.menu_emulation_swap_screens,
99 EmulationActivity.MENU_ACTION_SWAP_SCREENS);
100 buttonsActionsMap
101 .append(R.id.menu_emulation_reset_overlay, EmulationActivity.MENU_ACTION_RESET_OVERLAY);
102 buttonsActionsMap
103 .append(R.id.menu_emulation_show_overlay, EmulationActivity.MENU_ACTION_SHOW_OVERLAY);
104 buttonsActionsMap
105 .append(R.id.menu_emulation_open_settings, EmulationActivity.MENU_ACTION_OPEN_SETTINGS);
106 buttonsActionsMap
107 .append(R.id.menu_emulation_amiibo_load, EmulationActivity.MENU_ACTION_LOAD_AMIIBO);
108 buttonsActionsMap
109 .append(R.id.menu_emulation_amiibo_remove, EmulationActivity.MENU_ACTION_REMOVE_AMIIBO);
110 buttonsActionsMap.append(R.id.menu_emulation_joystick_rel_center,
111 EmulationActivity.MENU_ACTION_JOYSTICK_REL_CENTER);
112 buttonsActionsMap.append(R.id.menu_emulation_dpad_slide_enable,
113 EmulationActivity.MENU_ACTION_DPAD_SLIDE_ENABLE);
114 buttonsActionsMap
115 .append(R.id.menu_emulation_open_cheats, EmulationActivity.MENU_ACTION_OPEN_CHEATS);
116 }
117
118 private View mDecorView; 66 private View mDecorView;
119 private EmulationFragment mEmulationFragment; 67 private EmulationFragment mEmulationFragment;
120 private SharedPreferences mPreferences; 68 private SharedPreferences mPreferences;
@@ -124,6 +72,8 @@ public final class EmulationActivity extends AppCompatActivity {
124 private String mSelectedTitle; 72 private String mSelectedTitle;
125 private String mPath; 73 private String mPath;
126 74
75 private boolean mMenuVisible;
76
127 public static void launch(FragmentActivity activity, String path, String title) { 77 public static void launch(FragmentActivity activity, String path, String title) {
128 Intent launcher = new Intent(activity, EmulationActivity.class); 78 Intent launcher = new Intent(activity, EmulationActivity.class);
129 79
@@ -172,7 +122,7 @@ public final class EmulationActivity extends AppCompatActivity {
172 // Set these options now so that the SurfaceView the game renders into is the right size. 122 // Set these options now so that the SurfaceView the game renders into is the right size.
173 enableFullscreenImmersive(); 123 enableFullscreenImmersive();
174 124
175 setTheme(R.style.CitraEmulationBase); 125 setTheme(R.style.YuzuEmulationBase);
176 126
177 setContentView(R.layout.activity_emulation); 127 setContentView(R.layout.activity_emulation);
178 128
@@ -217,52 +167,7 @@ public final class EmulationActivity extends AppCompatActivity {
217 167
218 @Override 168 @Override
219 public void onBackPressed() { 169 public void onBackPressed() {
220 NativeLibrary.PauseEmulation(); 170 toggleMenu();
221 new AlertDialog.Builder(this)
222 .setTitle(R.string.emulation_close_game)
223 .setMessage(R.string.emulation_close_game_message)
224 .setPositiveButton(android.R.string.yes, (dialogInterface, i) ->
225 {
226 mEmulationFragment.stopEmulation();
227 finish();
228 })
229 .setNegativeButton(android.R.string.cancel, (dialogInterface, i) ->
230 NativeLibrary.UnPauseEmulation())
231 .setOnCancelListener(dialogInterface ->
232 NativeLibrary.UnPauseEmulation())
233 .create()
234 .show();
235 }
236
237 @Override
238 public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
239 switch (requestCode) {
240 case NativeLibrary.REQUEST_CODE_NATIVE_CAMERA:
241 if (grantResults[0] != PackageManager.PERMISSION_GRANTED &&
242 shouldShowRequestPermissionRationale(CAMERA)) {
243 new AlertDialog.Builder(this)
244 .setTitle(R.string.camera)
245 .setMessage(R.string.camera_permission_needed)
246 .setPositiveButton(android.R.string.ok, null)
247 .show();
248 }
249 NativeLibrary.CameraPermissionResult(grantResults[0] == PackageManager.PERMISSION_GRANTED);
250 break;
251 case NativeLibrary.REQUEST_CODE_NATIVE_MIC:
252 if (grantResults[0] != PackageManager.PERMISSION_GRANTED &&
253 shouldShowRequestPermissionRationale(RECORD_AUDIO)) {
254 new AlertDialog.Builder(this)
255 .setTitle(R.string.microphone)
256 .setMessage(R.string.microphone_permission_needed)
257 .setPositiveButton(android.R.string.ok, null)
258 .show();
259 }
260 NativeLibrary.MicPermissionResult(grantResults[0] == PackageManager.PERMISSION_GRANTED);
261 break;
262 default:
263 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
264 break;
265 }
266 } 171 }
267 172
268 private void enableFullscreenImmersive() { 173 private void enableFullscreenImmersive() {
@@ -276,179 +181,13 @@ public final class EmulationActivity extends AppCompatActivity {
276 View.SYSTEM_UI_FLAG_IMMERSIVE); 181 View.SYSTEM_UI_FLAG_IMMERSIVE);
277 } 182 }
278 183
279 @Override 184 public void handleMenuAction(int action) {
280 public boolean onCreateOptionsMenu(Menu menu) {
281 // Inflate the menu; this adds items to the action bar if it is present.
282 getMenuInflater().inflate(R.menu.menu_emulation, menu);
283
284 int layoutOptionMenuItem = R.id.menu_screen_layout_landscape;
285 switch (EmulationMenuSettings.getLandscapeScreenLayout()) {
286 case EmulationMenuSettings.LayoutOption_SingleScreen:
287 layoutOptionMenuItem = R.id.menu_screen_layout_single;
288 break;
289 case EmulationMenuSettings.LayoutOption_SideScreen:
290 layoutOptionMenuItem = R.id.menu_screen_layout_sidebyside;
291 break;
292 case EmulationMenuSettings.LayoutOption_MobilePortrait:
293 layoutOptionMenuItem = R.id.menu_screen_layout_portrait;
294 break;
295 }
296
297 menu.findItem(layoutOptionMenuItem).setChecked(true);
298 menu.findItem(R.id.menu_emulation_joystick_rel_center).setChecked(EmulationMenuSettings.getJoystickRelCenter());
299 menu.findItem(R.id.menu_emulation_dpad_slide_enable).setChecked(EmulationMenuSettings.getDpadSlideEnable());
300 menu.findItem(R.id.menu_emulation_show_fps).setChecked(EmulationMenuSettings.getShowFps());
301 menu.findItem(R.id.menu_emulation_swap_screens).setChecked(EmulationMenuSettings.getSwapScreens());
302 menu.findItem(R.id.menu_emulation_show_overlay).setChecked(EmulationMenuSettings.getShowOverlay());
303
304 return true;
305 }
306
307 private void DisplaySavestateWarning() {
308 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(CitraApplication.getAppContext());
309 if (preferences.getBoolean("savestateWarningShown", false)) {
310 return;
311 }
312
313 LayoutInflater inflater = mEmulationFragment.requireActivity().getLayoutInflater();
314 View view = inflater.inflate(R.layout.dialog_checkbox, null);
315 CheckBox checkBox = view.findViewById(R.id.checkBox);
316
317 new AlertDialog.Builder(this)
318 .setTitle(R.string.savestate_warning_title)
319 .setMessage(R.string.savestate_warning_message)
320 .setView(view)
321 .setPositiveButton(android.R.string.ok, (dialog, which) -> {
322 preferences.edit().putBoolean("savestateWarningShown", checkBox.isChecked()).apply();
323 })
324 .show();
325 }
326
327 @Override
328 public boolean onPrepareOptionsMenu(Menu menu) {
329 super.onPrepareOptionsMenu(menu);
330 menu.findItem(R.id.menu_emulation_save_state).setVisible(false);
331 menu.findItem(R.id.menu_emulation_load_state).setVisible(false);
332 return true;
333 }
334
335 @SuppressWarnings("WrongConstant")
336 @Override
337 public boolean onOptionsItemSelected(MenuItem item) {
338 int action = buttonsActionsMap.get(item.getItemId(), -1);
339
340 switch (action) { 185 switch (action) {
341 // Edit the placement of the controls
342 case MENU_ACTION_EDIT_CONTROLS_PLACEMENT:
343 editControlsPlacement();
344 break;
345
346 // Enable/Disable specific buttons or the entire input overlay.
347 case MENU_ACTION_TOGGLE_CONTROLS:
348 toggleControls();
349 break;
350
351 // Adjust the scale of the overlay controls.
352 case MENU_ACTION_ADJUST_SCALE:
353 adjustScale();
354 break;
355
356 // Toggle the visibility of the Performance stats TextView
357 case MENU_ACTION_SHOW_FPS: {
358 final boolean isEnabled = !EmulationMenuSettings.getShowFps();
359 EmulationMenuSettings.setShowFps(isEnabled);
360 item.setChecked(isEnabled);
361
362 mEmulationFragment.updateShowFpsOverlay();
363 break;
364 }
365 // Sets the screen layout to Landscape
366 case MENU_ACTION_SCREEN_LAYOUT_LANDSCAPE:
367 changeScreenOrientation(EmulationMenuSettings.LayoutOption_MobileLandscape, item);
368 break;
369
370 // Sets the screen layout to Portrait
371 case MENU_ACTION_SCREEN_LAYOUT_PORTRAIT:
372 changeScreenOrientation(EmulationMenuSettings.LayoutOption_MobilePortrait, item);
373 break;
374
375 // Sets the screen layout to Single
376 case MENU_ACTION_SCREEN_LAYOUT_SINGLE:
377 changeScreenOrientation(EmulationMenuSettings.LayoutOption_SingleScreen, item);
378 break;
379
380 // Sets the screen layout to Side by Side
381 case MENU_ACTION_SCREEN_LAYOUT_SIDEBYSIDE:
382 changeScreenOrientation(EmulationMenuSettings.LayoutOption_SideScreen, item);
383 break;
384
385 // Swap the top and bottom screen locations
386 case MENU_ACTION_SWAP_SCREENS: {
387 final boolean isEnabled = !EmulationMenuSettings.getSwapScreens();
388 EmulationMenuSettings.setSwapScreens(isEnabled);
389 item.setChecked(isEnabled);
390 break;
391 }
392
393 // Reset overlay placement
394 case MENU_ACTION_RESET_OVERLAY:
395 resetOverlay();
396 break;
397
398 // Show or hide overlay
399 case MENU_ACTION_SHOW_OVERLAY: {
400 final boolean isEnabled = !EmulationMenuSettings.getShowOverlay();
401 EmulationMenuSettings.setShowOverlay(isEnabled);
402 item.setChecked(isEnabled);
403
404 mEmulationFragment.refreshInputOverlay();
405 break;
406 }
407
408 case MENU_ACTION_EXIT: 186 case MENU_ACTION_EXIT:
409 mEmulationFragment.stopEmulation(); 187 mEmulationFragment.stopEmulation();
410 finish(); 188 finish();
411 break; 189 break;
412
413 case MENU_ACTION_OPEN_SETTINGS:
414 SettingsActivity.launch(this, SettingsFile.FILE_NAME_CONFIG, "");
415 break;
416
417 case MENU_ACTION_LOAD_AMIIBO:
418 FileBrowserHelper.openFilePicker(this, REQUEST_SELECT_AMIIBO,
419 R.string.select_amiibo,
420 Collections.singletonList("bin"), false);
421 break;
422
423 case MENU_ACTION_REMOVE_AMIIBO:
424 RemoveAmiibo();
425 break;
426
427 case MENU_ACTION_JOYSTICK_REL_CENTER:
428 final boolean isJoystickRelCenterEnabled = !EmulationMenuSettings.getJoystickRelCenter();
429 EmulationMenuSettings.setJoystickRelCenter(isJoystickRelCenterEnabled);
430 item.setChecked(isJoystickRelCenterEnabled);
431 break;
432
433 case MENU_ACTION_DPAD_SLIDE_ENABLE:
434 final boolean isDpadSlideEnabled = !EmulationMenuSettings.getDpadSlideEnable();
435 EmulationMenuSettings.setDpadSlideEnable(isDpadSlideEnabled);
436 item.setChecked(isDpadSlideEnabled);
437 break;
438
439 case MENU_ACTION_OPEN_CHEATS:
440 CheatsActivity.launch(this);
441 break;
442 } 190 }
443
444 return true;
445 }
446
447 private void changeScreenOrientation(int layoutOption, MenuItem item) {
448 item.setChecked(true);
449 NativeLibrary.NotifyOrientationChange(layoutOption, getWindowManager().getDefaultDisplay()
450 .getRotation());
451 EmulationMenuSettings.setLandscapeScreenLayout(layoutOption);
452 } 191 }
453 192
454 private void editControlsPlacement() { 193 private void editControlsPlacement() {
@@ -462,6 +201,11 @@ public final class EmulationActivity extends AppCompatActivity {
462 // Gets button presses 201 // Gets button presses
463 @Override 202 @Override
464 public boolean dispatchKeyEvent(KeyEvent event) { 203 public boolean dispatchKeyEvent(KeyEvent event) {
204 if (mMenuVisible || event.getKeyCode() == KeyEvent.KEYCODE_BACK)
205 {
206 return super.dispatchKeyEvent(event);
207 }
208
465 int action; 209 int action;
466 int button = mPreferences.getInt(InputBindingSetting.getInputButtonKey(event.getKeyCode()), event.getKeyCode()); 210 int button = mPreferences.getInt(InputBindingSetting.getInputButtonKey(event.getKeyCode()), event.getKeyCode());
467 211
@@ -492,49 +236,6 @@ public final class EmulationActivity extends AppCompatActivity {
492 return NativeLibrary.onGamePadEvent(input.getDescriptor(), button, action); 236 return NativeLibrary.onGamePadEvent(input.getDescriptor(), button, action);
493 } 237 }
494 238
495 @Override
496 protected void onActivityResult(int requestCode, int resultCode, Intent result) {
497 super.onActivityResult(requestCode, resultCode, result);
498 switch (requestCode) {
499 case StillImageCameraHelper.REQUEST_CAMERA_FILE_PICKER:
500 StillImageCameraHelper.OnFilePickerResult(resultCode == RESULT_OK ? result : null);
501 break;
502 case REQUEST_SELECT_AMIIBO:
503 // If the user picked a file, as opposed to just backing out.
504 if (resultCode == MainActivity.RESULT_OK) {
505 String[] selectedFiles = FileBrowserHelper.getSelectedFiles(result);
506 if (selectedFiles == null)
507 return;
508
509 onAmiiboSelected(selectedFiles[0]);
510 }
511 break;
512 }
513 }
514
515 private void onAmiiboSelected(String selectedFile) {
516 File file = new File(selectedFile);
517 boolean success = false;
518 try {
519 byte[] bytes = FileUtil.getBytesFromFile(file);
520 } catch (IOException e) {
521 e.printStackTrace();
522 }
523
524 if (!success) {
525 new AlertDialog.Builder(this)
526 .setTitle(R.string.amiibo_load_error)
527 .setMessage(R.string.amiibo_load_error_message)
528 .setPositiveButton(android.R.string.ok, null)
529 .create()
530 .show();
531 }
532 }
533
534 private void RemoveAmiibo() {
535
536 }
537
538 private void toggleControls() { 239 private void toggleControls() {
539 final SharedPreferences.Editor editor = mPreferences.edit(); 240 final SharedPreferences.Editor editor = mPreferences.edit();
540 boolean[] enabledButtons = new boolean[14]; 241 boolean[] enabledButtons = new boolean[14];
@@ -630,8 +331,59 @@ public final class EmulationActivity extends AppCompatActivity {
630 .show(); 331 .show();
631 } 332 }
632 333
334 private static boolean areCoordinatesOutside(@Nullable View view, float x, float y)
335 {
336 if (view == null)
337 {
338 return true;
339 }
340
341 Rect viewBounds = new Rect();
342 view.getGlobalVisibleRect(viewBounds);
343 return !viewBounds.contains(Math.round(x), Math.round(y));
344 }
345
346 @Override
347 public boolean dispatchTouchEvent(MotionEvent event)
348 {
349 if (event.getActionMasked() == MotionEvent.ACTION_DOWN)
350 {
351 boolean anyMenuClosed = false;
352
353 Fragment submenu = getSupportFragmentManager().findFragmentById(R.id.frame_submenu);
354 if (submenu != null && areCoordinatesOutside(submenu.getView(), event.getX(), event.getY()))
355 {
356 closeSubmenu();
357 submenu = null;
358 anyMenuClosed = true;
359 }
360
361 if (submenu == null)
362 {
363 Fragment menu = getSupportFragmentManager().findFragmentById(R.id.frame_menu);
364 if (menu != null && areCoordinatesOutside(menu.getView(), event.getX(), event.getY()))
365 {
366 closeMenu();
367 anyMenuClosed = true;
368 }
369 }
370
371 if (anyMenuClosed)
372 {
373 return true;
374 }
375 }
376
377 return super.dispatchTouchEvent(event);
378 }
379
633 @Override 380 @Override
634 public boolean dispatchGenericMotionEvent(MotionEvent event) { 381 public boolean dispatchGenericMotionEvent(MotionEvent event) {
382 if (mMenuVisible)
383 {
384 return false;
385 }
386
635 if (((event.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) == 0)) { 387 if (((event.getSource() & InputDevice.SOURCE_CLASS_JOYSTICK) == 0)) {
636 return super.dispatchGenericMotionEvent(event); 388 return super.dispatchGenericMotionEvent(event);
637 } 389 }
@@ -747,9 +499,39 @@ public final class EmulationActivity extends AppCompatActivity {
747 499
748 @Retention(SOURCE) 500 @Retention(SOURCE)
749 @IntDef({MENU_ACTION_EDIT_CONTROLS_PLACEMENT, MENU_ACTION_TOGGLE_CONTROLS, MENU_ACTION_ADJUST_SCALE, 501 @IntDef({MENU_ACTION_EDIT_CONTROLS_PLACEMENT, MENU_ACTION_TOGGLE_CONTROLS, MENU_ACTION_ADJUST_SCALE,
750 MENU_ACTION_EXIT, MENU_ACTION_SHOW_FPS, MENU_ACTION_SCREEN_LAYOUT_LANDSCAPE, 502 MENU_ACTION_EXIT, MENU_ACTION_SHOW_FPS, MENU_ACTION_RESET_OVERLAY, MENU_ACTION_SHOW_OVERLAY, MENU_ACTION_OPEN_SETTINGS})
751 MENU_ACTION_SCREEN_LAYOUT_PORTRAIT, MENU_ACTION_SCREEN_LAYOUT_SINGLE, MENU_ACTION_SCREEN_LAYOUT_SIDEBYSIDE,
752 MENU_ACTION_SWAP_SCREENS, MENU_ACTION_RESET_OVERLAY, MENU_ACTION_SHOW_OVERLAY, MENU_ACTION_OPEN_SETTINGS})
753 public @interface MenuAction { 503 public @interface MenuAction {
754 } 504 }
505
506 private boolean closeSubmenu()
507 {
508 return getSupportFragmentManager().popBackStackImmediate(BACKSTACK_NAME_SUBMENU,
509 FragmentManager.POP_BACK_STACK_INCLUSIVE);
510 }
511
512 private boolean closeMenu()
513 {
514 mMenuVisible = false;
515 return getSupportFragmentManager().popBackStackImmediate(BACKSTACK_NAME_MENU,
516 FragmentManager.POP_BACK_STACK_INCLUSIVE);
517 }
518
519 private void toggleMenu()
520 {
521 if (!closeMenu()) {
522 // Removing the menu failed, so that means it wasn't visible. Add it.
523 Fragment fragment = MenuFragment.newInstance();
524 getSupportFragmentManager().beginTransaction()
525 .setCustomAnimations(
526 R.animator.menu_slide_in_from_start,
527 R.animator.menu_slide_out_to_start,
528 R.animator.menu_slide_in_from_start,
529 R.animator.menu_slide_out_to_start)
530 .add(R.id.frame_menu, fragment)
531 .addToBackStack(BACKSTACK_NAME_MENU)
532 .commit();
533 mMenuVisible = true;
534 }
535 }
536
755} 537}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/adapters/GameAdapter.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.java
index bc791638a..fa785741b 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/adapters/GameAdapter.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GameAdapter.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.adapters; 1package org.yuzu.yuzu_emu.adapters;
2 2
3import android.database.Cursor; 3import android.database.Cursor;
4import android.database.DataSetObserver; 4import android.database.DataSetObserver;
@@ -16,13 +16,13 @@ import androidx.core.content.ContextCompat;
16import androidx.fragment.app.FragmentActivity; 16import androidx.fragment.app.FragmentActivity;
17import androidx.recyclerview.widget.RecyclerView; 17import androidx.recyclerview.widget.RecyclerView;
18 18
19import org.citra.citra_emu.R; 19import org.yuzu.yuzu_emu.R;
20import org.citra.citra_emu.activities.EmulationActivity; 20import org.yuzu.yuzu_emu.activities.EmulationActivity;
21import org.citra.citra_emu.model.GameDatabase; 21import org.yuzu.yuzu_emu.model.GameDatabase;
22import org.citra.citra_emu.ui.DividerItemDecoration; 22import org.yuzu.yuzu_emu.ui.DividerItemDecoration;
23import org.citra.citra_emu.utils.Log; 23import org.yuzu.yuzu_emu.utils.Log;
24import org.citra.citra_emu.utils.PicassoUtils; 24import org.yuzu.yuzu_emu.utils.PicassoUtils;
25import org.citra.citra_emu.viewholders.GameViewHolder; 25import org.yuzu.yuzu_emu.viewholders.GameViewHolder;
26 26
27import java.nio.file.Path; 27import java.nio.file.Path;
28import java.nio.file.Paths; 28import java.nio.file.Paths;
@@ -99,7 +99,7 @@ public final class GameAdapter extends RecyclerView.Adapter<GameViewHolder> impl
99 holder.regions = mCursor.getString(GameDatabase.GAME_COLUMN_REGIONS); 99 holder.regions = mCursor.getString(GameDatabase.GAME_COLUMN_REGIONS);
100 holder.company = mCursor.getString(GameDatabase.GAME_COLUMN_COMPANY); 100 holder.company = mCursor.getString(GameDatabase.GAME_COLUMN_COMPANY);
101 101
102 final int backgroundColorId = isValidGame(holder.path) ? R.color.card_view_background : R.color.card_view_disabled; 102 final int backgroundColorId = isValidGame(holder.path) ? R.color.view_background : R.color.view_disabled;
103 View itemView = holder.getItemView(); 103 View itemView = holder.getItemView();
104 itemView.setBackgroundColor(ContextCompat.getColor(itemView.getContext(), backgroundColorId)); 104 itemView.setBackgroundColor(ContextCompat.getColor(itemView.getContext(), backgroundColorId));
105 } else { 105 } else {
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/applets/SoftwareKeyboard.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/applets/SoftwareKeyboard.java
index 7be5f6d97..4aeb41472 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/applets/SoftwareKeyboard.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/applets/SoftwareKeyboard.java
@@ -2,7 +2,7 @@
2// Licensed under GPLv2 or any later version 2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included. 3// Refer to the license.txt file included.
4 4
5package org.citra.citra_emu.applets; 5package org.yuzu.yuzu_emu.applets;
6 6
7import android.app.Activity; 7import android.app.Activity;
8import android.app.Dialog; 8import android.app.Dialog;
@@ -19,11 +19,11 @@ import androidx.annotation.Nullable;
19import androidx.appcompat.app.AlertDialog; 19import androidx.appcompat.app.AlertDialog;
20import androidx.fragment.app.DialogFragment; 20import androidx.fragment.app.DialogFragment;
21 21
22import org.citra.citra_emu.CitraApplication; 22import org.yuzu.yuzu_emu.YuzuApplication;
23import org.citra.citra_emu.NativeLibrary; 23import org.yuzu.yuzu_emu.NativeLibrary;
24import org.citra.citra_emu.R; 24import org.yuzu.yuzu_emu.R;
25import org.citra.citra_emu.activities.EmulationActivity; 25import org.yuzu.yuzu_emu.activities.EmulationActivity;
26import org.citra.citra_emu.utils.Log; 26import org.yuzu.yuzu_emu.utils.Log;
27 27
28import java.util.Objects; 28import java.util.Objects;
29 29
@@ -107,14 +107,14 @@ public final class SoftwareKeyboard {
107 FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( 107 FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
108 ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 108 ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
109 params.leftMargin = params.rightMargin = 109 params.leftMargin = params.rightMargin =
110 CitraApplication.getAppContext().getResources().getDimensionPixelSize( 110 YuzuApplication.getAppContext().getResources().getDimensionPixelSize(
111 R.dimen.dialog_margin); 111 R.dimen.dialog_margin);
112 112
113 KeyboardConfig config = Objects.requireNonNull( 113 KeyboardConfig config = Objects.requireNonNull(
114 (KeyboardConfig) Objects.requireNonNull(getArguments()).getSerializable("config")); 114 (KeyboardConfig) Objects.requireNonNull(getArguments()).getSerializable("config"));
115 115
116 // Set up the input 116 // Set up the input
117 EditText editText = new EditText(CitraApplication.getAppContext()); 117 EditText editText = new EditText(YuzuApplication.getAppContext());
118 editText.setHint(config.hint_text); 118 editText.setHint(config.hint_text);
119 editText.setSingleLine(!config.multiline_mode); 119 editText.setSingleLine(!config.multiline_mode);
120 editText.setLayoutParams(params); 120 editText.setLayoutParams(params);
@@ -254,7 +254,7 @@ public final class SoftwareKeyboard {
254 254
255 public static void ShowError(String error) { 255 public static void ShowError(String error) {
256 NativeLibrary.displayAlertMsg( 256 NativeLibrary.displayAlertMsg(
257 CitraApplication.getAppContext().getResources().getString(R.string.software_keyboard), 257 YuzuApplication.getAppContext().getResources().getString(R.string.software_keyboard),
258 error, false); 258 error, false);
259 } 259 }
260 260
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/dialogs/MotionAlertDialog.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/MotionAlertDialog.java
index 0f10f1858..874c1acbc 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/dialogs/MotionAlertDialog.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/dialogs/MotionAlertDialog.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.dialogs; 1package org.yuzu.yuzu_emu.dialogs;
2 2
3import android.content.Context; 3import android.content.Context;
4import android.view.InputDevice; 4import android.view.InputDevice;
@@ -8,8 +8,8 @@ import android.view.MotionEvent;
8import androidx.annotation.NonNull; 8import androidx.annotation.NonNull;
9import androidx.appcompat.app.AlertDialog; 9import androidx.appcompat.app.AlertDialog;
10 10
11import org.citra.citra_emu.features.settings.model.view.InputBindingSetting; 11import org.yuzu.yuzu_emu.features.settings.model.view.InputBindingSetting;
12import org.citra.citra_emu.utils.Log; 12import org.yuzu.yuzu_emu.utils.Log;
13 13
14import java.util.ArrayList; 14import java.util.ArrayList;
15import java.util.List; 15import java.util.List;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/BooleanSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.java
index 932dcf1d3..965f1b2a2 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/BooleanSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.model; 1package org.yuzu.yuzu_emu.features.settings.model;
2 2
3public final class BooleanSetting extends Setting { 3public final class BooleanSetting extends Setting {
4 private boolean mValue; 4 private boolean mValue;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/FloatSetting.java
index 275f0ecea..9b9b60092 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/FloatSetting.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.model; 1package org.yuzu.yuzu_emu.features.settings.model;
2 2
3public final class FloatSetting extends Setting { 3public final class FloatSetting extends Setting {
4 private float mValue; 4 private float mValue;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.java
index f712e5bfa..001f27579 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/IntSetting.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.model; 1package org.yuzu.yuzu_emu.features.settings.model;
2 2
3public final class IntSetting extends Setting { 3public final class IntSetting extends Setting {
4 private int mValue; 4 private int mValue;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Setting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Setting.java
index b762847c9..28003078a 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Setting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Setting.java
@@ -1,7 +1,7 @@
1package org.citra.citra_emu.features.settings.model; 1package org.yuzu.yuzu_emu.features.settings.model;
2 2
3/** 3/**
4 * Abstraction for a setting item as read from / written to Citra's configuration ini files. 4 * Abstraction for a setting item as read from / written to yuzu's configuration ini files.
5 * These files generally consist of a key/value pair, though the type of value is ambiguous and 5 * These files generally consist of a key/value pair, though the type of value is ambiguous and
6 * must be inferred at read-time. The type of value determines which child of this class is used 6 * must be inferred at read-time. The type of value determines which child of this class is used
7 * to represent the Setting. 7 * to represent the Setting.
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/SettingSection.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/SettingSection.java
index 0a291aa6b..da9d40c78 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/SettingSection.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/SettingSection.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.model; 1package org.yuzu.yuzu_emu.features.settings.model;
2 2
3import java.util.HashMap; 3import java.util.HashMap;
4 4
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.java
index 9684966f2..efde45ee9 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/Settings.java
@@ -1,11 +1,11 @@
1package org.citra.citra_emu.features.settings.model; 1package org.yuzu.yuzu_emu.features.settings.model;
2 2
3import android.text.TextUtils; 3import android.text.TextUtils;
4 4
5import org.citra.citra_emu.CitraApplication; 5import org.yuzu.yuzu_emu.YuzuApplication;
6import org.citra.citra_emu.R; 6import org.yuzu.yuzu_emu.R;
7import org.citra.citra_emu.features.settings.ui.SettingsActivityView; 7import org.yuzu.yuzu_emu.features.settings.ui.SettingsActivityView;
8import org.citra.citra_emu.features.settings.utils.SettingsFile; 8import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile;
9 9
10import java.util.Arrays; 10import java.util.Arrays;
11import java.util.HashMap; 11import java.util.HashMap;
@@ -17,7 +17,6 @@ public class Settings {
17 public static final String SECTION_PREMIUM = "Premium"; 17 public static final String SECTION_PREMIUM = "Premium";
18 public static final String SECTION_CORE = "Core"; 18 public static final String SECTION_CORE = "Core";
19 public static final String SECTION_SYSTEM = "System"; 19 public static final String SECTION_SYSTEM = "System";
20 public static final String SECTION_CAMERA = "Camera";
21 public static final String SECTION_CONTROLS = "Controls"; 20 public static final String SECTION_CONTROLS = "Controls";
22 public static final String SECTION_RENDERER = "Renderer"; 21 public static final String SECTION_RENDERER = "Renderer";
23 public static final String SECTION_LAYOUT = "Layout"; 22 public static final String SECTION_LAYOUT = "Layout";
@@ -30,7 +29,7 @@ public class Settings {
30 private static final Map<String, List<String>> configFileSectionsMap = new HashMap<>(); 29 private static final Map<String, List<String>> configFileSectionsMap = new HashMap<>();
31 30
32 static { 31 static {
33 configFileSectionsMap.put(SettingsFile.FILE_NAME_CONFIG, Arrays.asList(SECTION_PREMIUM, SECTION_CORE, SECTION_SYSTEM, SECTION_CAMERA, SECTION_CONTROLS, SECTION_RENDERER, SECTION_LAYOUT, SECTION_UTILITY, SECTION_AUDIO, SECTION_DEBUG)); 32 configFileSectionsMap.put(SettingsFile.FILE_NAME_CONFIG, Arrays.asList(SECTION_PREMIUM, SECTION_CORE, SECTION_SYSTEM, SECTION_CONTROLS, SECTION_RENDERER, SECTION_LAYOUT, SECTION_UTILITY, SECTION_AUDIO, SECTION_DEBUG));
34 } 33 }
35 34
36 /** 35 /**
@@ -109,7 +108,7 @@ public class Settings {
109 108
110 public void saveSettings(SettingsActivityView view) { 109 public void saveSettings(SettingsActivityView view) {
111 if (TextUtils.isEmpty(gameId)) { 110 if (TextUtils.isEmpty(gameId)) {
112 view.showToastMessage(CitraApplication.getAppContext().getString(R.string.ini_saved), false); 111 view.showToastMessage(YuzuApplication.getAppContext().getString(R.string.ini_saved), false);
113 112
114 for (Map.Entry<String, List<String>> entry : configFileSectionsMap.entrySet()) { 113 for (Map.Entry<String, List<String>> entry : configFileSectionsMap.entrySet()) {
115 String fileName = entry.getKey(); 114 String fileName = entry.getKey();
@@ -123,7 +122,7 @@ public class Settings {
123 } 122 }
124 } else { 123 } else {
125 // custom game settings 124 // custom game settings
126 view.showToastMessage(CitraApplication.getAppContext().getString(R.string.gameid_saved, gameId), false); 125 view.showToastMessage(YuzuApplication.getAppContext().getString(R.string.gameid_saved, gameId), false);
127 126
128 SettingsFile.saveCustomGameSettings(gameId, sections); 127 SettingsFile.saveCustomGameSettings(gameId, sections);
129 } 128 }
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/StringSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.java
index b906b7010..0b5128382 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/StringSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/StringSetting.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.model; 1package org.yuzu.yuzu_emu.features.settings.model;
2 2
3public final class StringSetting extends Setting { 3public final class StringSetting extends Setting {
4 private String mValue; 4 private String mValue;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/CheckBoxSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.java
index baf40709f..c5c4e14f3 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/CheckBoxSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/CheckBoxSetting.java
@@ -1,11 +1,11 @@
1package org.citra.citra_emu.features.settings.model.view; 1package org.yuzu.yuzu_emu.features.settings.model.view;
2 2
3import org.citra.citra_emu.CitraApplication; 3import org.yuzu.yuzu_emu.YuzuApplication;
4import org.citra.citra_emu.R; 4import org.yuzu.yuzu_emu.R;
5import org.citra.citra_emu.features.settings.model.BooleanSetting; 5import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting;
6import org.citra.citra_emu.features.settings.model.IntSetting; 6import org.yuzu.yuzu_emu.features.settings.model.IntSetting;
7import org.citra.citra_emu.features.settings.model.Setting; 7import org.yuzu.yuzu_emu.features.settings.model.Setting;
8import org.citra.citra_emu.features.settings.ui.SettingsFragmentView; 8import org.yuzu.yuzu_emu.features.settings.ui.SettingsFragmentView;
9 9
10public final class CheckBoxSetting extends SettingsItem { 10public final class CheckBoxSetting extends SettingsItem {
11 private boolean mDefaultValue; 11 private boolean mDefaultValue;
@@ -59,7 +59,7 @@ public final class CheckBoxSetting extends SettingsItem {
59 public IntSetting setChecked(boolean checked) { 59 public IntSetting setChecked(boolean checked) {
60 // Show a performance warning if the setting has been disabled 60 // Show a performance warning if the setting has been disabled
61 if (mShowPerformanceWarning && !checked) { 61 if (mShowPerformanceWarning && !checked) {
62 mView.showToastMessage(CitraApplication.getAppContext().getString(R.string.performance_warning), true); 62 mView.showToastMessage(YuzuApplication.getAppContext().getString(R.string.performance_warning), true);
63 } 63 }
64 64
65 if (getSetting() == null) { 65 if (getSetting() == null) {
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/DateTimeSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/DateTimeSetting.java
index afc3352cc..17b2f1188 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/DateTimeSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/DateTimeSetting.java
@@ -1,7 +1,7 @@
1package org.citra.citra_emu.features.settings.model.view; 1package org.yuzu.yuzu_emu.features.settings.model.view;
2 2
3import org.citra.citra_emu.features.settings.model.Setting; 3import org.yuzu.yuzu_emu.features.settings.model.Setting;
4import org.citra.citra_emu.features.settings.model.StringSetting; 4import org.yuzu.yuzu_emu.features.settings.model.StringSetting;
5 5
6public final class DateTimeSetting extends SettingsItem { 6public final class DateTimeSetting extends SettingsItem {
7 private String mDefaultValue; 7 private String mDefaultValue;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/HeaderSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/HeaderSetting.java
index bac8876cd..c41ac3d54 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/HeaderSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/HeaderSetting.java
@@ -1,6 +1,6 @@
1package org.citra.citra_emu.features.settings.model.view; 1package org.yuzu.yuzu_emu.features.settings.model.view;
2 2
3import org.citra.citra_emu.features.settings.model.Setting; 3import org.yuzu.yuzu_emu.features.settings.model.Setting;
4 4
5public final class HeaderSetting extends SettingsItem { 5public final class HeaderSetting extends SettingsItem {
6 public HeaderSetting(String key, Setting setting, int titleId, int descriptionId) { 6 public HeaderSetting(String key, Setting setting, int titleId, int descriptionId) {
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/InputBindingSetting.java
index e9141a208..4ad54421e 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/InputBindingSetting.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.model.view; 1package org.yuzu.yuzu_emu.features.settings.model.view;
2 2
3import android.content.SharedPreferences; 3import android.content.SharedPreferences;
4import android.preference.PreferenceManager; 4import android.preference.PreferenceManager;
@@ -6,12 +6,12 @@ import android.view.InputDevice;
6import android.view.KeyEvent; 6import android.view.KeyEvent;
7import android.widget.Toast; 7import android.widget.Toast;
8 8
9import org.citra.citra_emu.CitraApplication; 9import org.yuzu.yuzu_emu.YuzuApplication;
10import org.citra.citra_emu.NativeLibrary; 10import org.yuzu.yuzu_emu.NativeLibrary;
11import org.citra.citra_emu.R; 11import org.yuzu.yuzu_emu.R;
12import org.citra.citra_emu.features.settings.model.Setting; 12import org.yuzu.yuzu_emu.features.settings.model.Setting;
13import org.citra.citra_emu.features.settings.model.StringSetting; 13import org.yuzu.yuzu_emu.features.settings.model.StringSetting;
14import org.citra.citra_emu.features.settings.utils.SettingsFile; 14import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile;
15 15
16public final class InputBindingSetting extends SettingsItem { 16public final class InputBindingSetting extends SettingsItem {
17 private static final String INPUT_MAPPING_PREFIX = "InputMapping"; 17 private static final String INPUT_MAPPING_PREFIX = "InputMapping";
@@ -108,7 +108,7 @@ public final class InputBindingSetting extends SettingsItem {
108 } 108 }
109 109
110 /** 110 /**
111 * Returns the Citra button code for the settings key. 111 * Returns the yuzu button code for the settings key.
112 */ 112 */
113 private int getButtonCode() { 113 private int getButtonCode() {
114 switch (getKey()) { 114 switch (getKey()) {
@@ -145,7 +145,7 @@ public final class InputBindingSetting extends SettingsItem {
145 } 145 }
146 146
147 /** 147 /**
148 * Returns the settings key for the specified Citra button code. 148 * Returns the settings key for the specified yuzu button code.
149 */ 149 */
150 private static String getButtonKey(int buttonCode) { 150 private static String getButtonKey(int buttonCode) {
151 switch (buttonCode) { 151 switch (buttonCode) {
@@ -201,7 +201,7 @@ public final class InputBindingSetting extends SettingsItem {
201 */ 201 */
202 public void removeOldMapping() { 202 public void removeOldMapping() {
203 // Get preferences editor 203 // Get preferences editor
204 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(CitraApplication.getAppContext()); 204 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.getAppContext());
205 SharedPreferences.Editor editor = preferences.edit(); 205 SharedPreferences.Editor editor = preferences.edit();
206 206
207 // Try remove all possible keys we wrote for this setting 207 // Try remove all possible keys we wrote for this setting
@@ -250,7 +250,7 @@ public final class InputBindingSetting extends SettingsItem {
250 */ 250 */
251 private void WriteButtonMapping(String key) { 251 private void WriteButtonMapping(String key) {
252 // Get preferences editor 252 // Get preferences editor
253 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(CitraApplication.getAppContext()); 253 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.getAppContext());
254 SharedPreferences.Editor editor = preferences.edit(); 254 SharedPreferences.Editor editor = preferences.edit();
255 255
256 // Remove mapping for another setting using this input 256 // Remove mapping for another setting using this input
@@ -278,7 +278,7 @@ public final class InputBindingSetting extends SettingsItem {
278 */ 278 */
279 private void WriteAxisMapping(int axis, int value) { 279 private void WriteAxisMapping(int axis, int value) {
280 // Get preferences editor 280 // Get preferences editor
281 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(CitraApplication.getAppContext()); 281 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.getAppContext());
282 SharedPreferences.Editor editor = preferences.edit(); 282 SharedPreferences.Editor editor = preferences.edit();
283 283
284 // Cleanup old mapping 284 // Cleanup old mapping
@@ -302,7 +302,7 @@ public final class InputBindingSetting extends SettingsItem {
302 */ 302 */
303 public void onKeyInput(KeyEvent keyEvent) { 303 public void onKeyInput(KeyEvent keyEvent) {
304 if (!IsButtonMappingSupported()) { 304 if (!IsButtonMappingSupported()) {
305 Toast.makeText(CitraApplication.getAppContext(), R.string.input_message_analog_only, Toast.LENGTH_LONG).show(); 305 Toast.makeText(YuzuApplication.getAppContext(), R.string.input_message_analog_only, Toast.LENGTH_LONG).show();
306 return; 306 return;
307 } 307 }
308 308
@@ -324,11 +324,11 @@ public final class InputBindingSetting extends SettingsItem {
324 public void onMotionInput(InputDevice device, InputDevice.MotionRange motionRange, 324 public void onMotionInput(InputDevice device, InputDevice.MotionRange motionRange,
325 char axisDir) { 325 char axisDir) {
326 if (!IsAxisMappingSupported()) { 326 if (!IsAxisMappingSupported()) {
327 Toast.makeText(CitraApplication.getAppContext(), R.string.input_message_button_only, Toast.LENGTH_LONG).show(); 327 Toast.makeText(YuzuApplication.getAppContext(), R.string.input_message_button_only, Toast.LENGTH_LONG).show();
328 return; 328 return;
329 } 329 }
330 330
331 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(CitraApplication.getAppContext()); 331 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.getAppContext());
332 SharedPreferences.Editor editor = preferences.edit(); 332 SharedPreferences.Editor editor = preferences.edit();
333 333
334 int button; 334 int button;
@@ -354,7 +354,7 @@ public final class InputBindingSetting extends SettingsItem {
354 * Sets the string to use in the configuration UI for the gamepad input. 354 * Sets the string to use in the configuration UI for the gamepad input.
355 */ 355 */
356 private StringSetting setUiString(String ui) { 356 private StringSetting setUiString(String ui) {
357 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(CitraApplication.getAppContext()); 357 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.getAppContext());
358 SharedPreferences.Editor editor = preferences.edit(); 358 SharedPreferences.Editor editor = preferences.edit();
359 359
360 if (getSetting() == null) { 360 if (getSetting() == null) {
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/PremiumHeader.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/PremiumHeader.java
index 2b1793d3e..9bf95ce51 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/PremiumHeader.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/PremiumHeader.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.model.view; 1package org.yuzu.yuzu_emu.features.settings.model.view;
2 2
3public final class PremiumHeader extends SettingsItem { 3public final class PremiumHeader extends SettingsItem {
4 public PremiumHeader() { 4 public PremiumHeader() {
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/PremiumSingleChoiceSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/PremiumSingleChoiceSetting.java
index c0560d2dc..0c4570c8d 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/PremiumSingleChoiceSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/PremiumSingleChoiceSetting.java
@@ -1,12 +1,12 @@
1package org.citra.citra_emu.features.settings.model.view; 1package org.yuzu.yuzu_emu.features.settings.model.view;
2 2
3import android.content.SharedPreferences; 3import android.content.SharedPreferences;
4import android.preference.PreferenceManager; 4import android.preference.PreferenceManager;
5 5
6import org.citra.citra_emu.CitraApplication; 6import org.yuzu.yuzu_emu.YuzuApplication;
7import org.citra.citra_emu.R; 7import org.yuzu.yuzu_emu.R;
8import org.citra.citra_emu.features.settings.model.Setting; 8import org.yuzu.yuzu_emu.features.settings.model.Setting;
9import org.citra.citra_emu.features.settings.ui.SettingsFragmentView; 9import org.yuzu.yuzu_emu.features.settings.ui.SettingsFragmentView;
10 10
11public final class PremiumSingleChoiceSetting extends SettingsItem { 11public final class PremiumSingleChoiceSetting extends SettingsItem {
12 private int mDefaultValue; 12 private int mDefaultValue;
@@ -15,7 +15,7 @@ public final class PremiumSingleChoiceSetting extends SettingsItem {
15 private int mValuesId; 15 private int mValuesId;
16 private SettingsFragmentView mView; 16 private SettingsFragmentView mView;
17 17
18 private static SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(CitraApplication.getAppContext()); 18 private static SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.getAppContext());
19 19
20 public PremiumSingleChoiceSetting(String key, String section, int titleId, int descriptionId, 20 public PremiumSingleChoiceSetting(String key, String section, int titleId, int descriptionId,
21 int choicesId, int valuesId, int defaultValue, Setting setting, SettingsFragmentView view) { 21 int choicesId, int valuesId, int defaultValue, Setting setting, SettingsFragmentView view) {
@@ -49,7 +49,7 @@ public final class PremiumSingleChoiceSetting extends SettingsItem {
49 final SharedPreferences.Editor editor = mPreferences.edit(); 49 final SharedPreferences.Editor editor = mPreferences.edit();
50 editor.putInt(getKey(), selection); 50 editor.putInt(getKey(), selection);
51 editor.apply(); 51 editor.apply();
52 mView.showToastMessage(CitraApplication.getAppContext().getString(R.string.design_updated), false); 52 mView.showToastMessage(YuzuApplication.getAppContext().getString(R.string.design_updated), false);
53 } 53 }
54 54
55 @Override 55 @Override
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.java
index 305352022..db7fb791a 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.java
@@ -1,8 +1,8 @@
1package org.citra.citra_emu.features.settings.model.view; 1package org.yuzu.yuzu_emu.features.settings.model.view;
2 2
3import org.citra.citra_emu.features.settings.model.Setting; 3import org.yuzu.yuzu_emu.features.settings.model.Setting;
4import org.citra.citra_emu.features.settings.model.Settings; 4import org.yuzu.yuzu_emu.features.settings.model.Settings;
5import org.citra.citra_emu.features.settings.ui.SettingsAdapter; 5import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter;
6 6
7/** 7/**
8 * ViewModel abstraction for an Item in the RecyclerView powering SettingsFragments. 8 * ViewModel abstraction for an Item in the RecyclerView powering SettingsFragments.
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SingleChoiceSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.java
index ee9d225d6..619df6d52 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SingleChoiceSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SingleChoiceSetting.java
@@ -1,7 +1,7 @@
1package org.citra.citra_emu.features.settings.model.view; 1package org.yuzu.yuzu_emu.features.settings.model.view;
2 2
3import org.citra.citra_emu.features.settings.model.IntSetting; 3import org.yuzu.yuzu_emu.features.settings.model.IntSetting;
4import org.citra.citra_emu.features.settings.model.Setting; 4import org.yuzu.yuzu_emu.features.settings.model.Setting;
5 5
6public final class SingleChoiceSetting extends SettingsItem { 6public final class SingleChoiceSetting extends SettingsItem {
7 private int mDefaultValue; 7 private int mDefaultValue;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SliderSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.java
index 551b13f99..8ac25b66e 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SliderSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SliderSetting.java
@@ -1,9 +1,9 @@
1package org.citra.citra_emu.features.settings.model.view; 1package org.yuzu.yuzu_emu.features.settings.model.view;
2 2
3import org.citra.citra_emu.features.settings.model.FloatSetting; 3import org.yuzu.yuzu_emu.features.settings.model.FloatSetting;
4import org.citra.citra_emu.features.settings.model.IntSetting; 4import org.yuzu.yuzu_emu.features.settings.model.IntSetting;
5import org.citra.citra_emu.features.settings.model.Setting; 5import org.yuzu.yuzu_emu.features.settings.model.Setting;
6import org.citra.citra_emu.utils.Log; 6import org.yuzu.yuzu_emu.utils.Log;
7 7
8public final class SliderSetting extends SettingsItem { 8public final class SliderSetting extends SettingsItem {
9 private int mMin; 9 private int mMin;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/StringSingleChoiceSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/StringSingleChoiceSetting.java
index 057145d9d..419abfd49 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/StringSingleChoiceSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/StringSingleChoiceSetting.java
@@ -1,7 +1,7 @@
1package org.citra.citra_emu.features.settings.model.view; 1package org.yuzu.yuzu_emu.features.settings.model.view;
2 2
3import org.citra.citra_emu.features.settings.model.Setting; 3import org.yuzu.yuzu_emu.features.settings.model.Setting;
4import org.citra.citra_emu.features.settings.model.StringSetting; 4import org.yuzu.yuzu_emu.features.settings.model.StringSetting;
5 5
6public class StringSingleChoiceSetting extends SettingsItem { 6public class StringSingleChoiceSetting extends SettingsItem {
7 private String mDefaultValue; 7 private String mDefaultValue;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SubmenuSetting.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SubmenuSetting.java
index 9d44a923f..3f5b3c8d0 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SubmenuSetting.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SubmenuSetting.java
@@ -1,6 +1,6 @@
1package org.citra.citra_emu.features.settings.model.view; 1package org.yuzu.yuzu_emu.features.settings.model.view;
2 2
3import org.citra.citra_emu.features.settings.model.Setting; 3import org.yuzu.yuzu_emu.features.settings.model.Setting;
4 4
5public final class SubmenuSetting extends SettingsItem { 5public final class SubmenuSetting extends SettingsItem {
6 private String mMenuKey; 6 private String mMenuKey;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivity.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.java
index 23c3c4c9e..916ced382 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivity.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.ui; 1package org.yuzu.yuzu_emu.features.settings.ui;
2 2
3import android.app.ProgressDialog; 3import android.app.ProgressDialog;
4import android.content.Context; 4import android.content.Context;
@@ -15,11 +15,11 @@ import androidx.appcompat.app.AppCompatActivity;
15import androidx.fragment.app.FragmentTransaction; 15import androidx.fragment.app.FragmentTransaction;
16import androidx.localbroadcastmanager.content.LocalBroadcastManager; 16import androidx.localbroadcastmanager.content.LocalBroadcastManager;
17 17
18import org.citra.citra_emu.NativeLibrary; 18import org.yuzu.yuzu_emu.NativeLibrary;
19import org.citra.citra_emu.R; 19import org.yuzu.yuzu_emu.R;
20import org.citra.citra_emu.utils.DirectoryInitialization; 20import org.yuzu.yuzu_emu.utils.DirectoryInitialization;
21import org.citra.citra_emu.utils.DirectoryStateReceiver; 21import org.yuzu.yuzu_emu.utils.DirectoryStateReceiver;
22import org.citra.citra_emu.utils.EmulationMenuSettings; 22import org.yuzu.yuzu_emu.utils.EmulationMenuSettings;
23 23
24public final class SettingsActivity extends AppCompatActivity implements SettingsActivityView { 24public final class SettingsActivity extends AppCompatActivity implements SettingsActivityView {
25 private static final String ARG_MENU_TAG = "menu_tag"; 25 private static final String ARG_MENU_TAG = "menu_tag";
@@ -172,17 +172,17 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
172 } 172 }
173 173
174 @Override 174 @Override
175 public org.citra.citra_emu.features.settings.model.Settings getSettings() { 175 public org.yuzu.yuzu_emu.features.settings.model.Settings getSettings() {
176 return mPresenter.getSettings(); 176 return mPresenter.getSettings();
177 } 177 }
178 178
179 @Override 179 @Override
180 public void setSettings(org.citra.citra_emu.features.settings.model.Settings settings) { 180 public void setSettings(org.yuzu.yuzu_emu.features.settings.model.Settings settings) {
181 mPresenter.setSettings(settings); 181 mPresenter.setSettings(settings);
182 } 182 }
183 183
184 @Override 184 @Override
185 public void onSettingsFileLoaded(org.citra.citra_emu.features.settings.model.Settings settings) { 185 public void onSettingsFileLoaded(org.yuzu.yuzu_emu.features.settings.model.Settings settings) {
186 SettingsFragmentView fragment = getFragment(); 186 SettingsFragmentView fragment = getFragment();
187 187
188 if (fragment != null) { 188 if (fragment != null) {
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityPresenter.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.java
index 0d63873bb..ba6b6762b 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityPresenter.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityPresenter.java
@@ -1,17 +1,17 @@
1package org.citra.citra_emu.features.settings.ui; 1package org.yuzu.yuzu_emu.features.settings.ui;
2 2
3import android.content.IntentFilter; 3import android.content.IntentFilter;
4import android.os.Bundle; 4import android.os.Bundle;
5import android.text.TextUtils; 5import android.text.TextUtils;
6 6
7import org.citra.citra_emu.NativeLibrary; 7import org.yuzu.yuzu_emu.NativeLibrary;
8import org.citra.citra_emu.features.settings.model.Settings; 8import org.yuzu.yuzu_emu.features.settings.model.Settings;
9import org.citra.citra_emu.features.settings.utils.SettingsFile; 9import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile;
10import org.citra.citra_emu.utils.DirectoryInitialization; 10import org.yuzu.yuzu_emu.utils.DirectoryInitialization;
11import org.citra.citra_emu.utils.DirectoryInitialization.DirectoryInitializationState; 11import org.yuzu.yuzu_emu.utils.DirectoryInitialization.DirectoryInitializationState;
12import org.citra.citra_emu.utils.DirectoryStateReceiver; 12import org.yuzu.yuzu_emu.utils.DirectoryStateReceiver;
13import org.citra.citra_emu.utils.Log; 13import org.yuzu.yuzu_emu.utils.Log;
14import org.citra.citra_emu.utils.ThemeUtil; 14import org.yuzu.yuzu_emu.utils.ThemeUtil;
15 15
16import java.io.File; 16import java.io.File;
17 17
@@ -43,7 +43,7 @@ public final class SettingsActivityPresenter {
43 } 43 }
44 44
45 public void onStart() { 45 public void onStart() {
46 prepareCitraDirectoriesIfNeeded(); 46 prepareDirectoriesIfNeeded();
47 } 47 }
48 48
49 void loadSettingsUI() { 49 void loadSettingsUI() {
@@ -59,12 +59,13 @@ public final class SettingsActivityPresenter {
59 mView.onSettingsFileLoaded(mSettings); 59 mView.onSettingsFileLoaded(mSettings);
60 } 60 }
61 61
62 private void prepareCitraDirectoriesIfNeeded() { 62 private void prepareDirectoriesIfNeeded() {
63 File configFile = new File(DirectoryInitialization.getUserDirectory() + "/config/" + SettingsFile.FILE_NAME_CONFIG + ".ini"); 63 File configFile = new File(DirectoryInitialization.getUserDirectory() + "/config/" + SettingsFile.FILE_NAME_CONFIG + ".ini");
64 if (!configFile.exists()) { 64 if (!configFile.exists()) {
65 Log.error("Citra config file could not be found!"); 65 Log.error(DirectoryInitialization.getUserDirectory() + "/config/" + SettingsFile.FILE_NAME_CONFIG + ".ini");
66 Log.error("yuzu config file could not be found!");
66 } 67 }
67 if (DirectoryInitialization.areCitraDirectoriesReady()) { 68 if (DirectoryInitialization.areDirectoriesReady()) {
68 loadSettingsUI(); 69 loadSettingsUI();
69 } else { 70 } else {
70 mView.showLoading(); 71 mView.showLoading();
@@ -74,7 +75,7 @@ public final class SettingsActivityPresenter {
74 directoryStateReceiver = 75 directoryStateReceiver =
75 new DirectoryStateReceiver(directoryInitializationState -> 76 new DirectoryStateReceiver(directoryInitializationState ->
76 { 77 {
77 if (directoryInitializationState == DirectoryInitializationState.CITRA_DIRECTORIES_INITIALIZED) { 78 if (directoryInitializationState == DirectoryInitializationState.YUZU_DIRECTORIES_INITIALIZED) {
78 mView.hideLoading(); 79 mView.hideLoading();
79 loadSettingsUI(); 80 loadSettingsUI();
80 } else if (directoryInitializationState == DirectoryInitializationState.EXTERNAL_STORAGE_PERMISSION_NEEDED) { 81 } else if (directoryInitializationState == DirectoryInitializationState.EXTERNAL_STORAGE_PERMISSION_NEEDED) {
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityView.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityView.java
index 0d26d48a7..5aff3bcf7 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityView.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivityView.java
@@ -1,9 +1,9 @@
1package org.citra.citra_emu.features.settings.ui; 1package org.yuzu.yuzu_emu.features.settings.ui;
2 2
3import android.content.IntentFilter; 3import android.content.IntentFilter;
4 4
5import org.citra.citra_emu.features.settings.model.Settings; 5import org.yuzu.yuzu_emu.features.settings.model.Settings;
6import org.citra.citra_emu.utils.DirectoryStateReceiver; 6import org.yuzu.yuzu_emu.utils.DirectoryStateReceiver;
7 7
8/** 8/**
9 * Abstraction for the Activity that manages SettingsFragments. 9 * Abstraction for the Activity that manages SettingsFragments.
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.java
index bfd7c71a9..1102d6af1 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsAdapter.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.ui; 1package org.yuzu.yuzu_emu.features.settings.ui;
2 2
3import android.content.Context; 3import android.content.Context;
4import android.content.DialogInterface; 4import android.content.DialogInterface;
@@ -13,31 +13,31 @@ import android.widget.TimePicker;
13import androidx.appcompat.app.AlertDialog; 13import androidx.appcompat.app.AlertDialog;
14import androidx.recyclerview.widget.RecyclerView; 14import androidx.recyclerview.widget.RecyclerView;
15 15
16import org.citra.citra_emu.R; 16import org.yuzu.yuzu_emu.R;
17import org.citra.citra_emu.dialogs.MotionAlertDialog; 17import org.yuzu.yuzu_emu.dialogs.MotionAlertDialog;
18import org.citra.citra_emu.features.settings.model.FloatSetting; 18import org.yuzu.yuzu_emu.features.settings.model.FloatSetting;
19import org.citra.citra_emu.features.settings.model.IntSetting; 19import org.yuzu.yuzu_emu.features.settings.model.IntSetting;
20import org.citra.citra_emu.features.settings.model.StringSetting; 20import org.yuzu.yuzu_emu.features.settings.model.StringSetting;
21import org.citra.citra_emu.features.settings.model.view.CheckBoxSetting; 21import org.yuzu.yuzu_emu.features.settings.model.view.CheckBoxSetting;
22import org.citra.citra_emu.features.settings.model.view.DateTimeSetting; 22import org.yuzu.yuzu_emu.features.settings.model.view.DateTimeSetting;
23import org.citra.citra_emu.features.settings.model.view.InputBindingSetting; 23import org.yuzu.yuzu_emu.features.settings.model.view.InputBindingSetting;
24import org.citra.citra_emu.features.settings.model.view.PremiumSingleChoiceSetting; 24import org.yuzu.yuzu_emu.features.settings.model.view.PremiumSingleChoiceSetting;
25import org.citra.citra_emu.features.settings.model.view.SettingsItem; 25import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
26import org.citra.citra_emu.features.settings.model.view.SingleChoiceSetting; 26import org.yuzu.yuzu_emu.features.settings.model.view.SingleChoiceSetting;
27import org.citra.citra_emu.features.settings.model.view.SliderSetting; 27import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting;
28import org.citra.citra_emu.features.settings.model.view.StringSingleChoiceSetting; 28import org.yuzu.yuzu_emu.features.settings.model.view.StringSingleChoiceSetting;
29import org.citra.citra_emu.features.settings.model.view.SubmenuSetting; 29import org.yuzu.yuzu_emu.features.settings.model.view.SubmenuSetting;
30import org.citra.citra_emu.features.settings.ui.viewholder.CheckBoxSettingViewHolder; 30import org.yuzu.yuzu_emu.features.settings.ui.viewholder.CheckBoxSettingViewHolder;
31import org.citra.citra_emu.features.settings.ui.viewholder.DateTimeViewHolder; 31import org.yuzu.yuzu_emu.features.settings.ui.viewholder.DateTimeViewHolder;
32import org.citra.citra_emu.features.settings.ui.viewholder.HeaderViewHolder; 32import org.yuzu.yuzu_emu.features.settings.ui.viewholder.HeaderViewHolder;
33import org.citra.citra_emu.features.settings.ui.viewholder.InputBindingSettingViewHolder; 33import org.yuzu.yuzu_emu.features.settings.ui.viewholder.InputBindingSettingViewHolder;
34import org.citra.citra_emu.features.settings.ui.viewholder.PremiumViewHolder; 34import org.yuzu.yuzu_emu.features.settings.ui.viewholder.PremiumViewHolder;
35import org.citra.citra_emu.features.settings.ui.viewholder.SettingViewHolder; 35import org.yuzu.yuzu_emu.features.settings.ui.viewholder.SettingViewHolder;
36import org.citra.citra_emu.features.settings.ui.viewholder.SingleChoiceViewHolder; 36import org.yuzu.yuzu_emu.features.settings.ui.viewholder.SingleChoiceViewHolder;
37import org.citra.citra_emu.features.settings.ui.viewholder.SliderViewHolder; 37import org.yuzu.yuzu_emu.features.settings.ui.viewholder.SliderViewHolder;
38import org.citra.citra_emu.features.settings.ui.viewholder.SubmenuViewHolder; 38import org.yuzu.yuzu_emu.features.settings.ui.viewholder.SubmenuViewHolder;
39import org.citra.citra_emu.ui.main.MainActivity; 39import org.yuzu.yuzu_emu.ui.main.MainActivity;
40import org.citra.citra_emu.utils.Log; 40import org.yuzu.yuzu_emu.utils.Log;
41 41
42import java.util.ArrayList; 42import java.util.ArrayList;
43 43
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragment.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.java
index 5799dcb8d..845f6b7b4 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragment.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragment.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.ui; 1package org.yuzu.yuzu_emu.features.settings.ui;
2 2
3import android.content.Context; 3import android.content.Context;
4import android.os.Bundle; 4import android.os.Bundle;
@@ -12,11 +12,11 @@ import androidx.fragment.app.Fragment;
12import androidx.recyclerview.widget.LinearLayoutManager; 12import androidx.recyclerview.widget.LinearLayoutManager;
13import androidx.recyclerview.widget.RecyclerView; 13import androidx.recyclerview.widget.RecyclerView;
14 14
15import org.citra.citra_emu.R; 15import org.yuzu.yuzu_emu.R;
16import org.citra.citra_emu.features.settings.model.Setting; 16import org.yuzu.yuzu_emu.features.settings.model.Setting;
17import org.citra.citra_emu.features.settings.model.Settings; 17import org.yuzu.yuzu_emu.features.settings.model.Settings;
18import org.citra.citra_emu.features.settings.model.view.SettingsItem; 18import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
19import org.citra.citra_emu.ui.DividerItemDecoration; 19import org.yuzu.yuzu_emu.ui.DividerItemDecoration;
20 20
21import java.util.ArrayList; 21import java.util.ArrayList;
22 22
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.java
index 31f3e68eb..27f0adf29 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.ui; 1package org.yuzu.yuzu_emu.features.settings.ui;
2 2
3import android.app.Activity; 3import android.app.Activity;
4import android.content.Context; 4import android.content.Context;
@@ -7,24 +7,24 @@ import android.hardware.camera2.CameraCharacteristics;
7import android.hardware.camera2.CameraManager; 7import android.hardware.camera2.CameraManager;
8import android.text.TextUtils; 8import android.text.TextUtils;
9 9
10import org.citra.citra_emu.R; 10import org.yuzu.yuzu_emu.R;
11import org.citra.citra_emu.features.settings.model.Setting; 11import org.yuzu.yuzu_emu.features.settings.model.Setting;
12import org.citra.citra_emu.features.settings.model.SettingSection; 12import org.yuzu.yuzu_emu.features.settings.model.SettingSection;
13import org.citra.citra_emu.features.settings.model.Settings; 13import org.yuzu.yuzu_emu.features.settings.model.Settings;
14import org.citra.citra_emu.features.settings.model.StringSetting; 14import org.yuzu.yuzu_emu.features.settings.model.StringSetting;
15import org.citra.citra_emu.features.settings.model.view.CheckBoxSetting; 15import org.yuzu.yuzu_emu.features.settings.model.view.CheckBoxSetting;
16import org.citra.citra_emu.features.settings.model.view.DateTimeSetting; 16import org.yuzu.yuzu_emu.features.settings.model.view.DateTimeSetting;
17import org.citra.citra_emu.features.settings.model.view.HeaderSetting; 17import org.yuzu.yuzu_emu.features.settings.model.view.HeaderSetting;
18import org.citra.citra_emu.features.settings.model.view.InputBindingSetting; 18import org.yuzu.yuzu_emu.features.settings.model.view.InputBindingSetting;
19import org.citra.citra_emu.features.settings.model.view.PremiumHeader; 19import org.yuzu.yuzu_emu.features.settings.model.view.PremiumHeader;
20import org.citra.citra_emu.features.settings.model.view.PremiumSingleChoiceSetting; 20import org.yuzu.yuzu_emu.features.settings.model.view.PremiumSingleChoiceSetting;
21import org.citra.citra_emu.features.settings.model.view.SettingsItem; 21import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
22import org.citra.citra_emu.features.settings.model.view.SingleChoiceSetting; 22import org.yuzu.yuzu_emu.features.settings.model.view.SingleChoiceSetting;
23import org.citra.citra_emu.features.settings.model.view.SliderSetting; 23import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting;
24import org.citra.citra_emu.features.settings.model.view.StringSingleChoiceSetting; 24import org.yuzu.yuzu_emu.features.settings.model.view.StringSingleChoiceSetting;
25import org.citra.citra_emu.features.settings.model.view.SubmenuSetting; 25import org.yuzu.yuzu_emu.features.settings.model.view.SubmenuSetting;
26import org.citra.citra_emu.features.settings.utils.SettingsFile; 26import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile;
27import org.citra.citra_emu.utils.Log; 27import org.yuzu.yuzu_emu.utils.Log;
28 28
29import java.util.ArrayList; 29import java.util.ArrayList;
30import java.util.Arrays; 30import java.util.Arrays;
@@ -115,9 +115,6 @@ public final class SettingsFragmentPresenter {
115 case Settings.SECTION_SYSTEM: 115 case Settings.SECTION_SYSTEM:
116 addSystemSettings(sl); 116 addSystemSettings(sl);
117 break; 117 break;
118 case Settings.SECTION_CAMERA:
119 addCameraSettings(sl);
120 break;
121 case Settings.SECTION_CONTROLS: 118 case Settings.SECTION_CONTROLS:
122 addInputSettings(sl); 119 addInputSettings(sl);
123 break; 120 break;
@@ -145,7 +142,6 @@ public final class SettingsFragmentPresenter {
145 sl.add(new SubmenuSetting(null, null, R.string.preferences_premium, 0, Settings.SECTION_PREMIUM)); 142 sl.add(new SubmenuSetting(null, null, R.string.preferences_premium, 0, Settings.SECTION_PREMIUM));
146 sl.add(new SubmenuSetting(null, null, R.string.preferences_general, 0, Settings.SECTION_CORE)); 143 sl.add(new SubmenuSetting(null, null, R.string.preferences_general, 0, Settings.SECTION_CORE));
147 sl.add(new SubmenuSetting(null, null, R.string.preferences_system, 0, Settings.SECTION_SYSTEM)); 144 sl.add(new SubmenuSetting(null, null, R.string.preferences_system, 0, Settings.SECTION_SYSTEM));
148 sl.add(new SubmenuSetting(null, null, R.string.preferences_camera, 0, Settings.SECTION_CAMERA));
149 sl.add(new SubmenuSetting(null, null, R.string.preferences_controls, 0, Settings.SECTION_CONTROLS)); 145 sl.add(new SubmenuSetting(null, null, R.string.preferences_controls, 0, Settings.SECTION_CONTROLS));
150 sl.add(new SubmenuSetting(null, null, R.string.preferences_graphics, 0, Settings.SECTION_RENDERER)); 146 sl.add(new SubmenuSetting(null, null, R.string.preferences_graphics, 0, Settings.SECTION_RENDERER));
151 sl.add(new SubmenuSetting(null, null, R.string.preferences_audio, 0, Settings.SECTION_AUDIO)); 147 sl.add(new SubmenuSetting(null, null, R.string.preferences_audio, 0, Settings.SECTION_AUDIO));
@@ -197,96 +193,6 @@ public final class SettingsFragmentPresenter {
197 sl.add(new DateTimeSetting(SettingsFile.KEY_INIT_TIME, Settings.SECTION_SYSTEM, R.string.init_time, R.string.init_time_description, "2000-01-01 00:00:01", dateTime)); 193 sl.add(new DateTimeSetting(SettingsFile.KEY_INIT_TIME, Settings.SECTION_SYSTEM, R.string.init_time, R.string.init_time_description, "2000-01-01 00:00:01", dateTime));
198 } 194 }
199 195
200 private void addCameraSettings(ArrayList<SettingsItem> sl) {
201 final Activity activity = mView.getActivity();
202 activity.setTitle(R.string.preferences_camera);
203
204 // Get the camera IDs
205 CameraManager cameraManager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE);
206 ArrayList<String> supportedCameraNameList = new ArrayList<>();
207 ArrayList<String> supportedCameraIdList = new ArrayList<>();
208 if (cameraManager != null) {
209 try {
210 for (String id : cameraManager.getCameraIdList()) {
211 final CameraCharacteristics characteristics = cameraManager.getCameraCharacteristics(id);
212 if (Objects.requireNonNull(characteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL)) == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY) {
213 continue; // Legacy cameras cannot be used with the NDK
214 }
215
216 supportedCameraIdList.add(id);
217
218 final int facing = Objects.requireNonNull(characteristics.get(CameraCharacteristics.LENS_FACING));
219 int stringId = R.string.camera_facing_external;
220 switch (facing) {
221 case CameraCharacteristics.LENS_FACING_FRONT:
222 stringId = R.string.camera_facing_front;
223 break;
224 case CameraCharacteristics.LENS_FACING_BACK:
225 stringId = R.string.camera_facing_back;
226 break;
227 case CameraCharacteristics.LENS_FACING_EXTERNAL:
228 stringId = R.string.camera_facing_external;
229 break;
230 }
231 supportedCameraNameList.add(String.format("%1$s (%2$s)", id, activity.getString(stringId)));
232 }
233 } catch (CameraAccessException e) {
234 Log.error("Couldn't retrieve camera list");
235 e.printStackTrace();
236 }
237 }
238
239 // Create the names and values for display
240 ArrayList<String> cameraDeviceNameList = new ArrayList<>(Arrays.asList(activity.getResources().getStringArray(R.array.cameraDeviceNames)));
241 cameraDeviceNameList.addAll(supportedCameraNameList);
242 ArrayList<String> cameraDeviceValueList = new ArrayList<>(Arrays.asList(activity.getResources().getStringArray(R.array.cameraDeviceValues)));
243 cameraDeviceValueList.addAll(supportedCameraIdList);
244
245 final String[] cameraDeviceNames = cameraDeviceNameList.toArray(new String[]{});
246 final String[] cameraDeviceValues = cameraDeviceValueList.toArray(new String[]{});
247
248 final boolean haveCameraDevices = !supportedCameraIdList.isEmpty();
249
250 String[] imageSourceNames = activity.getResources().getStringArray(R.array.cameraImageSourceNames);
251 String[] imageSourceValues = activity.getResources().getStringArray(R.array.cameraImageSourceValues);
252 if (!haveCameraDevices) {
253 // Remove the last entry (ndk / Device Camera)
254 imageSourceNames = Arrays.copyOfRange(imageSourceNames, 0, imageSourceNames.length - 1);
255 imageSourceValues = Arrays.copyOfRange(imageSourceValues, 0, imageSourceValues.length - 1);
256 }
257
258 final String defaultImageSource = haveCameraDevices ? "ndk" : "image";
259
260 SettingSection cameraSection = mSettings.getSection(Settings.SECTION_CAMERA);
261
262 Setting innerCameraImageSource = cameraSection.getSetting(SettingsFile.KEY_CAMERA_INNER_NAME);
263 Setting innerCameraConfig = asStringSetting(cameraSection.getSetting(SettingsFile.KEY_CAMERA_INNER_CONFIG));
264 Setting innerCameraFlip = cameraSection.getSetting(SettingsFile.KEY_CAMERA_INNER_FLIP);
265 sl.add(new HeaderSetting(null, null, R.string.inner_camera, 0));
266 sl.add(new StringSingleChoiceSetting(SettingsFile.KEY_CAMERA_INNER_NAME, Settings.SECTION_CAMERA, R.string.image_source, R.string.image_source_description, imageSourceNames, imageSourceValues, defaultImageSource, innerCameraImageSource));
267 if (haveCameraDevices)
268 sl.add(new StringSingleChoiceSetting(SettingsFile.KEY_CAMERA_INNER_CONFIG, Settings.SECTION_CAMERA, R.string.camera_device, R.string.camera_device_description, cameraDeviceNames, cameraDeviceValues, "_front", innerCameraConfig));
269 sl.add(new SingleChoiceSetting(SettingsFile.KEY_CAMERA_INNER_FLIP, Settings.SECTION_CAMERA, R.string.image_flip, 0, R.array.cameraFlipNames, R.array.cameraFlipValues, 0, innerCameraFlip));
270
271 Setting outerLeftCameraImageSource = cameraSection.getSetting(SettingsFile.KEY_CAMERA_OUTER_LEFT_NAME);
272 Setting outerLeftCameraConfig = asStringSetting(cameraSection.getSetting(SettingsFile.KEY_CAMERA_OUTER_LEFT_CONFIG));
273 Setting outerLeftCameraFlip = cameraSection.getSetting(SettingsFile.KEY_CAMERA_OUTER_LEFT_FLIP);
274 sl.add(new HeaderSetting(null, null, R.string.outer_left_camera, 0));
275 sl.add(new StringSingleChoiceSetting(SettingsFile.KEY_CAMERA_OUTER_LEFT_NAME, Settings.SECTION_CAMERA, R.string.image_source, R.string.image_source_description, imageSourceNames, imageSourceValues, defaultImageSource, outerLeftCameraImageSource));
276 if (haveCameraDevices)
277 sl.add(new StringSingleChoiceSetting(SettingsFile.KEY_CAMERA_OUTER_LEFT_CONFIG, Settings.SECTION_CAMERA, R.string.camera_device, R.string.camera_device_description, cameraDeviceNames, cameraDeviceValues, "_back", outerLeftCameraConfig));
278 sl.add(new SingleChoiceSetting(SettingsFile.KEY_CAMERA_OUTER_LEFT_FLIP, Settings.SECTION_CAMERA, R.string.image_flip, 0, R.array.cameraFlipNames, R.array.cameraFlipValues, 0, outerLeftCameraFlip));
279
280 Setting outerRightCameraImageSource = cameraSection.getSetting(SettingsFile.KEY_CAMERA_OUTER_RIGHT_NAME);
281 Setting outerRightCameraConfig = asStringSetting(cameraSection.getSetting(SettingsFile.KEY_CAMERA_OUTER_RIGHT_CONFIG));
282 Setting outerRightCameraFlip = cameraSection.getSetting(SettingsFile.KEY_CAMERA_OUTER_RIGHT_FLIP);
283 sl.add(new HeaderSetting(null, null, R.string.outer_right_camera, 0));
284 sl.add(new StringSingleChoiceSetting(SettingsFile.KEY_CAMERA_OUTER_RIGHT_NAME, Settings.SECTION_CAMERA, R.string.image_source, R.string.image_source_description, imageSourceNames, imageSourceValues, defaultImageSource, outerRightCameraImageSource));
285 if (haveCameraDevices)
286 sl.add(new StringSingleChoiceSetting(SettingsFile.KEY_CAMERA_OUTER_RIGHT_CONFIG, Settings.SECTION_CAMERA, R.string.camera_device, R.string.camera_device_description, cameraDeviceNames, cameraDeviceValues, "_back", outerRightCameraConfig));
287 sl.add(new SingleChoiceSetting(SettingsFile.KEY_CAMERA_OUTER_RIGHT_FLIP, Settings.SECTION_CAMERA, R.string.image_flip, 0, R.array.cameraFlipNames, R.array.cameraFlipValues, 0, outerRightCameraFlip));
288 }
289
290 private void addInputSettings(ArrayList<SettingsItem> sl) { 196 private void addInputSettings(ArrayList<SettingsItem> sl) {
291 mView.getActivity().setTitle(R.string.preferences_controls); 197 mView.getActivity().setTitle(R.string.preferences_controls);
292 198
@@ -382,7 +288,7 @@ public final class SettingsFragmentPresenter {
382 sl.add(new HeaderSetting(null, null, R.string.utility, 0)); 288 sl.add(new HeaderSetting(null, null, R.string.utility, 0));
383 sl.add(new CheckBoxSetting(SettingsFile.KEY_DUMP_TEXTURES, Settings.SECTION_UTILITY, R.string.dump_textures, R.string.dump_textures_description, false, dumpTextures)); 289 sl.add(new CheckBoxSetting(SettingsFile.KEY_DUMP_TEXTURES, Settings.SECTION_UTILITY, R.string.dump_textures, R.string.dump_textures_description, false, dumpTextures));
384 sl.add(new CheckBoxSetting(SettingsFile.KEY_CUSTOM_TEXTURES, Settings.SECTION_UTILITY, R.string.custom_textures, R.string.custom_textures_description, false, customTextures)); 290 sl.add(new CheckBoxSetting(SettingsFile.KEY_CUSTOM_TEXTURES, Settings.SECTION_UTILITY, R.string.custom_textures, R.string.custom_textures_description, false, customTextures));
385 //Disabled until custom texture implementation gets rewrite, current one overloads RAM and crashes Citra. 291 //Disabled until custom texture implementation gets rewrite, current one overloads RAM and crashes yuzu.
386 //sl.add(new CheckBoxSetting(SettingsFile.KEY_PRELOAD_TEXTURES, Settings.SECTION_UTILITY, R.string.preload_textures, R.string.preload_textures_description, false, preloadTextures)); 292 //sl.add(new CheckBoxSetting(SettingsFile.KEY_PRELOAD_TEXTURES, Settings.SECTION_UTILITY, R.string.preload_textures, R.string.preload_textures_description, false, preloadTextures));
387 } 293 }
388 294
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentView.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentView.java
index c36eb55a7..3c1743fab 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentView.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentView.java
@@ -1,10 +1,10 @@
1package org.citra.citra_emu.features.settings.ui; 1package org.yuzu.yuzu_emu.features.settings.ui;
2 2
3import androidx.fragment.app.FragmentActivity; 3import androidx.fragment.app.FragmentActivity;
4 4
5import org.citra.citra_emu.features.settings.model.Setting; 5import org.yuzu.yuzu_emu.features.settings.model.Setting;
6import org.citra.citra_emu.features.settings.model.Settings; 6import org.yuzu.yuzu_emu.features.settings.model.Settings;
7import org.citra.citra_emu.features.settings.model.view.SettingsItem; 7import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
8 8
9import java.util.ArrayList; 9import java.util.ArrayList;
10 10
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFrameLayout.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFrameLayout.java
index 67bde5709..f753368a8 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFrameLayout.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFrameLayout.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.ui; 1package org.yuzu.yuzu_emu.features.settings.ui;
2 2
3import android.content.Context; 3import android.content.Context;
4import android.util.AttributeSet; 4import android.util.AttributeSet;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java
index d914f7d0b..2b05739e7 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/CheckBoxSettingViewHolder.java
@@ -1,13 +1,13 @@
1package org.citra.citra_emu.features.settings.ui.viewholder; 1package org.yuzu.yuzu_emu.features.settings.ui.viewholder;
2 2
3import android.view.View; 3import android.view.View;
4import android.widget.CheckBox; 4import android.widget.CheckBox;
5import android.widget.TextView; 5import android.widget.TextView;
6 6
7import org.citra.citra_emu.R; 7import org.yuzu.yuzu_emu.R;
8import org.citra.citra_emu.features.settings.model.view.CheckBoxSetting; 8import org.yuzu.yuzu_emu.features.settings.model.view.CheckBoxSetting;
9import org.citra.citra_emu.features.settings.model.view.SettingsItem; 9import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
10import org.citra.citra_emu.features.settings.ui.SettingsAdapter; 10import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter;
11 11
12public final class CheckBoxSettingViewHolder extends SettingViewHolder { 12public final class CheckBoxSettingViewHolder extends SettingViewHolder {
13 private CheckBoxSetting mItem; 13 private CheckBoxSetting mItem;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/DateTimeViewHolder.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.java
index 09ea93010..60a65b71a 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/DateTimeViewHolder.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/DateTimeViewHolder.java
@@ -1,13 +1,13 @@
1package org.citra.citra_emu.features.settings.ui.viewholder; 1package org.yuzu.yuzu_emu.features.settings.ui.viewholder;
2 2
3import android.view.View; 3import android.view.View;
4import android.widget.TextView; 4import android.widget.TextView;
5 5
6import org.citra.citra_emu.R; 6import org.yuzu.yuzu_emu.R;
7import org.citra.citra_emu.features.settings.model.view.DateTimeSetting; 7import org.yuzu.yuzu_emu.features.settings.model.view.DateTimeSetting;
8import org.citra.citra_emu.features.settings.model.view.SettingsItem; 8import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
9import org.citra.citra_emu.features.settings.ui.SettingsAdapter; 9import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter;
10import org.citra.citra_emu.utils.Log; 10import org.yuzu.yuzu_emu.utils.Log;
11 11
12public final class DateTimeViewHolder extends SettingViewHolder { 12public final class DateTimeViewHolder extends SettingViewHolder {
13 private DateTimeSetting mItem; 13 private DateTimeSetting mItem;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/HeaderViewHolder.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/HeaderViewHolder.java
index baf80ed76..afe021149 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/HeaderViewHolder.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/HeaderViewHolder.java
@@ -1,11 +1,11 @@
1package org.citra.citra_emu.features.settings.ui.viewholder; 1package org.yuzu.yuzu_emu.features.settings.ui.viewholder;
2 2
3import android.view.View; 3import android.view.View;
4import android.widget.TextView; 4import android.widget.TextView;
5 5
6import org.citra.citra_emu.R; 6import org.yuzu.yuzu_emu.R;
7import org.citra.citra_emu.features.settings.model.view.SettingsItem; 7import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
8import org.citra.citra_emu.features.settings.ui.SettingsAdapter; 8import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter;
9 9
10public final class HeaderViewHolder extends SettingViewHolder { 10public final class HeaderViewHolder extends SettingViewHolder {
11 private TextView mHeaderName; 11 private TextView mHeaderName;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java
index 7d95c250a..6f8bef7d7 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/InputBindingSettingViewHolder.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.features.settings.ui.viewholder; 1package org.yuzu.yuzu_emu.features.settings.ui.viewholder;
2 2
3import android.content.Context; 3import android.content.Context;
4import android.content.SharedPreferences; 4import android.content.SharedPreferences;
@@ -6,10 +6,10 @@ import android.preference.PreferenceManager;
6import android.view.View; 6import android.view.View;
7import android.widget.TextView; 7import android.widget.TextView;
8 8
9import org.citra.citra_emu.R; 9import org.yuzu.yuzu_emu.R;
10import org.citra.citra_emu.features.settings.model.view.InputBindingSetting; 10import org.yuzu.yuzu_emu.features.settings.model.view.InputBindingSetting;
11import org.citra.citra_emu.features.settings.model.view.SettingsItem; 11import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
12import org.citra.citra_emu.features.settings.ui.SettingsAdapter; 12import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter;
13 13
14public final class InputBindingSettingViewHolder extends SettingViewHolder { 14public final class InputBindingSettingViewHolder extends SettingViewHolder {
15 private InputBindingSetting mItem; 15 private InputBindingSetting mItem;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/PremiumViewHolder.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/PremiumViewHolder.java
index be0853ff0..1f862b281 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/PremiumViewHolder.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/PremiumViewHolder.java
@@ -1,13 +1,13 @@
1package org.citra.citra_emu.features.settings.ui.viewholder; 1package org.yuzu.yuzu_emu.features.settings.ui.viewholder;
2 2
3import android.view.View; 3import android.view.View;
4import android.widget.TextView; 4import android.widget.TextView;
5 5
6import org.citra.citra_emu.R; 6import org.yuzu.yuzu_emu.R;
7import org.citra.citra_emu.features.settings.model.view.SettingsItem; 7import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
8import org.citra.citra_emu.features.settings.ui.SettingsAdapter; 8import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter;
9import org.citra.citra_emu.features.settings.ui.SettingsFragmentView; 9import org.yuzu.yuzu_emu.features.settings.ui.SettingsFragmentView;
10import org.citra.citra_emu.ui.main.MainActivity; 10import org.yuzu.yuzu_emu.ui.main.MainActivity;
11 11
12public final class PremiumViewHolder extends SettingViewHolder { 12public final class PremiumViewHolder extends SettingViewHolder {
13 private TextView mHeaderName; 13 private TextView mHeaderName;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SettingViewHolder.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SettingViewHolder.java
index 2643ea121..268b7c386 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SettingViewHolder.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SettingViewHolder.java
@@ -1,11 +1,11 @@
1package org.citra.citra_emu.features.settings.ui.viewholder; 1package org.yuzu.yuzu_emu.features.settings.ui.viewholder;
2 2
3import android.view.View; 3import android.view.View;
4 4
5import androidx.recyclerview.widget.RecyclerView; 5import androidx.recyclerview.widget.RecyclerView;
6 6
7import org.citra.citra_emu.features.settings.model.view.SettingsItem; 7import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
8import org.citra.citra_emu.features.settings.ui.SettingsAdapter; 8import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter;
9 9
10public abstract class SettingViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 10public abstract class SettingViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
11 private SettingsAdapter mAdapter; 11 private SettingsAdapter mAdapter;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.java
index a175af9f8..e3766f55e 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.java
@@ -1,15 +1,15 @@
1package org.citra.citra_emu.features.settings.ui.viewholder; 1package org.yuzu.yuzu_emu.features.settings.ui.viewholder;
2 2
3import android.content.res.Resources; 3import android.content.res.Resources;
4import android.view.View; 4import android.view.View;
5import android.widget.TextView; 5import android.widget.TextView;
6 6
7import org.citra.citra_emu.R; 7import org.yuzu.yuzu_emu.R;
8import org.citra.citra_emu.features.settings.model.view.PremiumSingleChoiceSetting; 8import org.yuzu.yuzu_emu.features.settings.model.view.PremiumSingleChoiceSetting;
9import org.citra.citra_emu.features.settings.model.view.SettingsItem; 9import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
10import org.citra.citra_emu.features.settings.model.view.SingleChoiceSetting; 10import org.yuzu.yuzu_emu.features.settings.model.view.SingleChoiceSetting;
11import org.citra.citra_emu.features.settings.model.view.StringSingleChoiceSetting; 11import org.yuzu.yuzu_emu.features.settings.model.view.StringSingleChoiceSetting;
12import org.citra.citra_emu.features.settings.ui.SettingsAdapter; 12import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter;
13 13
14public final class SingleChoiceViewHolder extends SettingViewHolder { 14public final class SingleChoiceViewHolder extends SettingViewHolder {
15 private SettingsItem mItem; 15 private SettingsItem mItem;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SliderViewHolder.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.java
index 3dd048a29..1f60a37ce 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SliderViewHolder.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SliderViewHolder.java
@@ -1,12 +1,12 @@
1package org.citra.citra_emu.features.settings.ui.viewholder; 1package org.yuzu.yuzu_emu.features.settings.ui.viewholder;
2 2
3import android.view.View; 3import android.view.View;
4import android.widget.TextView; 4import android.widget.TextView;
5 5
6import org.citra.citra_emu.R; 6import org.yuzu.yuzu_emu.R;
7import org.citra.citra_emu.features.settings.model.view.SettingsItem; 7import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
8import org.citra.citra_emu.features.settings.model.view.SliderSetting; 8import org.yuzu.yuzu_emu.features.settings.model.view.SliderSetting;
9import org.citra.citra_emu.features.settings.ui.SettingsAdapter; 9import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter;
10 10
11public final class SliderViewHolder extends SettingViewHolder { 11public final class SliderViewHolder extends SettingViewHolder {
12 private SliderSetting mItem; 12 private SliderSetting mItem;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SubmenuViewHolder.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SubmenuViewHolder.java
index cb8c3e92a..1aca4723d 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/SubmenuViewHolder.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/viewholder/SubmenuViewHolder.java
@@ -1,12 +1,12 @@
1package org.citra.citra_emu.features.settings.ui.viewholder; 1package org.yuzu.yuzu_emu.features.settings.ui.viewholder;
2 2
3import android.view.View; 3import android.view.View;
4import android.widget.TextView; 4import android.widget.TextView;
5 5
6import org.citra.citra_emu.R; 6import org.yuzu.yuzu_emu.R;
7import org.citra.citra_emu.features.settings.model.view.SettingsItem; 7import org.yuzu.yuzu_emu.features.settings.model.view.SettingsItem;
8import org.citra.citra_emu.features.settings.model.view.SubmenuSetting; 8import org.yuzu.yuzu_emu.features.settings.model.view.SubmenuSetting;
9import org.citra.citra_emu.features.settings.ui.SettingsAdapter; 9import org.yuzu.yuzu_emu.features.settings.ui.SettingsAdapter;
10 10
11public final class SubmenuViewHolder extends SettingViewHolder { 11public final class SubmenuViewHolder extends SettingViewHolder {
12 private SubmenuSetting mItem; 12 private SubmenuSetting mItem;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/utils/SettingsFile.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.java
index 8ae6b70d7..9e58dedc2 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/utils/SettingsFile.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/utils/SettingsFile.java
@@ -1,20 +1,20 @@
1package org.citra.citra_emu.features.settings.utils; 1package org.yuzu.yuzu_emu.features.settings.utils;
2 2
3import androidx.annotation.NonNull; 3import androidx.annotation.NonNull;
4 4
5import org.citra.citra_emu.CitraApplication; 5import org.yuzu.yuzu_emu.YuzuApplication;
6import org.citra.citra_emu.NativeLibrary; 6import org.yuzu.yuzu_emu.NativeLibrary;
7import org.citra.citra_emu.R; 7import org.yuzu.yuzu_emu.R;
8import org.citra.citra_emu.features.settings.model.FloatSetting; 8import org.yuzu.yuzu_emu.features.settings.model.FloatSetting;
9import org.citra.citra_emu.features.settings.model.IntSetting; 9import org.yuzu.yuzu_emu.features.settings.model.IntSetting;
10import org.citra.citra_emu.features.settings.model.Setting; 10import org.yuzu.yuzu_emu.features.settings.model.Setting;
11import org.citra.citra_emu.features.settings.model.SettingSection; 11import org.yuzu.yuzu_emu.features.settings.model.SettingSection;
12import org.citra.citra_emu.features.settings.model.Settings; 12import org.yuzu.yuzu_emu.features.settings.model.Settings;
13import org.citra.citra_emu.features.settings.model.StringSetting; 13import org.yuzu.yuzu_emu.features.settings.model.StringSetting;
14import org.citra.citra_emu.features.settings.ui.SettingsActivityView; 14import org.yuzu.yuzu_emu.features.settings.ui.SettingsActivityView;
15import org.citra.citra_emu.utils.BiMap; 15import org.yuzu.yuzu_emu.utils.BiMap;
16import org.citra.citra_emu.utils.DirectoryInitialization; 16import org.yuzu.yuzu_emu.utils.DirectoryInitialization;
17import org.citra.citra_emu.utils.Log; 17import org.yuzu.yuzu_emu.utils.Log;
18import org.ini4j.Wini; 18import org.ini4j.Wini;
19 19
20import java.io.BufferedReader; 20import java.io.BufferedReader;
@@ -164,11 +164,11 @@ public final class SettingsFile {
164 } 164 }
165 } 165 }
166 } catch (FileNotFoundException e) { 166 } catch (FileNotFoundException e) {
167 Log.error("[SettingsFile] File not found: " + ini.getAbsolutePath() + e.getMessage()); 167 Log.error("[SettingsFile] File not found: " + e.getMessage());
168 if (view != null) 168 if (view != null)
169 view.onSettingsFileNotFound(); 169 view.onSettingsFileNotFound();
170 } catch (IOException e) { 170 } catch (IOException e) {
171 Log.error("[SettingsFile] Error reading from: " + ini.getAbsolutePath() + e.getMessage()); 171 Log.error("[SettingsFile] Error reading from: " + e.getMessage());
172 if (view != null) 172 if (view != null)
173 view.onSettingsFileNotFound(); 173 view.onSettingsFileNotFound();
174 } finally { 174 } finally {
@@ -176,7 +176,7 @@ public final class SettingsFile {
176 try { 176 try {
177 reader.close(); 177 reader.close();
178 } catch (IOException e) { 178 } catch (IOException e) {
179 Log.error("[SettingsFile] Error closing: " + ini.getAbsolutePath() + e.getMessage()); 179 Log.error("[SettingsFile] Error closing: " + e.getMessage());
180 } 180 }
181 } 181 }
182 } 182 }
@@ -223,7 +223,7 @@ public final class SettingsFile {
223 writer.store(); 223 writer.store();
224 } catch (IOException e) { 224 } catch (IOException e) {
225 Log.error("[SettingsFile] File not found: " + fileName + ".ini: " + e.getMessage()); 225 Log.error("[SettingsFile] File not found: " + fileName + ".ini: " + e.getMessage());
226 view.showToastMessage(CitraApplication.getAppContext().getString(R.string.error_saving, fileName, e.getMessage()), false); 226 view.showToastMessage(YuzuApplication.getAppContext().getString(R.string.error_saving, fileName, e.getMessage()), false);
227 } 227 }
228 } 228 }
229 229
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/fragments/CustomFilePickerFragment.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/CustomFilePickerFragment.java
index c18ecd4c3..2658b1445 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/fragments/CustomFilePickerFragment.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/CustomFilePickerFragment.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.fragments; 1package org.yuzu.yuzu_emu.fragments;
2 2
3import android.net.Uri; 3import android.net.Uri;
4import android.os.Bundle; 4import android.os.Bundle;
@@ -14,7 +14,7 @@ import androidx.core.content.FileProvider;
14 14
15import com.nononsenseapps.filepicker.FilePickerFragment; 15import com.nononsenseapps.filepicker.FilePickerFragment;
16 16
17import org.citra.citra_emu.R; 17import org.yuzu.yuzu_emu.R;
18 18
19import java.io.File; 19import java.io.File;
20import java.util.Arrays; 20import java.util.Arrays;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.java
index cdb40d6f8..b2083f858 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/EmulationFragment.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.fragments; 1package org.yuzu.yuzu_emu.fragments;
2 2
3import android.content.Context; 3import android.content.Context;
4import android.content.IntentFilter; 4import android.content.IntentFilter;
@@ -22,15 +22,15 @@ import androidx.annotation.NonNull;
22import androidx.fragment.app.Fragment; 22import androidx.fragment.app.Fragment;
23import androidx.localbroadcastmanager.content.LocalBroadcastManager; 23import androidx.localbroadcastmanager.content.LocalBroadcastManager;
24 24
25import org.citra.citra_emu.NativeLibrary; 25import org.yuzu.yuzu_emu.NativeLibrary;
26import org.citra.citra_emu.R; 26import org.yuzu.yuzu_emu.R;
27import org.citra.citra_emu.activities.EmulationActivity; 27import org.yuzu.yuzu_emu.activities.EmulationActivity;
28import org.citra.citra_emu.overlay.InputOverlay; 28import org.yuzu.yuzu_emu.overlay.InputOverlay;
29import org.citra.citra_emu.utils.DirectoryInitialization; 29import org.yuzu.yuzu_emu.utils.DirectoryInitialization;
30import org.citra.citra_emu.utils.DirectoryInitialization.DirectoryInitializationState; 30import org.yuzu.yuzu_emu.utils.DirectoryInitialization.DirectoryInitializationState;
31import org.citra.citra_emu.utils.DirectoryStateReceiver; 31import org.yuzu.yuzu_emu.utils.DirectoryStateReceiver;
32import org.citra.citra_emu.utils.EmulationMenuSettings; 32import org.yuzu.yuzu_emu.utils.EmulationMenuSettings;
33import org.citra.citra_emu.utils.Log; 33import org.yuzu.yuzu_emu.utils.Log;
34 34
35public final class EmulationFragment extends Fragment implements SurfaceHolder.Callback, Choreographer.FrameCallback { 35public final class EmulationFragment extends Fragment implements SurfaceHolder.Callback, Choreographer.FrameCallback {
36 private static final String KEY_GAMEPATH = "gamepath"; 36 private static final String KEY_GAMEPATH = "gamepath";
@@ -118,10 +118,10 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
118 public void onResume() { 118 public void onResume() {
119 super.onResume(); 119 super.onResume();
120 Choreographer.getInstance().postFrameCallback(this); 120 Choreographer.getInstance().postFrameCallback(this);
121 if (DirectoryInitialization.areCitraDirectoriesReady()) { 121 if (DirectoryInitialization.areDirectoriesReady()) {
122 mEmulationState.run(activity.isActivityRecreated()); 122 mEmulationState.run(activity.isActivityRecreated());
123 } else { 123 } else {
124 setupCitraDirectoriesThenStartEmulation(); 124 setupDirectoriesThenStartEmulation();
125 } 125 }
126 } 126 }
127 127
@@ -146,7 +146,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
146 super.onDetach(); 146 super.onDetach();
147 } 147 }
148 148
149 private void setupCitraDirectoriesThenStartEmulation() { 149 private void setupDirectoriesThenStartEmulation() {
150 IntentFilter statusIntentFilter = new IntentFilter( 150 IntentFilter statusIntentFilter = new IntentFilter(
151 DirectoryInitialization.BROADCAST_ACTION); 151 DirectoryInitialization.BROADCAST_ACTION);
152 152
@@ -154,7 +154,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
154 new DirectoryStateReceiver(directoryInitializationState -> 154 new DirectoryStateReceiver(directoryInitializationState ->
155 { 155 {
156 if (directoryInitializationState == 156 if (directoryInitializationState ==
157 DirectoryInitializationState.CITRA_DIRECTORIES_INITIALIZED) { 157 DirectoryInitializationState.YUZU_DIRECTORIES_INITIALIZED) {
158 mEmulationState.run(activity.isActivityRecreated()); 158 mEmulationState.run(activity.isActivityRecreated());
159 } else if (directoryInitializationState == 159 } else if (directoryInitializationState ==
160 DirectoryInitializationState.EXTERNAL_STORAGE_PERMISSION_NEEDED) { 160 DirectoryInitializationState.EXTERNAL_STORAGE_PERMISSION_NEEDED) {
diff --git a/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/MenuFragment.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/MenuFragment.java
new file mode 100644
index 000000000..5dc3f5545
--- /dev/null
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/fragments/MenuFragment.java
@@ -0,0 +1,129 @@
1package org.yuzu.yuzu_emu.fragments;
2
3import android.content.pm.PackageManager;
4import android.graphics.Rect;
5import android.os.Bundle;
6import android.util.SparseIntArray;
7import android.view.LayoutInflater;
8import android.view.View;
9import android.view.ViewGroup;
10import android.widget.Button;
11import android.widget.LinearLayout;
12
13import androidx.annotation.ColorInt;
14import androidx.annotation.NonNull;
15import androidx.annotation.Nullable;
16import androidx.core.graphics.Insets;
17import androidx.core.view.ViewCompat;
18import androidx.core.view.WindowInsetsCompat;
19import androidx.fragment.app.Fragment;
20
21import com.google.android.material.color.MaterialColors;
22import com.google.android.material.elevation.ElevationOverlayProvider;
23
24import org.yuzu.yuzu_emu.R;
25import org.yuzu.yuzu_emu.activities.EmulationActivity;
26
27
28public final class MenuFragment extends Fragment implements View.OnClickListener
29{
30 private static final String KEY_TITLE = "title";
31 private static final String KEY_WII = "wii";
32 private static SparseIntArray buttonsActionsMap = new SparseIntArray();
33
34 private int mCutInset = 0;
35
36 static
37 {
38 buttonsActionsMap.append(R.id.menu_exit, EmulationActivity.MENU_ACTION_EXIT);
39 }
40
41 public static MenuFragment newInstance()
42 {
43 MenuFragment fragment = new MenuFragment();
44
45 Bundle arguments = new Bundle();
46 fragment.setArguments(arguments);
47
48 return fragment;
49 }
50
51 // This is primarily intended to account for any navigation bar at the bottom of the screen
52 private int getBottomPaddingRequired()
53 {
54 Rect visibleFrame = new Rect();
55 requireActivity().getWindow().getDecorView().getWindowVisibleDisplayFrame(visibleFrame);
56 return visibleFrame.bottom - visibleFrame.top - getResources().getDisplayMetrics().heightPixels;
57 }
58
59 @NonNull
60 @Override
61 public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
62 Bundle savedInstanceState)
63 {
64 View rootView = inflater.inflate(R.layout.fragment_ingame_menu, container, false);
65
66 LinearLayout options = rootView.findViewById(R.id.layout_options);
67
68// mPauseEmulation = options.findViewById(R.id.menu_pause_emulation);
69// mUnpauseEmulation = options.findViewById(R.id.menu_unpause_emulation);
70//
71// updatePauseUnpauseVisibility();
72//
73// if (!requireActivity().getPackageManager().hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN))
74// {
75// options.findViewById(R.id.menu_overlay_controls).setVisibility(View.GONE);
76// }
77//
78// if (!getArguments().getBoolean(KEY_WII, true))
79// {
80// options.findViewById(R.id.menu_refresh_wiimotes).setVisibility(View.GONE);
81// }
82
83 int bottomPaddingRequired = getBottomPaddingRequired();
84
85 // Provide a safe zone between the navigation bar and Exit Emulation to avoid accidental touches
86 float density = getResources().getDisplayMetrics().density;
87 if (bottomPaddingRequired >= 32 * density)
88 {
89 bottomPaddingRequired += 32 * density;
90 }
91
92 if (bottomPaddingRequired > rootView.getPaddingBottom())
93 {
94 rootView.setPadding(rootView.getPaddingLeft(), rootView.getPaddingTop(),
95 rootView.getPaddingRight(), bottomPaddingRequired);
96 }
97
98 for (int childIndex = 0; childIndex < options.getChildCount(); childIndex++)
99 {
100 Button button = (Button) options.getChildAt(childIndex);
101
102 button.setOnClickListener(this);
103 }
104
105 rootView.findViewById(R.id.menu_exit).setOnClickListener(this);
106
107// mTitleText = rootView.findViewById(R.id.text_game_title);
108// String title = getArguments().getString(KEY_TITLE, null);
109// if (title != null)
110// {
111// mTitleText.setText(title);
112// }
113
114 if (getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_LTR)
115 {
116// rootView.post(() -> NativeLibrary.SetObscuredPixelsLeft(rootView.getWidth()));
117 }
118
119 return rootView;
120 }
121
122 @Override
123 public void onClick(View button)
124 {
125 int action = buttonsActionsMap.get(button.getId());
126 EmulationActivity activity = (EmulationActivity) requireActivity();
127 activity.handleMenuAction(action);
128 }
129}
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/model/Game.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.java
index a4ffc59c7..bc1b19bd1 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/model/Game.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/Game.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.model; 1package org.yuzu.yuzu_emu.model;
2 2
3import android.content.ContentValues; 3import android.content.ContentValues;
4import android.database.Cursor; 4import android.database.Cursor;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/model/GameDatabase.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameDatabase.java
index 8232d0489..ac5db1c36 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/model/GameDatabase.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameDatabase.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.model; 1package org.yuzu.yuzu_emu.model;
2 2
3import android.content.ContentValues; 3import android.content.ContentValues;
4import android.content.Context; 4import android.content.Context;
@@ -6,8 +6,8 @@ import android.database.Cursor;
6import android.database.sqlite.SQLiteDatabase; 6import android.database.sqlite.SQLiteDatabase;
7import android.database.sqlite.SQLiteOpenHelper; 7import android.database.sqlite.SQLiteOpenHelper;
8 8
9import org.citra.citra_emu.NativeLibrary; 9import org.yuzu.yuzu_emu.NativeLibrary;
10import org.citra.citra_emu.utils.Log; 10import org.yuzu.yuzu_emu.utils.Log;
11 11
12import java.io.File; 12import java.io.File;
13import java.util.Arrays; 13import java.util.Arrays;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/model/GameProvider.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameProvider.java
index 33b289fc4..eff4b1e2d 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/model/GameProvider.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/model/GameProvider.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.model; 1package org.yuzu.yuzu_emu.model;
2 2
3import android.content.ContentProvider; 3import android.content.ContentProvider;
4import android.content.ContentValues; 4import android.content.ContentValues;
@@ -8,8 +8,8 @@ import android.net.Uri;
8 8
9import androidx.annotation.NonNull; 9import androidx.annotation.NonNull;
10 10
11import org.citra.citra_emu.BuildConfig; 11import org.yuzu.yuzu_emu.BuildConfig;
12import org.citra.citra_emu.utils.Log; 12import org.yuzu.yuzu_emu.utils.Log;
13 13
14/** 14/**
15 * Provides an interface allowing Activities to interact with the SQLite database. 15 * Provides an interface allowing Activities to interact with the SQLite database.
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/overlay/InputOverlay.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.java
index cdb2f7666..043a164ce 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/overlay/InputOverlay.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlay.java
@@ -4,7 +4,7 @@
4 * Refer to the license.txt file included. 4 * Refer to the license.txt file included.
5 */ 5 */
6 6
7package org.citra.citra_emu.overlay; 7package org.yuzu.yuzu_emu.overlay;
8 8
9import android.app.Activity; 9import android.app.Activity;
10import android.content.Context; 10import android.content.Context;
@@ -25,11 +25,11 @@ import android.view.SurfaceView;
25import android.view.View; 25import android.view.View;
26import android.view.View.OnTouchListener; 26import android.view.View.OnTouchListener;
27 27
28import org.citra.citra_emu.NativeLibrary; 28import org.yuzu.yuzu_emu.NativeLibrary;
29import org.citra.citra_emu.NativeLibrary.ButtonState; 29import org.yuzu.yuzu_emu.NativeLibrary.ButtonState;
30import org.citra.citra_emu.NativeLibrary.ButtonType; 30import org.yuzu.yuzu_emu.NativeLibrary.ButtonType;
31import org.citra.citra_emu.R; 31import org.yuzu.yuzu_emu.R;
32import org.citra.citra_emu.utils.EmulationMenuSettings; 32import org.yuzu.yuzu_emu.utils.EmulationMenuSettings;
33 33
34import java.util.HashSet; 34import java.util.HashSet;
35import java.util.Set; 35import java.util.Set;
@@ -117,7 +117,7 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener {
117 * within a SharedPreferences instance so that those values can be retrieved here. 117 * within a SharedPreferences instance so that those values can be retrieved here.
118 * <p> 118 * <p>
119 * This has a few benefits over the conventional way of storing the values 119 * This has a few benefits over the conventional way of storing the values
120 * (ie. within the Citra ini file). 120 * (ie. within the yuzu ini file).
121 * <ul> 121 * <ul>
122 * <li>No native calls</li> 122 * <li>No native calls</li>
123 * <li>Keeps Android-only values inside the Android environment</li> 123 * <li>Keeps Android-only values inside the Android environment</li>
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/overlay/InputOverlayDrawableButton.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.java
index 81352296c..fe523c6c4 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/overlay/InputOverlayDrawableButton.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableButton.java
@@ -4,7 +4,7 @@
4 * Refer to the license.txt file included. 4 * Refer to the license.txt file included.
5 */ 5 */
6 6
7package org.citra.citra_emu.overlay; 7package org.yuzu.yuzu_emu.overlay;
8 8
9import android.content.res.Resources; 9import android.content.res.Resources;
10import android.graphics.Bitmap; 10import android.graphics.Bitmap;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/overlay/InputOverlayDrawableDpad.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableDpad.java
index 87f3b7cd9..a14840d98 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/overlay/InputOverlayDrawableDpad.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableDpad.java
@@ -4,7 +4,7 @@
4 * Refer to the license.txt file included. 4 * Refer to the license.txt file included.
5 */ 5 */
6 6
7package org.citra.citra_emu.overlay; 7package org.yuzu.yuzu_emu.overlay;
8 8
9import android.content.res.Resources; 9import android.content.res.Resources;
10import android.graphics.Bitmap; 10import android.graphics.Bitmap;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/overlay/InputOverlayDrawableJoystick.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableJoystick.java
index 956a8b1e9..875719311 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/overlay/InputOverlayDrawableJoystick.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/overlay/InputOverlayDrawableJoystick.java
@@ -4,7 +4,7 @@
4 * Refer to the license.txt file included. 4 * Refer to the license.txt file included.
5 */ 5 */
6 6
7package org.citra.citra_emu.overlay; 7package org.yuzu.yuzu_emu.overlay;
8 8
9import android.content.res.Resources; 9import android.content.res.Resources;
10import android.graphics.Bitmap; 10import android.graphics.Bitmap;
@@ -13,8 +13,8 @@ import android.graphics.Rect;
13import android.graphics.drawable.BitmapDrawable; 13import android.graphics.drawable.BitmapDrawable;
14import android.view.MotionEvent; 14import android.view.MotionEvent;
15 15
16import org.citra.citra_emu.NativeLibrary.ButtonType; 16import org.yuzu.yuzu_emu.NativeLibrary.ButtonType;
17import org.citra.citra_emu.utils.EmulationMenuSettings; 17import org.yuzu.yuzu_emu.utils.EmulationMenuSettings;
18 18
19/** 19/**
20 * Custom {@link BitmapDrawable} that is capable 20 * Custom {@link BitmapDrawable} that is capable
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/DividerItemDecoration.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/DividerItemDecoration.java
index 96ccc08bb..f725382e6 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/ui/DividerItemDecoration.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/DividerItemDecoration.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.ui; 1package org.yuzu.yuzu_emu.ui;
2 2
3import android.content.Context; 3import android.content.Context;
4import android.content.res.TypedArray; 4import android.content.res.TypedArray;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/TwoPaneOnBackPressedCallback.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/TwoPaneOnBackPressedCallback.java
index d07fe30d8..78e5f0965 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/ui/TwoPaneOnBackPressedCallback.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/TwoPaneOnBackPressedCallback.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.ui; 1package org.yuzu.yuzu_emu.ui;
2 2
3import android.view.View; 3import android.view.View;
4 4
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainActivity.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.java
index 4ba419a48..6558a05c9 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainActivity.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainActivity.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.ui.main; 1package org.yuzu.yuzu_emu.ui.main;
2 2
3import android.content.Intent; 3import android.content.Intent;
4import android.content.pm.PackageManager; 4import android.content.pm.PackageManager;
@@ -12,19 +12,19 @@ import androidx.annotation.NonNull;
12import androidx.appcompat.app.AppCompatActivity; 12import androidx.appcompat.app.AppCompatActivity;
13import androidx.appcompat.widget.Toolbar; 13import androidx.appcompat.widget.Toolbar;
14 14
15import org.citra.citra_emu.R; 15import org.yuzu.yuzu_emu.R;
16import org.citra.citra_emu.activities.EmulationActivity; 16import org.yuzu.yuzu_emu.activities.EmulationActivity;
17import org.citra.citra_emu.features.settings.ui.SettingsActivity; 17import org.yuzu.yuzu_emu.features.settings.ui.SettingsActivity;
18import org.citra.citra_emu.model.GameProvider; 18import org.yuzu.yuzu_emu.model.GameProvider;
19import org.citra.citra_emu.ui.platform.PlatformGamesFragment; 19import org.yuzu.yuzu_emu.ui.platform.PlatformGamesFragment;
20import org.citra.citra_emu.utils.AddDirectoryHelper; 20import org.yuzu.yuzu_emu.utils.AddDirectoryHelper;
21import org.citra.citra_emu.utils.BillingManager; 21import org.yuzu.yuzu_emu.utils.BillingManager;
22import org.citra.citra_emu.utils.DirectoryInitialization; 22import org.yuzu.yuzu_emu.utils.DirectoryInitialization;
23import org.citra.citra_emu.utils.FileBrowserHelper; 23import org.yuzu.yuzu_emu.utils.FileBrowserHelper;
24import org.citra.citra_emu.utils.PermissionsHandler; 24import org.yuzu.yuzu_emu.utils.PermissionsHandler;
25import org.citra.citra_emu.utils.PicassoUtils; 25import org.yuzu.yuzu_emu.utils.PicassoUtils;
26import org.citra.citra_emu.utils.StartupHandler; 26import org.yuzu.yuzu_emu.utils.StartupHandler;
27import org.citra.citra_emu.utils.ThemeUtil; 27import org.yuzu.yuzu_emu.utils.ThemeUtil;
28 28
29import java.util.Arrays; 29import java.util.Arrays;
30import java.util.Collections; 30import java.util.Collections;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainPresenter.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainPresenter.java
index 4e9994c2a..2608df2c2 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainPresenter.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainPresenter.java
@@ -1,14 +1,14 @@
1package org.citra.citra_emu.ui.main; 1package org.yuzu.yuzu_emu.ui.main;
2 2
3import android.os.SystemClock; 3import android.os.SystemClock;
4 4
5import org.citra.citra_emu.BuildConfig; 5import org.yuzu.yuzu_emu.BuildConfig;
6import org.citra.citra_emu.CitraApplication; 6import org.yuzu.yuzu_emu.YuzuApplication;
7import org.citra.citra_emu.R; 7import org.yuzu.yuzu_emu.R;
8import org.citra.citra_emu.features.settings.model.Settings; 8import org.yuzu.yuzu_emu.features.settings.model.Settings;
9import org.citra.citra_emu.features.settings.utils.SettingsFile; 9import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile;
10import org.citra.citra_emu.model.GameDatabase; 10import org.yuzu.yuzu_emu.model.GameDatabase;
11import org.citra.citra_emu.utils.AddDirectoryHelper; 11import org.yuzu.yuzu_emu.utils.AddDirectoryHelper;
12 12
13public final class MainPresenter { 13public final class MainPresenter {
14 public static final int REQUEST_ADD_DIRECTORY = 1; 14 public static final int REQUEST_ADD_DIRECTORY = 1;
@@ -75,7 +75,7 @@ public final class MainPresenter {
75 } 75 }
76 76
77 public void refeshGameList() { 77 public void refeshGameList() {
78 GameDatabase databaseHelper = CitraApplication.databaseHelper; 78 GameDatabase databaseHelper = YuzuApplication.databaseHelper;
79 databaseHelper.scanLibrary(databaseHelper.getWritableDatabase()); 79 databaseHelper.scanLibrary(databaseHelper.getWritableDatabase());
80 mView.refresh(); 80 mView.refresh();
81 } 81 }
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainView.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainView.java
index de7c04875..c2ff086ee 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainView.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/main/MainView.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.ui.main; 1package org.yuzu.yuzu_emu.ui.main;
2 2
3/** 3/**
4 * Abstraction for the screen that shows on application launch. 4 * Abstraction for the screen that shows on application launch.
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesFragment.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.java
index 9fc30796f..6c327b1b8 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesFragment.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesFragment.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.ui.platform; 1package org.yuzu.yuzu_emu.ui.platform;
2 2
3import android.database.Cursor; 3import android.database.Cursor;
4import android.os.Bundle; 4import android.os.Bundle;
@@ -13,10 +13,10 @@ import androidx.recyclerview.widget.GridLayoutManager;
13import androidx.recyclerview.widget.RecyclerView; 13import androidx.recyclerview.widget.RecyclerView;
14import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; 14import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
15 15
16import org.citra.citra_emu.CitraApplication; 16import org.yuzu.yuzu_emu.YuzuApplication;
17import org.citra.citra_emu.R; 17import org.yuzu.yuzu_emu.R;
18import org.citra.citra_emu.adapters.GameAdapter; 18import org.yuzu.yuzu_emu.adapters.GameAdapter;
19import org.citra.citra_emu.model.GameDatabase; 19import org.yuzu.yuzu_emu.model.GameDatabase;
20 20
21public final class PlatformGamesFragment extends Fragment implements PlatformGamesView { 21public final class PlatformGamesFragment extends Fragment implements PlatformGamesView {
22 private PlatformGamesPresenter mPresenter = new PlatformGamesPresenter(this); 22 private PlatformGamesPresenter mPresenter = new PlatformGamesPresenter(this);
@@ -54,7 +54,7 @@ public final class PlatformGamesFragment extends Fragment implements PlatformGam
54 // Add swipe down to refresh gesture 54 // Add swipe down to refresh gesture
55 final SwipeRefreshLayout pullToRefresh = view.findViewById(R.id.refresh_grid_games); 55 final SwipeRefreshLayout pullToRefresh = view.findViewById(R.id.refresh_grid_games);
56 pullToRefresh.setOnRefreshListener(() -> { 56 pullToRefresh.setOnRefreshListener(() -> {
57 GameDatabase databaseHelper = CitraApplication.databaseHelper; 57 GameDatabase databaseHelper = YuzuApplication.databaseHelper;
58 databaseHelper.scanLibrary(databaseHelper.getWritableDatabase()); 58 databaseHelper.scanLibrary(databaseHelper.getWritableDatabase());
59 refresh(); 59 refresh();
60 pullToRefresh.setRefreshing(false); 60 pullToRefresh.setRefreshing(false);
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesPresenter.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesPresenter.java
index 9d8040e1b..effd4a7d1 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesPresenter.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesPresenter.java
@@ -1,9 +1,9 @@
1package org.citra.citra_emu.ui.platform; 1package org.yuzu.yuzu_emu.ui.platform;
2 2
3 3
4import org.citra.citra_emu.CitraApplication; 4import org.yuzu.yuzu_emu.YuzuApplication;
5import org.citra.citra_emu.model.GameDatabase; 5import org.yuzu.yuzu_emu.model.GameDatabase;
6import org.citra.citra_emu.utils.Log; 6import org.yuzu.yuzu_emu.utils.Log;
7 7
8import rx.android.schedulers.AndroidSchedulers; 8import rx.android.schedulers.AndroidSchedulers;
9import rx.schedulers.Schedulers; 9import rx.schedulers.Schedulers;
@@ -27,7 +27,7 @@ public final class PlatformGamesPresenter {
27 private void loadGames() { 27 private void loadGames() {
28 Log.debug("[PlatformGamesPresenter] : Loading games..."); 28 Log.debug("[PlatformGamesPresenter] : Loading games...");
29 29
30 GameDatabase databaseHelper = CitraApplication.databaseHelper; 30 GameDatabase databaseHelper = YuzuApplication.databaseHelper;
31 31
32 databaseHelper.getGames() 32 databaseHelper.getGames()
33 .subscribeOn(Schedulers.io()) 33 .subscribeOn(Schedulers.io())
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesView.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesView.java
index 4332121eb..a4e3f1eea 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/ui/platform/PlatformGamesView.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/platform/PlatformGamesView.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.ui.platform; 1package org.yuzu.yuzu_emu.ui.platform;
2 2
3import android.database.Cursor; 3import android.database.Cursor;
4 4
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/Action1.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Action1.java
index 886846ec5..2d99138f7 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/Action1.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Action1.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3public interface Action1<T> { 3public interface Action1<T> {
4 void call(T t); 4 void call(T t);
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/AddDirectoryHelper.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/AddDirectoryHelper.java
index 7578c353f..2a90e75d8 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/AddDirectoryHelper.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/AddDirectoryHelper.java
@@ -1,12 +1,12 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import android.content.AsyncQueryHandler; 3import android.content.AsyncQueryHandler;
4import android.content.ContentValues; 4import android.content.ContentValues;
5import android.content.Context; 5import android.content.Context;
6import android.net.Uri; 6import android.net.Uri;
7 7
8import org.citra.citra_emu.model.GameDatabase; 8import org.yuzu.yuzu_emu.model.GameDatabase;
9import org.citra.citra_emu.model.GameProvider; 9import org.yuzu.yuzu_emu.model.GameProvider;
10 10
11public class AddDirectoryHelper { 11public class AddDirectoryHelper {
12 private Context mContext; 12 private Context mContext;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/BiMap.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/BiMap.java
index dfbab1780..eaf25fa43 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/BiMap.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/BiMap.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import java.util.HashMap; 3import java.util.HashMap;
4import java.util.Map; 4import java.util.Map;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/BillingManager.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/BillingManager.java
index 5dc54c235..3d6dd1481 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/BillingManager.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/BillingManager.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import android.app.Activity; 3import android.app.Activity;
4import android.content.SharedPreferences; 4import android.content.SharedPreferences;
@@ -17,16 +17,16 @@ import com.android.billingclient.api.PurchasesUpdatedListener;
17import com.android.billingclient.api.SkuDetails; 17import com.android.billingclient.api.SkuDetails;
18import com.android.billingclient.api.SkuDetailsParams; 18import com.android.billingclient.api.SkuDetailsParams;
19 19
20import org.citra.citra_emu.CitraApplication; 20import org.yuzu.yuzu_emu.YuzuApplication;
21import org.citra.citra_emu.R; 21import org.yuzu.yuzu_emu.R;
22import org.citra.citra_emu.features.settings.utils.SettingsFile; 22import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile;
23import org.citra.citra_emu.ui.main.MainActivity; 23import org.yuzu.yuzu_emu.ui.main.MainActivity;
24 24
25import java.util.ArrayList; 25import java.util.ArrayList;
26import java.util.List; 26import java.util.List;
27 27
28public class BillingManager implements PurchasesUpdatedListener { 28public class BillingManager implements PurchasesUpdatedListener {
29 private final String BILLING_SKU_PREMIUM = "citra.citra_emu.product_id.premium"; 29 private final String BILLING_SKU_PREMIUM = "yuzu.yuzu_emu.product_id.premium";
30 30
31 private final Activity mActivity; 31 private final Activity mActivity;
32 private BillingClient mBillingClient; 32 private BillingClient mBillingClient;
@@ -35,7 +35,7 @@ public class BillingManager implements PurchasesUpdatedListener {
35 private boolean mIsServiceConnected = false; 35 private boolean mIsServiceConnected = false;
36 private Runnable mUpdateBillingCallback; 36 private Runnable mUpdateBillingCallback;
37 37
38 private static SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(CitraApplication.getAppContext()); 38 private static SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.getAppContext());
39 39
40 public BillingManager(Activity activity) { 40 public BillingManager(Activity activity) {
41 mActivity = activity; 41 mActivity = activity;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/ControllerMappingHelper.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ControllerMappingHelper.java
index f801a05f0..92fa50edf 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/ControllerMappingHelper.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ControllerMappingHelper.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import android.view.InputDevice; 3import android.view.InputDevice;
4import android.view.KeyEvent; 4import android.view.KeyEvent;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/DirectoryInitialization.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.java
index 58e552f5e..bac52bb2a 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/DirectoryInitialization.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.java
@@ -4,7 +4,7 @@
4 * Refer to the license.txt file included. 4 * Refer to the license.txt file included.
5 */ 5 */
6 6
7package org.citra.citra_emu.utils; 7package org.yuzu.yuzu_emu.utils;
8 8
9import android.content.Context; 9import android.content.Context;
10import android.content.Intent; 10import android.content.Intent;
@@ -14,7 +14,7 @@ import android.preference.PreferenceManager;
14 14
15import androidx.localbroadcastmanager.content.LocalBroadcastManager; 15import androidx.localbroadcastmanager.content.LocalBroadcastManager;
16 16
17import org.citra.citra_emu.NativeLibrary; 17import org.yuzu.yuzu_emu.NativeLibrary;
18 18
19import java.io.File; 19import java.io.File;
20import java.io.FileOutputStream; 20import java.io.FileOutputStream;
@@ -25,15 +25,15 @@ import java.util.concurrent.atomic.AtomicBoolean;
25 25
26/** 26/**
27 * A service that spawns its own thread in order to copy several binary and shader files 27 * A service that spawns its own thread in order to copy several binary and shader files
28 * from the Citra APK to the external file system. 28 * from the yuzu APK to the external file system.
29 */ 29 */
30public final class DirectoryInitialization { 30public final class DirectoryInitialization {
31 public static final String BROADCAST_ACTION = "org.citra.citra_emu.BROADCAST"; 31 public static final String BROADCAST_ACTION = "org.yuzu.yuzu_emu.BROADCAST";
32 32
33 public static final String EXTRA_STATE = "directoryState"; 33 public static final String EXTRA_STATE = "directoryState";
34 private static volatile DirectoryInitializationState directoryState = null; 34 private static volatile DirectoryInitializationState directoryState = null;
35 private static String userPath; 35 private static String userPath;
36 private static AtomicBoolean isCitraDirectoryInitializationRunning = new AtomicBoolean(false); 36 private static AtomicBoolean isDirectoryInitializationRunning = new AtomicBoolean(false);
37 37
38 public static void start(Context context) { 38 public static void start(Context context) {
39 // Can take a few seconds to run, so don't block UI thread. 39 // Can take a few seconds to run, so don't block UI thread.
@@ -42,15 +42,15 @@ public final class DirectoryInitialization {
42 } 42 }
43 43
44 private static void init(Context context) { 44 private static void init(Context context) {
45 if (!isCitraDirectoryInitializationRunning.compareAndSet(false, true)) 45 if (!isDirectoryInitializationRunning.compareAndSet(false, true))
46 return; 46 return;
47 47
48 if (directoryState != DirectoryInitializationState.CITRA_DIRECTORIES_INITIALIZED) { 48 if (directoryState != DirectoryInitializationState.YUZU_DIRECTORIES_INITIALIZED) {
49 if (PermissionsHandler.hasWriteAccess(context)) { 49 if (PermissionsHandler.hasWriteAccess(context)) {
50 if (setCitraUserDirectory()) { 50 if (setUserDirectory()) {
51 initializeInternalStorage(context); 51 initializeInternalStorage(context);
52 NativeLibrary.CreateConfigFile(); 52 NativeLibrary.CreateConfigFile();
53 directoryState = DirectoryInitializationState.CITRA_DIRECTORIES_INITIALIZED; 53 directoryState = DirectoryInitializationState.YUZU_DIRECTORIES_INITIALIZED;
54 } else { 54 } else {
55 directoryState = DirectoryInitializationState.CANT_FIND_EXTERNAL_STORAGE; 55 directoryState = DirectoryInitializationState.CANT_FIND_EXTERNAL_STORAGE;
56 } 56 }
@@ -59,7 +59,7 @@ public final class DirectoryInitialization {
59 } 59 }
60 } 60 }
61 61
62 isCitraDirectoryInitializationRunning.set(false); 62 isDirectoryInitializationRunning.set(false);
63 sendBroadcastState(directoryState, context); 63 sendBroadcastState(directoryState, context);
64 } 64 }
65 65
@@ -71,14 +71,14 @@ public final class DirectoryInitialization {
71 file.delete(); 71 file.delete();
72 } 72 }
73 73
74 public static boolean areCitraDirectoriesReady() { 74 public static boolean areDirectoriesReady() {
75 return directoryState == DirectoryInitializationState.CITRA_DIRECTORIES_INITIALIZED; 75 return directoryState == DirectoryInitializationState.YUZU_DIRECTORIES_INITIALIZED;
76 } 76 }
77 77
78 public static String getUserDirectory() { 78 public static String getUserDirectory() {
79 if (directoryState == null) { 79 if (directoryState == null) {
80 throw new IllegalStateException("DirectoryInitialization has to run at least once!"); 80 throw new IllegalStateException("DirectoryInitialization has to run at least once!");
81 } else if (isCitraDirectoryInitializationRunning.get()) { 81 } else if (isDirectoryInitializationRunning.get()) {
82 throw new IllegalStateException( 82 throw new IllegalStateException(
83 "DirectoryInitialization has to finish running first!"); 83 "DirectoryInitialization has to finish running first!");
84 } 84 }
@@ -87,11 +87,11 @@ public final class DirectoryInitialization {
87 87
88 private static native void SetSysDirectory(String path); 88 private static native void SetSysDirectory(String path);
89 89
90 private static boolean setCitraUserDirectory() { 90 private static boolean setUserDirectory() {
91 if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { 91 if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
92 File externalPath = Environment.getExternalStorageDirectory(); 92 File externalPath = Environment.getExternalStorageDirectory();
93 if (externalPath != null) { 93 if (externalPath != null) {
94 userPath = externalPath.getAbsolutePath() + "/citra-emu"; 94 userPath = externalPath.getAbsolutePath() + "/yuzu-emu";
95 Log.debug("[DirectoryInitialization] User Dir: " + userPath); 95 Log.debug("[DirectoryInitialization] User Dir: " + userPath);
96 // NativeLibrary.SetUserDirectory(userPath); 96 // NativeLibrary.SetUserDirectory(userPath);
97 return true; 97 return true;
@@ -109,7 +109,7 @@ public final class DirectoryInitialization {
109 String revision = NativeLibrary.GetGitRevision(); 109 String revision = NativeLibrary.GetGitRevision();
110 if (!preferences.getString("sysDirectoryVersion", "").equals(revision)) { 110 if (!preferences.getString("sysDirectoryVersion", "").equals(revision)) {
111 // There is no extracted Sys directory, or there is a Sys directory from another 111 // There is no extracted Sys directory, or there is a Sys directory from another
112 // version of Citra that might contain outdated files. Let's (re-)extract Sys. 112 // version of yuzu that might contain outdated files. Let's (re-)extract Sys.
113 deleteDirectoryRecursively(sysDirectory); 113 deleteDirectoryRecursively(sysDirectory);
114 copyAssetFolder("Sys", sysDirectory, true, context); 114 copyAssetFolder("Sys", sysDirectory, true, context);
115 115
@@ -179,7 +179,7 @@ public final class DirectoryInitialization {
179 } 179 }
180 180
181 public enum DirectoryInitializationState { 181 public enum DirectoryInitializationState {
182 CITRA_DIRECTORIES_INITIALIZED, 182 YUZU_DIRECTORIES_INITIALIZED,
183 EXTERNAL_STORAGE_PERMISSION_NEEDED, 183 EXTERNAL_STORAGE_PERMISSION_NEEDED,
184 CANT_FIND_EXTERNAL_STORAGE 184 CANT_FIND_EXTERNAL_STORAGE
185 } 185 }
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/DirectoryStateReceiver.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryStateReceiver.java
index 5d1e951ca..62c9b018a 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/DirectoryStateReceiver.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryStateReceiver.java
@@ -1,10 +1,10 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import android.content.BroadcastReceiver; 3import android.content.BroadcastReceiver;
4import android.content.Context; 4import android.content.Context;
5import android.content.Intent; 5import android.content.Intent;
6 6
7import org.citra.citra_emu.utils.DirectoryInitialization.DirectoryInitializationState; 7import org.yuzu.yuzu_emu.utils.DirectoryInitialization.DirectoryInitializationState;
8 8
9public class DirectoryStateReceiver extends BroadcastReceiver { 9public class DirectoryStateReceiver extends BroadcastReceiver {
10 Action1<DirectoryInitializationState> callback; 10 Action1<DirectoryInitializationState> callback;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/EmulationMenuSettings.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.java
index 9664f8464..0b11b9cc0 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/EmulationMenuSettings.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/EmulationMenuSettings.java
@@ -1,12 +1,12 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import android.content.SharedPreferences; 3import android.content.SharedPreferences;
4import android.preference.PreferenceManager; 4import android.preference.PreferenceManager;
5 5
6import org.citra.citra_emu.CitraApplication; 6import org.yuzu.yuzu_emu.YuzuApplication;
7 7
8public class EmulationMenuSettings { 8public class EmulationMenuSettings {
9 private static SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(CitraApplication.getAppContext()); 9 private static SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.getAppContext());
10 10
11 // These must match what is defined in src/core/settings.h 11 // These must match what is defined in src/core/settings.h
12 public static final int LayoutOption_Default = 0; 12 public static final int LayoutOption_Default = 0;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/FileBrowserHelper.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileBrowserHelper.java
index baf691f5c..ad3ec3dc1 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/FileBrowserHelper.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileBrowserHelper.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import android.content.Intent; 3import android.content.Intent;
4import android.net.Uri; 4import android.net.Uri;
@@ -10,7 +10,7 @@ import androidx.fragment.app.FragmentActivity;
10import com.nononsenseapps.filepicker.FilePickerActivity; 10import com.nononsenseapps.filepicker.FilePickerActivity;
11import com.nononsenseapps.filepicker.Utils; 11import com.nononsenseapps.filepicker.Utils;
12 12
13import org.citra.citra_emu.activities.CustomFilePickerActivity; 13import org.yuzu.yuzu_emu.activities.CustomFilePickerActivity;
14 14
15import java.io.File; 15import java.io.File;
16import java.util.List; 16import java.util.List;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/FileUtil.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileUtil.java
index f9025171b..11d06c7ee 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/FileUtil.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/FileUtil.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import java.io.File; 3import java.io.File;
4import java.io.FileInputStream; 4import java.io.FileInputStream;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/ForegroundService.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ForegroundService.java
index 31c415779..8834c7bc5 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/ForegroundService.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ForegroundService.java
@@ -4,7 +4,7 @@
4 * Refer to the license.txt file included. 4 * Refer to the license.txt file included.
5 */ 5 */
6 6
7package org.citra.citra_emu.utils; 7package org.yuzu.yuzu_emu.utils;
8 8
9import android.app.PendingIntent; 9import android.app.PendingIntent;
10import android.app.Service; 10import android.app.Service;
@@ -14,8 +14,8 @@ import android.os.IBinder;
14import androidx.core.app.NotificationCompat; 14import androidx.core.app.NotificationCompat;
15import androidx.core.app.NotificationManagerCompat; 15import androidx.core.app.NotificationManagerCompat;
16 16
17import org.citra.citra_emu.R; 17import org.yuzu.yuzu_emu.R;
18import org.citra.citra_emu.activities.EmulationActivity; 18import org.yuzu.yuzu_emu.activities.EmulationActivity;
19 19
20/** 20/**
21 * A service that shows a permanent notification in the background to avoid the app getting 21 * A service that shows a permanent notification in the background to avoid the app getting
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/GameIconRequestHandler.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GameIconRequestHandler.java
index b790c2480..b75dc9a62 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/GameIconRequestHandler.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/GameIconRequestHandler.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import android.graphics.Bitmap; 3import android.graphics.Bitmap;
4 4
@@ -6,7 +6,7 @@ import com.squareup.picasso.Picasso;
6import com.squareup.picasso.Request; 6import com.squareup.picasso.Request;
7import com.squareup.picasso.RequestHandler; 7import com.squareup.picasso.RequestHandler;
8 8
9import org.citra.citra_emu.NativeLibrary; 9import org.yuzu.yuzu_emu.NativeLibrary;
10 10
11import java.nio.IntBuffer; 11import java.nio.IntBuffer;
12 12
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/Log.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.java
index 070d01eb1..ccf54138d 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/Log.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/Log.java
@@ -1,6 +1,6 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import org.citra.citra_emu.BuildConfig; 3import org.yuzu.yuzu_emu.BuildConfig;
4 4
5/** 5/**
6 * Contains methods that call through to {@link android.util.Log}, but 6 * Contains methods that call through to {@link android.util.Log}, but
@@ -8,7 +8,7 @@ import org.citra.citra_emu.BuildConfig;
8 * levels in release builds. 8 * levels in release builds.
9 */ 9 */
10public final class Log { 10public final class Log {
11 private static final String TAG = "Citra Frontend"; 11 private static final String TAG = "Yuzu Frontend";
12 12
13 private Log() { 13 private Log() {
14 } 14 }
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/PermissionsHandler.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PermissionsHandler.java
index a29e23e8d..2eb200da4 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/PermissionsHandler.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PermissionsHandler.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import android.annotation.TargetApi; 3import android.annotation.TargetApi;
4import android.content.Context; 4import android.content.Context;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/PicassoRoundedCornersTransformation.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PicassoRoundedCornersTransformation.java
index 892b46387..03057b0d5 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/PicassoRoundedCornersTransformation.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PicassoRoundedCornersTransformation.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import android.graphics.Bitmap; 3import android.graphics.Bitmap;
4import android.graphics.BitmapShader; 4import android.graphics.BitmapShader;
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/PicassoUtils.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PicassoUtils.java
index c99726685..5033691b3 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/PicassoUtils.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/PicassoUtils.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import android.graphics.Bitmap; 3import android.graphics.Bitmap;
4import android.net.Uri; 4import android.net.Uri;
@@ -6,8 +6,8 @@ import android.widget.ImageView;
6 6
7import com.squareup.picasso.Picasso; 7import com.squareup.picasso.Picasso;
8 8
9import org.citra.citra_emu.CitraApplication; 9import org.yuzu.yuzu_emu.YuzuApplication;
10import org.citra.citra_emu.R; 10import org.yuzu.yuzu_emu.R;
11 11
12import java.io.IOException; 12import java.io.IOException;
13 13
@@ -20,7 +20,7 @@ public class PicassoUtils {
20 if (mPicassoInitialized) { 20 if (mPicassoInitialized) {
21 return; 21 return;
22 } 22 }
23 Picasso picassoInstance = new Picasso.Builder(CitraApplication.getAppContext()) 23 Picasso picassoInstance = new Picasso.Builder(YuzuApplication.getAppContext())
24 .addRequestHandler(new GameIconRequestHandler()) 24 .addRequestHandler(new GameIconRequestHandler())
25 .build(); 25 .build();
26 26
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/StartupHandler.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/StartupHandler.java
index 9112bf90c..5d22e8e08 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/StartupHandler.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/StartupHandler.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import android.content.Intent; 3import android.content.Intent;
4import android.os.Bundle; 4import android.os.Bundle;
@@ -7,8 +7,8 @@ import android.text.TextUtils;
7import androidx.appcompat.app.AlertDialog; 7import androidx.appcompat.app.AlertDialog;
8import androidx.fragment.app.FragmentActivity; 8import androidx.fragment.app.FragmentActivity;
9 9
10import org.citra.citra_emu.R; 10import org.yuzu.yuzu_emu.R;
11import org.citra.citra_emu.activities.EmulationActivity; 11import org.yuzu.yuzu_emu.activities.EmulationActivity;
12 12
13public final class StartupHandler { 13public final class StartupHandler {
14 private static void handlePermissionsCheck(FragmentActivity parent) { 14 private static void handlePermissionsCheck(FragmentActivity parent) {
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/ThemeUtil.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ThemeUtil.java
index 74ef3867f..4e4d48039 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/utils/ThemeUtil.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/ThemeUtil.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.utils; 1package org.yuzu.yuzu_emu.utils;
2 2
3import android.content.SharedPreferences; 3import android.content.SharedPreferences;
4import android.os.Build; 4import android.os.Build;
@@ -6,11 +6,11 @@ import android.preference.PreferenceManager;
6 6
7import androidx.appcompat.app.AppCompatDelegate; 7import androidx.appcompat.app.AppCompatDelegate;
8 8
9import org.citra.citra_emu.CitraApplication; 9import org.yuzu.yuzu_emu.YuzuApplication;
10import org.citra.citra_emu.features.settings.utils.SettingsFile; 10import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile;
11 11
12public class ThemeUtil { 12public class ThemeUtil {
13 private static SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(CitraApplication.getAppContext()); 13 private static SharedPreferences mPreferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.getAppContext());
14 14
15 private static void applyTheme(int designValue) { 15 private static void applyTheme(int designValue) {
16 switch (designValue) { 16 switch (designValue) {
diff --git a/src/android/app/src/main/java/org/citra/citra_emu/viewholders/GameViewHolder.java b/src/android/app/src/main/java/org/yuzu/yuzu_emu/viewholders/GameViewHolder.java
index 50dbcbe18..2dc0f34f3 100644
--- a/src/android/app/src/main/java/org/citra/citra_emu/viewholders/GameViewHolder.java
+++ b/src/android/app/src/main/java/org/yuzu/yuzu_emu/viewholders/GameViewHolder.java
@@ -1,4 +1,4 @@
1package org.citra.citra_emu.viewholders; 1package org.yuzu.yuzu_emu.viewholders;
2 2
3import android.view.View; 3import android.view.View;
4import android.widget.ImageView; 4import android.widget.ImageView;
@@ -6,7 +6,7 @@ import android.widget.TextView;
6 6
7import androidx.recyclerview.widget.RecyclerView; 7import androidx.recyclerview.widget.RecyclerView;
8 8
9import org.citra.citra_emu.R; 9import org.yuzu.yuzu_emu.R;
10 10
11/** 11/**
12 * A simple class that stores references to views so that the GameAdapter doesn't need to 12 * A simple class that stores references to views so that the GameAdapter doesn't need to
diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp
index b343a1453..f548931f1 100644
--- a/src/android/app/src/main/jni/native.cpp
+++ b/src/android/app/src/main/jni/native.cpp
@@ -110,7 +110,7 @@ static Core::SystemResultStatus RunEmulation(const std::string& filepath) {
110 110
111extern "C" { 111extern "C" {
112 112
113void Java_org_citra_citra_1emu_NativeLibrary_SurfaceChanged(JNIEnv* env, 113void Java_org_yuzu_yuzu_1emu_NativeLibrary_SurfaceChanged(JNIEnv* env,
114 [[maybe_unused]] jclass clazz, 114 [[maybe_unused]] jclass clazz,
115 jobject surf) { 115 jobject surf) {
116 s_surf = ANativeWindow_fromSurface(env, surf); 116 s_surf = ANativeWindow_fromSurface(env, surf);
@@ -122,7 +122,7 @@ void Java_org_citra_citra_1emu_NativeLibrary_SurfaceChanged(JNIEnv* env,
122 LOG_INFO(Frontend, "surface changed"); 122 LOG_INFO(Frontend, "surface changed");
123} 123}
124 124
125void Java_org_citra_citra_1emu_NativeLibrary_SurfaceDestroyed(JNIEnv* env, 125void Java_org_yuzu_yuzu_1emu_NativeLibrary_SurfaceDestroyed(JNIEnv* env,
126 [[maybe_unused]] jclass clazz) { 126 [[maybe_unused]] jclass clazz) {
127 ANativeWindow_release(s_surf); 127 ANativeWindow_release(s_surf);
128 s_surf = nullptr; 128 s_surf = nullptr;
@@ -131,32 +131,32 @@ void Java_org_citra_citra_1emu_NativeLibrary_SurfaceDestroyed(JNIEnv* env,
131 } 131 }
132} 132}
133 133
134void Java_org_citra_citra_1emu_NativeLibrary_DoFrame(JNIEnv* env, [[maybe_unused]] jclass clazz) {} 134void Java_org_yuzu_yuzu_1emu_NativeLibrary_DoFrame(JNIEnv* env, [[maybe_unused]] jclass clazz) {}
135 135
136void Java_org_citra_citra_1emu_NativeLibrary_NotifyOrientationChange(JNIEnv* env, 136void Java_org_yuzu_yuzu_1emu_NativeLibrary_NotifyOrientationChange(JNIEnv* env,
137 [[maybe_unused]] jclass clazz, 137 [[maybe_unused]] jclass clazz,
138 jint layout_option, 138 jint layout_option,
139 jint rotation) {} 139 jint rotation) {}
140 140
141void Java_org_citra_citra_1emu_NativeLibrary_SetUserDirectory( 141void Java_org_yuzu_yuzu_1emu_NativeLibrary_SetUserDirectory(
142 [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz, 142 [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz,
143 [[maybe_unused]] jstring j_directory) {} 143 [[maybe_unused]] jstring j_directory) {}
144 144
145void Java_org_citra_citra_1emu_NativeLibrary_UnPauseEmulation([[maybe_unused]] JNIEnv* env, 145void Java_org_yuzu_yuzu_1emu_NativeLibrary_UnPauseEmulation([[maybe_unused]] JNIEnv* env,
146 [[maybe_unused]] jclass clazz) {} 146 [[maybe_unused]] jclass clazz) {}
147 147
148void Java_org_citra_citra_1emu_NativeLibrary_PauseEmulation([[maybe_unused]] JNIEnv* env, 148void Java_org_yuzu_yuzu_1emu_NativeLibrary_PauseEmulation([[maybe_unused]] JNIEnv* env,
149 [[maybe_unused]] jclass clazz) {} 149 [[maybe_unused]] jclass clazz) {}
150 150
151void Java_org_citra_citra_1emu_NativeLibrary_StopEmulation([[maybe_unused]] JNIEnv* env, 151void Java_org_yuzu_yuzu_1emu_NativeLibrary_StopEmulation([[maybe_unused]] JNIEnv* env,
152 [[maybe_unused]] jclass clazz) {} 152 [[maybe_unused]] jclass clazz) {}
153 153
154jboolean Java_org_citra_citra_1emu_NativeLibrary_IsRunning([[maybe_unused]] JNIEnv* env, 154jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_IsRunning([[maybe_unused]] JNIEnv* env,
155 [[maybe_unused]] jclass clazz) { 155 [[maybe_unused]] jclass clazz) {
156 return static_cast<jboolean>(!stop_run); 156 return static_cast<jboolean>(!stop_run);
157} 157}
158 158
159jboolean Java_org_citra_citra_1emu_NativeLibrary_onGamePadEvent([[maybe_unused]] JNIEnv* env, 159jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadEvent([[maybe_unused]] JNIEnv* env,
160 [[maybe_unused]] jclass clazz, 160 [[maybe_unused]] jclass clazz,
161 [[maybe_unused]] jstring j_device, 161 [[maybe_unused]] jstring j_device,
162 jint j_button, jint action) { 162 jint j_button, jint action) {
@@ -164,7 +164,7 @@ jboolean Java_org_citra_citra_1emu_NativeLibrary_onGamePadEvent([[maybe_unused]]
164 return static_cast<jboolean>(true); 164 return static_cast<jboolean>(true);
165} 165}
166 166
167jboolean Java_org_citra_citra_1emu_NativeLibrary_onGamePadMoveEvent([[maybe_unused]] JNIEnv* env, 167jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadMoveEvent([[maybe_unused]] JNIEnv* env,
168 [[maybe_unused]] jclass clazz, 168 [[maybe_unused]] jclass clazz,
169 jstring j_device, jint axis, 169 jstring j_device, jint axis,
170 jfloat x, jfloat y) { 170 jfloat x, jfloat y) {
@@ -183,83 +183,83 @@ jboolean Java_org_citra_citra_1emu_NativeLibrary_onGamePadMoveEvent([[maybe_unus
183 return static_cast<jboolean>(false); 183 return static_cast<jboolean>(false);
184} 184}
185 185
186jboolean Java_org_citra_citra_1emu_NativeLibrary_onGamePadAxisEvent([[maybe_unused]] JNIEnv* env, 186jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadAxisEvent([[maybe_unused]] JNIEnv* env,
187 [[maybe_unused]] jclass clazz, 187 [[maybe_unused]] jclass clazz,
188 jstring j_device, jint axis_id, 188 jstring j_device, jint axis_id,
189 jfloat axis_val) { 189 jfloat axis_val) {
190 return {}; 190 return {};
191} 191}
192 192
193jboolean Java_org_citra_citra_1emu_NativeLibrary_onTouchEvent([[maybe_unused]] JNIEnv* env, 193jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchEvent([[maybe_unused]] JNIEnv* env,
194 [[maybe_unused]] jclass clazz, 194 [[maybe_unused]] jclass clazz,
195 jfloat x, jfloat y, 195 jfloat x, jfloat y,
196 jboolean pressed) { 196 jboolean pressed) {
197 return static_cast<jboolean>(emu_window->OnTouchEvent(x, y, pressed)); 197 return static_cast<jboolean>(emu_window->OnTouchEvent(x, y, pressed));
198} 198}
199 199
200void Java_org_citra_citra_1emu_NativeLibrary_onTouchMoved([[maybe_unused]] JNIEnv* env, 200void Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchMoved([[maybe_unused]] JNIEnv* env,
201 [[maybe_unused]] jclass clazz, jfloat x, 201 [[maybe_unused]] jclass clazz, jfloat x,
202 jfloat y) { 202 jfloat y) {
203 emu_window->OnTouchMoved(x, y); 203 emu_window->OnTouchMoved(x, y);
204} 204}
205 205
206jintArray Java_org_citra_citra_1emu_NativeLibrary_GetIcon([[maybe_unused]] JNIEnv* env, 206jintArray Java_org_yuzu_yuzu_1emu_NativeLibrary_GetIcon([[maybe_unused]] JNIEnv* env,
207 [[maybe_unused]] jclass clazz, 207 [[maybe_unused]] jclass clazz,
208 [[maybe_unused]] jstring j_file) { 208 [[maybe_unused]] jstring j_file) {
209 return {}; 209 return {};
210} 210}
211 211
212jstring Java_org_citra_citra_1emu_NativeLibrary_GetTitle([[maybe_unused]] JNIEnv* env, 212jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_GetTitle([[maybe_unused]] JNIEnv* env,
213 [[maybe_unused]] jclass clazz, 213 [[maybe_unused]] jclass clazz,
214 [[maybe_unused]] jstring j_filename) { 214 [[maybe_unused]] jstring j_filename) {
215 return env->NewStringUTF(""); 215 return env->NewStringUTF("");
216} 216}
217 217
218jstring Java_org_citra_citra_1emu_NativeLibrary_GetDescription([[maybe_unused]] JNIEnv* env, 218jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_GetDescription([[maybe_unused]] JNIEnv* env,
219 [[maybe_unused]] jclass clazz, 219 [[maybe_unused]] jclass clazz,
220 jstring j_filename) { 220 jstring j_filename) {
221 return j_filename; 221 return j_filename;
222} 222}
223 223
224jstring Java_org_citra_citra_1emu_NativeLibrary_GetGameId([[maybe_unused]] JNIEnv* env, 224jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_GetGameId([[maybe_unused]] JNIEnv* env,
225 [[maybe_unused]] jclass clazz, 225 [[maybe_unused]] jclass clazz,
226 jstring j_filename) { 226 jstring j_filename) {
227 return j_filename; 227 return j_filename;
228} 228}
229 229
230jstring Java_org_citra_citra_1emu_NativeLibrary_GetRegions([[maybe_unused]] JNIEnv* env, 230jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_GetRegions([[maybe_unused]] JNIEnv* env,
231 [[maybe_unused]] jclass clazz, 231 [[maybe_unused]] jclass clazz,
232 [[maybe_unused]] jstring j_filename) { 232 [[maybe_unused]] jstring j_filename) {
233 return env->NewStringUTF(""); 233 return env->NewStringUTF("");
234} 234}
235 235
236jstring Java_org_citra_citra_1emu_NativeLibrary_GetCompany([[maybe_unused]] JNIEnv* env, 236jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_GetCompany([[maybe_unused]] JNIEnv* env,
237 [[maybe_unused]] jclass clazz, 237 [[maybe_unused]] jclass clazz,
238 [[maybe_unused]] jstring j_filename) { 238 [[maybe_unused]] jstring j_filename) {
239 return env->NewStringUTF(""); 239 return env->NewStringUTF("");
240} 240}
241 241
242jstring Java_org_citra_citra_1emu_NativeLibrary_GetGitRevision([[maybe_unused]] JNIEnv* env, 242jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_GetGitRevision([[maybe_unused]] JNIEnv* env,
243 [[maybe_unused]] jclass clazz) { 243 [[maybe_unused]] jclass clazz) {
244 return {}; 244 return {};
245} 245}
246 246
247void Java_org_citra_citra_1emu_NativeLibrary_CreateConfigFile 247void Java_org_yuzu_yuzu_1emu_NativeLibrary_CreateConfigFile
248 [[maybe_unused]] (JNIEnv* env, [[maybe_unused]] jclass clazz) {} 248 [[maybe_unused]] (JNIEnv* env, [[maybe_unused]] jclass clazz) {}
249 249
250jint Java_org_citra_citra_1emu_NativeLibrary_DefaultCPUCore([[maybe_unused]] JNIEnv* env, 250jint Java_org_yuzu_yuzu_1emu_NativeLibrary_DefaultCPUCore([[maybe_unused]] JNIEnv* env,
251 [[maybe_unused]] jclass clazz) { 251 [[maybe_unused]] jclass clazz) {
252 return {}; 252 return {};
253} 253}
254 254
255void Java_org_citra_citra_1emu_NativeLibrary_Run__Ljava_lang_String_2Ljava_lang_String_2Z( 255void Java_org_yuzu_yuzu_1emu_NativeLibrary_Run__Ljava_lang_String_2Ljava_lang_String_2Z(
256 [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz, [[maybe_unused]] jstring j_file, 256 [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz, [[maybe_unused]] jstring j_file,
257 [[maybe_unused]] jstring j_savestate, [[maybe_unused]] jboolean j_delete_savestate) {} 257 [[maybe_unused]] jstring j_savestate, [[maybe_unused]] jboolean j_delete_savestate) {}
258 258
259void Java_org_citra_citra_1emu_NativeLibrary_ReloadSettings([[maybe_unused]] JNIEnv* env, 259void Java_org_yuzu_yuzu_1emu_NativeLibrary_ReloadSettings([[maybe_unused]] JNIEnv* env,
260 [[maybe_unused]] jclass clazz) {} 260 [[maybe_unused]] jclass clazz) {}
261 261
262jstring Java_org_citra_citra_1emu_NativeLibrary_GetUserSetting([[maybe_unused]] JNIEnv* env, 262jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_GetUserSetting([[maybe_unused]] JNIEnv* env,
263 [[maybe_unused]] jclass clazz, 263 [[maybe_unused]] jclass clazz,
264 jstring j_game_id, jstring j_section, 264 jstring j_game_id, jstring j_section,
265 jstring j_key) { 265 jstring j_key) {
@@ -274,7 +274,7 @@ jstring Java_org_citra_citra_1emu_NativeLibrary_GetUserSetting([[maybe_unused]]
274 return env->NewStringUTF(""); 274 return env->NewStringUTF("");
275} 275}
276 276
277void Java_org_citra_citra_1emu_NativeLibrary_SetUserSetting([[maybe_unused]] JNIEnv* env, 277void Java_org_yuzu_yuzu_1emu_NativeLibrary_SetUserSetting([[maybe_unused]] JNIEnv* env,
278 [[maybe_unused]] jclass clazz, 278 [[maybe_unused]] jclass clazz,
279 jstring j_game_id, jstring j_section, 279 jstring j_game_id, jstring j_section,
280 jstring j_key, jstring j_value) { 280 jstring j_key, jstring j_value) {
@@ -289,7 +289,7 @@ void Java_org_citra_citra_1emu_NativeLibrary_SetUserSetting([[maybe_unused]] JNI
289 env->ReleaseStringUTFChars(j_value, value.data()); 289 env->ReleaseStringUTFChars(j_value, value.data());
290} 290}
291 291
292void Java_org_citra_citra_1emu_NativeLibrary_InitGameIni([[maybe_unused]] JNIEnv* env, 292void Java_org_yuzu_yuzu_1emu_NativeLibrary_InitGameIni([[maybe_unused]] JNIEnv* env,
293 [[maybe_unused]] jclass clazz, 293 [[maybe_unused]] jclass clazz,
294 jstring j_game_id) { 294 jstring j_game_id) {
295 std::string_view game_id = env->GetStringUTFChars(j_game_id, 0); 295 std::string_view game_id = env->GetStringUTFChars(j_game_id, 0);
@@ -297,7 +297,7 @@ void Java_org_citra_citra_1emu_NativeLibrary_InitGameIni([[maybe_unused]] JNIEnv
297 env->ReleaseStringUTFChars(j_game_id, game_id.data()); 297 env->ReleaseStringUTFChars(j_game_id, game_id.data());
298} 298}
299 299
300jdoubleArray Java_org_citra_citra_1emu_NativeLibrary_GetPerfStats([[maybe_unused]] JNIEnv* env, 300jdoubleArray Java_org_yuzu_yuzu_1emu_NativeLibrary_GetPerfStats([[maybe_unused]] JNIEnv* env,
301 [[maybe_unused]] jclass clazz) { 301 [[maybe_unused]] jclass clazz) {
302 jdoubleArray j_stats = env->NewDoubleArray(4); 302 jdoubleArray j_stats = env->NewDoubleArray(4);
303 303
@@ -314,10 +314,10 @@ jdoubleArray Java_org_citra_citra_1emu_NativeLibrary_GetPerfStats([[maybe_unused
314 return j_stats; 314 return j_stats;
315} 315}
316 316
317void Java_org_citra_citra_1emu_utils_DirectoryInitialization_SetSysDirectory( 317void Java_org_yuzu_yuzu_1emu_utils_DirectoryInitialization_SetSysDirectory(
318 [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz, jstring j_path) {} 318 [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz, jstring j_path) {}
319 319
320void Java_org_citra_citra_1emu_NativeLibrary_Run__Ljava_lang_String_2([[maybe_unused]] JNIEnv* env, 320void Java_org_yuzu_yuzu_1emu_NativeLibrary_Run__Ljava_lang_String_2([[maybe_unused]] JNIEnv* env,
321 [[maybe_unused]] jclass clazz, 321 [[maybe_unused]] jclass clazz,
322 jstring j_path) { 322 jstring j_path) {
323 const std::string path = GetJString(env, j_path); 323 const std::string path = GetJString(env, j_path);
@@ -333,7 +333,7 @@ void Java_org_citra_citra_1emu_NativeLibrary_Run__Ljava_lang_String_2([[maybe_un
333 } 333 }
334} 334}
335 335
336void Java_org_citra_citra_1emu_NativeLibrary_LogDeviceInfo([[maybe_unused]] JNIEnv* env, 336void Java_org_yuzu_yuzu_1emu_NativeLibrary_LogDeviceInfo([[maybe_unused]] JNIEnv* env,
337 [[maybe_unused]] jclass clazz) { 337 [[maybe_unused]] jclass clazz) {
338 LOG_INFO(Frontend, "yuzu Version: {}-{}", Common::g_scm_branch, Common::g_scm_desc); 338 LOG_INFO(Frontend, "yuzu Version: {}-{}", Common::g_scm_branch, Common::g_scm_desc);
339 LOG_INFO(Frontend, "Host OS: Android API level {}", android_get_device_api_level()); 339 LOG_INFO(Frontend, "Host OS: Android API level {}", android_get_device_api_level());
diff --git a/src/android/app/src/main/jni/native.h b/src/android/app/src/main/jni/native.h
index 16c90e215..3b23f380b 100644
--- a/src/android/app/src/main/jni/native.h
+++ b/src/android/app/src/main/jni/native.h
@@ -7,119 +7,119 @@
7extern "C" { 7extern "C" {
8#endif 8#endif
9 9
10JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_UnPauseEmulation(JNIEnv* env, 10JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_UnPauseEmulation(JNIEnv* env,
11 jclass clazz); 11 jclass clazz);
12 12
13JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_PauseEmulation(JNIEnv* env, 13JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_PauseEmulation(JNIEnv* env,
14 jclass clazz); 14 jclass clazz);
15 15
16JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_StopEmulation(JNIEnv* env, 16JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_StopEmulation(JNIEnv* env,
17 jclass clazz); 17 jclass clazz);
18 18
19JNIEXPORT jboolean JNICALL Java_org_citra_citra_1emu_NativeLibrary_IsRunning(JNIEnv* env, 19JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_IsRunning(JNIEnv* env,
20 jclass clazz); 20 jclass clazz);
21 21
22JNIEXPORT jboolean JNICALL Java_org_citra_citra_1emu_NativeLibrary_onGamePadEvent( 22JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadEvent(
23 JNIEnv* env, jclass clazz, jstring j_device, jint j_button, jint action); 23 JNIEnv* env, jclass clazz, jstring j_device, jint j_button, jint action);
24 24
25JNIEXPORT jboolean JNICALL Java_org_citra_citra_1emu_NativeLibrary_onGamePadMoveEvent( 25JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadMoveEvent(
26 JNIEnv* env, jclass clazz, jstring j_device, jint axis, jfloat x, jfloat y); 26 JNIEnv* env, jclass clazz, jstring j_device, jint axis, jfloat x, jfloat y);
27 27
28JNIEXPORT jboolean JNICALL Java_org_citra_citra_1emu_NativeLibrary_onGamePadAxisEvent( 28JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onGamePadAxisEvent(
29 JNIEnv* env, jclass clazz, jstring j_device, jint axis_id, jfloat axis_val); 29 JNIEnv* env, jclass clazz, jstring j_device, jint axis_id, jfloat axis_val);
30 30
31JNIEXPORT jboolean JNICALL Java_org_citra_citra_1emu_NativeLibrary_onTouchEvent(JNIEnv* env, 31JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchEvent(JNIEnv* env,
32 jclass clazz, 32 jclass clazz,
33 jfloat x, jfloat y, 33 jfloat x, jfloat y,
34 jboolean pressed); 34 jboolean pressed);
35 35
36JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_onTouchMoved(JNIEnv* env, 36JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_onTouchMoved(JNIEnv* env,
37 jclass clazz, jfloat x, 37 jclass clazz, jfloat x,
38 jfloat y); 38 jfloat y);
39 39
40JNIEXPORT jintArray JNICALL Java_org_citra_citra_1emu_NativeLibrary_GetIcon(JNIEnv* env, 40JNIEXPORT jintArray JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetIcon(JNIEnv* env,
41 jclass clazz, 41 jclass clazz,
42 jstring j_file); 42 jstring j_file);
43 43
44JNIEXPORT jstring JNICALL Java_org_citra_citra_1emu_NativeLibrary_GetTitle(JNIEnv* env, 44JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetTitle(JNIEnv* env,
45 jclass clazz, 45 jclass clazz,
46 jstring j_filename); 46 jstring j_filename);
47 47
48JNIEXPORT jstring JNICALL Java_org_citra_citra_1emu_NativeLibrary_GetDescription( 48JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetDescription(
49 JNIEnv* env, jclass clazz, jstring j_filename); 49 JNIEnv* env, jclass clazz, jstring j_filename);
50 50
51JNIEXPORT jstring JNICALL Java_org_citra_citra_1emu_NativeLibrary_GetGameId(JNIEnv* env, 51JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetGameId(JNIEnv* env,
52 jclass clazz, 52 jclass clazz,
53 jstring j_filename); 53 jstring j_filename);
54 54
55JNIEXPORT jstring JNICALL Java_org_citra_citra_1emu_NativeLibrary_GetRegions(JNIEnv* env, 55JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetRegions(JNIEnv* env,
56 jclass clazz, 56 jclass clazz,
57 jstring j_filename); 57 jstring j_filename);
58 58
59JNIEXPORT jstring JNICALL Java_org_citra_citra_1emu_NativeLibrary_GetCompany(JNIEnv* env, 59JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetCompany(JNIEnv* env,
60 jclass clazz, 60 jclass clazz,
61 jstring j_filename); 61 jstring j_filename);
62 62
63JNIEXPORT jstring JNICALL Java_org_citra_citra_1emu_NativeLibrary_GetGitRevision(JNIEnv* env, 63JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetGitRevision(JNIEnv* env,
64 jclass clazz); 64 jclass clazz);
65 65
66JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_SetUserDirectory( 66JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SetUserDirectory(
67 JNIEnv* env, jclass clazz, jstring j_directory); 67 JNIEnv* env, jclass clazz, jstring j_directory);
68 68
69JNIEXPORT void JNICALL Java_org_citra_citra_1emu_utils_DirectoryInitialization_SetSysDirectory( 69JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_utils_DirectoryInitialization_SetSysDirectory(
70 JNIEnv* env, jclass clazz, jstring path_); 70 JNIEnv* env, jclass clazz, jstring path_);
71 71
72JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_SetSysDirectory(JNIEnv* env, 72JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SetSysDirectory(JNIEnv* env,
73 jclass clazz, 73 jclass clazz,
74 jstring path); 74 jstring path);
75 75
76JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_CreateConfigFile(JNIEnv* env, 76JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_CreateConfigFile(JNIEnv* env,
77 jclass clazz); 77 jclass clazz);
78 78
79JNIEXPORT jint JNICALL Java_org_citra_citra_1emu_NativeLibrary_DefaultCPUCore(JNIEnv* env, 79JNIEXPORT jint JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_DefaultCPUCore(JNIEnv* env,
80 jclass clazz); 80 jclass clazz);
81JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_SetProfiling(JNIEnv* env, 81JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SetProfiling(JNIEnv* env,
82 jclass clazz, 82 jclass clazz,
83 jboolean enable); 83 jboolean enable);
84 84
85JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_WriteProfileResults(JNIEnv* env, 85JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_WriteProfileResults(JNIEnv* env,
86 jclass clazz); 86 jclass clazz);
87 87
88JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_NotifyOrientationChange( 88JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_NotifyOrientationChange(
89 JNIEnv* env, jclass clazz, jint layout_option, jint rotation); 89 JNIEnv* env, jclass clazz, jint layout_option, jint rotation);
90 90
91JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_Run__Ljava_lang_String_2( 91JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_Run__Ljava_lang_String_2(
92 JNIEnv* env, jclass clazz, jstring j_path); 92 JNIEnv* env, jclass clazz, jstring j_path);
93 93
94JNIEXPORT void JNICALL 94JNIEXPORT void JNICALL
95Java_org_citra_citra_1emu_NativeLibrary_Run__Ljava_lang_String_2Ljava_lang_String_2Z( 95Java_org_yuzu_yuzu_1emu_NativeLibrary_Run__Ljava_lang_String_2Ljava_lang_String_2Z(
96 JNIEnv* env, jclass clazz, jstring j_file, jstring j_savestate, jboolean j_delete_savestate); 96 JNIEnv* env, jclass clazz, jstring j_file, jstring j_savestate, jboolean j_delete_savestate);
97 97
98JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_SurfaceChanged(JNIEnv* env, 98JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SurfaceChanged(JNIEnv* env,
99 jclass clazz, 99 jclass clazz,
100 jobject surf); 100 jobject surf);
101 101
102JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_SurfaceDestroyed(JNIEnv* env, 102JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SurfaceDestroyed(JNIEnv* env,
103 jclass clazz); 103 jclass clazz);
104 104
105JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_InitGameIni(JNIEnv* env, 105JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_InitGameIni(JNIEnv* env,
106 jclass clazz, 106 jclass clazz,
107 jstring j_game_id); 107 jstring j_game_id);
108 108
109JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_ReloadSettings(JNIEnv* env, 109JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_ReloadSettings(JNIEnv* env,
110 jclass clazz); 110 jclass clazz);
111 111
112JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_SetUserSetting( 112JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_SetUserSetting(
113 JNIEnv* env, jclass clazz, jstring j_game_id, jstring j_section, jstring j_key, 113 JNIEnv* env, jclass clazz, jstring j_game_id, jstring j_section, jstring j_key,
114 jstring j_value); 114 jstring j_value);
115 115
116JNIEXPORT jstring JNICALL Java_org_citra_citra_1emu_NativeLibrary_GetUserSetting( 116JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetUserSetting(
117 JNIEnv* env, jclass clazz, jstring game_id, jstring section, jstring key); 117 JNIEnv* env, jclass clazz, jstring game_id, jstring section, jstring key);
118 118
119JNIEXPORT jdoubleArray JNICALL Java_org_citra_citra_1emu_NativeLibrary_GetPerfStats(JNIEnv* env, 119JNIEXPORT jdoubleArray JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_GetPerfStats(JNIEnv* env,
120 jclass clazz); 120 jclass clazz);
121 121
122JNIEXPORT void JNICALL Java_org_citra_citra_1emu_NativeLibrary_LogDeviceInfo(JNIEnv* env, 122JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_LogDeviceInfo(JNIEnv* env,
123 jclass clazz); 123 jclass clazz);
124 124
125#ifdef __cplusplus 125#ifdef __cplusplus
diff --git a/src/android/app/src/main/res/animator/menu_slide_in_from_end.xml b/src/android/app/src/main/res/animator/menu_slide_in_from_end.xml
new file mode 100644
index 000000000..3f1495c75
--- /dev/null
+++ b/src/android/app/src/main/res/animator/menu_slide_in_from_end.xml
@@ -0,0 +1,20 @@
1<?xml version="1.0" encoding="utf-8"?>
2<set xmlns:android="http://schemas.android.com/apk/res/android">
3
4 <objectAnimator
5 android:propertyName="translationX"
6 android:valueType="floatType"
7 android:valueFrom="1280dp"
8 android:valueTo="0"
9 android:interpolator="@android:interpolator/decelerate_quad"
10 android:duration="300"/>
11
12 <objectAnimator
13 android:propertyName="alpha"
14 android:valueType="floatType"
15 android:valueFrom="0"
16 android:valueTo="1"
17 android:interpolator="@android:interpolator/accelerate_quad"
18 android:duration="300"/>
19
20</set> \ No newline at end of file
diff --git a/src/android/app/src/main/res/animator/menu_slide_in_from_start.xml b/src/android/app/src/main/res/animator/menu_slide_in_from_start.xml
new file mode 100644
index 000000000..4612aee13
--- /dev/null
+++ b/src/android/app/src/main/res/animator/menu_slide_in_from_start.xml
@@ -0,0 +1,20 @@
1<?xml version="1.0" encoding="utf-8"?>
2<set xmlns:android="http://schemas.android.com/apk/res/android">
3
4 <objectAnimator
5 android:propertyName="translationX"
6 android:valueType="floatType"
7 android:valueFrom="-1280dp"
8 android:valueTo="0"
9 android:interpolator="@android:interpolator/decelerate_quad"
10 android:duration="300"/>
11
12 <objectAnimator
13 android:propertyName="alpha"
14 android:valueType="floatType"
15 android:valueFrom="0"
16 android:valueTo="1"
17 android:interpolator="@android:interpolator/accelerate_quad"
18 android:duration="300"/>
19
20</set> \ No newline at end of file
diff --git a/src/android/app/src/main/res/animator/menu_slide_out_to_end.xml b/src/android/app/src/main/res/animator/menu_slide_out_to_end.xml
new file mode 100644
index 000000000..d650237d6
--- /dev/null
+++ b/src/android/app/src/main/res/animator/menu_slide_out_to_end.xml
@@ -0,0 +1,21 @@
1<?xml version="1.0" encoding="utf-8"?>
2<set xmlns:android="http://schemas.android.com/apk/res/android">
3
4 <!-- This animation is used ONLY when a submenu is replaced. -->
5 <objectAnimator
6 android:propertyName="translationX"
7 android:valueType="floatType"
8 android:valueFrom="0"
9 android:valueTo="1280dp"
10 android:interpolator="@android:interpolator/decelerate_quad"
11 android:duration="200"/>
12
13 <objectAnimator
14 android:propertyName="alpha"
15 android:valueType="floatType"
16 android:valueFrom="1"
17 android:valueTo="0"
18 android:interpolator="@android:interpolator/decelerate_quad"
19 android:duration="200"/>
20
21</set>
diff --git a/src/android/app/src/main/res/animator/menu_slide_out_to_start.xml b/src/android/app/src/main/res/animator/menu_slide_out_to_start.xml
new file mode 100644
index 000000000..c00478946
--- /dev/null
+++ b/src/android/app/src/main/res/animator/menu_slide_out_to_start.xml
@@ -0,0 +1,21 @@
1<?xml version="1.0" encoding="utf-8"?>
2<set xmlns:android="http://schemas.android.com/apk/res/android">
3
4 <!-- This animation is used ONLY when a submenu is replaced. -->
5 <objectAnimator
6 android:propertyName="translationX"
7 android:valueType="floatType"
8 android:valueFrom="0"
9 android:valueTo="-1280dp"
10 android:interpolator="@android:interpolator/decelerate_quad"
11 android:duration="200"/>
12
13 <objectAnimator
14 android:propertyName="alpha"
15 android:valueType="floatType"
16 android:valueFrom="1"
17 android:valueTo="0"
18 android:interpolator="@android:interpolator/decelerate_quad"
19 android:duration="200"/>
20
21</set> \ No newline at end of file
diff --git a/src/android/app/src/main/res/layout-ldrtl/list_item_cheat.xml b/src/android/app/src/main/res/layout-ldrtl/list_item_cheat.xml
deleted file mode 100644
index 9bcf883e1..000000000
--- a/src/android/app/src/main/res/layout-ldrtl/list_item_cheat.xml
+++ /dev/null
@@ -1,38 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<androidx.constraintlayout.widget.ConstraintLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 xmlns:app="http://schemas.android.com/apk/res-auto"
5 xmlns:tools="http://schemas.android.com/tools"
6 android:id="@+id/root"
7 android:layout_width="match_parent"
8 android:layout_height="wrap_content"
9 android:focusable="true"
10 android:nextFocusLeft="@id/checkbox">
11
12 <TextView
13 android:id="@+id/text_name"
14 android:layout_width="0dp"
15 android:layout_height="wrap_content"
16 android:textColor="@color/header_text"
17 android:textSize="16sp"
18 android:layout_margin="@dimen/spacing_large"
19 style="@style/TextAppearance.AppCompat.Headline"
20 app:layout_constraintStart_toStartOf="parent"
21 app:layout_constraintEnd_toStartOf="@id/checkbox"
22 app:layout_constraintTop_toTopOf="parent"
23 app:layout_constraintBottom_toBottomOf="parent"
24 tools:text="Max Lives after losing 1" />
25
26 <CheckBox
27 android:id="@+id/checkbox"
28 android:layout_width="48dp"
29 android:layout_height="64dp"
30 android:focusable="true"
31 android:gravity="center"
32 android:nextFocusRight="@id/root"
33 app:layout_constraintBottom_toBottomOf="parent"
34 app:layout_constraintEnd_toEndOf="parent"
35 app:layout_constraintStart_toEndOf="@id/text_name"
36 app:layout_constraintTop_toTopOf="parent" />
37
38</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/src/android/app/src/main/res/layout/activity_cheats.xml b/src/android/app/src/main/res/layout/activity_cheats.xml
deleted file mode 100644
index b9414ab6d..000000000
--- a/src/android/app/src/main/res/layout/activity_cheats.xml
+++ /dev/null
@@ -1,22 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<androidx.slidingpanelayout.widget.SlidingPaneLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 android:id="@+id/sliding_pane_layout"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent">
7
8 <androidx.fragment.app.FragmentContainerView
9 android:layout_width="320dp"
10 android:layout_height="match_parent"
11 android:layout_weight="1"
12 android:id="@+id/cheat_list"
13 android:name="org.citra.citra_emu.features.cheats.ui.CheatListFragment" />
14
15 <androidx.fragment.app.FragmentContainerView
16 android:layout_width="320dp"
17 android:layout_height="match_parent"
18 android:layout_weight="1"
19 android:id="@+id/cheat_details"
20 android:name="org.citra.citra_emu.features.cheats.ui.CheatDetailsFragment" />
21
22</androidx.slidingpanelayout.widget.SlidingPaneLayout>
diff --git a/src/android/app/src/main/res/layout/activity_emulation.xml b/src/android/app/src/main/res/layout/activity_emulation.xml
index 7d7f36925..debc26e6c 100644
--- a/src/android/app/src/main/res/layout/activity_emulation.xml
+++ b/src/android/app/src/main/res/layout/activity_emulation.xml
@@ -1,17 +1,32 @@
1<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 1<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 android:id="@+id/frame_content" 2 android:layout_width="match_parent"
3 android:layout_width="match_parent" 3 android:layout_height="match_parent"
4 android:layout_height="match_parent"> 4 android:keepScreenOn="true"
5 xmlns:tools="http://schemas.android.com/tools"
6 android:id="@+id/frame_content">
5 7
6 <FrameLayout 8 <FrameLayout
7 android:id="@+id/frame_emulation_fragment" 9 android:id="@+id/frame_emulation_fragment"
8 android:layout_width="match_parent" 10 android:layout_width="match_parent"
9 android:layout_height="match_parent" /> 11 android:layout_height="match_parent"/>
10 12
11 <ImageView 13 <LinearLayout
12 android:id="@+id/image_icon"
13 android:layout_width="match_parent" 14 android:layout_width="match_parent"
14 android:layout_height="match_parent" 15 android:layout_height="match_parent"
15 android:transitionName="image_game_icon" /> 16 android:orientation="horizontal"
17 android:baselineAligned="false">
16 18
17</FrameLayout> \ No newline at end of file 19 <FrameLayout
20 android:id="@+id/frame_menu"
21 android:layout_width="@dimen/menu_width"
22 android:layout_height="match_parent"
23 tools:layout="@layout/fragment_ingame_menu"/>
24
25 <FrameLayout
26 android:id="@+id/frame_submenu"
27 android:layout_width="match_parent"
28 android:layout_height="match_parent"/>
29
30 </LinearLayout>
31
32</FrameLayout>
diff --git a/src/android/app/src/main/res/layout/fragment_cheat_details.xml b/src/android/app/src/main/res/layout/fragment_cheat_details.xml
deleted file mode 100644
index 25b1a268a..000000000
--- a/src/android/app/src/main/res/layout/fragment_cheat_details.xml
+++ /dev/null
@@ -1,163 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<androidx.constraintlayout.widget.ConstraintLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 xmlns:app="http://schemas.android.com/apk/res-auto"
5 xmlns:tools="http://schemas.android.com/tools"
6 android:id="@+id/root"
7 android:layout_width="match_parent"
8 android:layout_height="match_parent">
9
10 <ScrollView
11 android:id="@+id/scroll_view"
12 android:layout_width="match_parent"
13 android:layout_height="0dp"
14 app:layout_constraintStart_toStartOf="parent"
15 app:layout_constraintEnd_toEndOf="parent"
16 app:layout_constraintTop_toTopOf="parent"
17 app:layout_constraintBottom_toTopOf="@id/barrier">
18
19 <androidx.constraintlayout.widget.ConstraintLayout
20 android:layout_width="match_parent"
21 android:layout_height="wrap_content">
22
23 <TextView
24 android:id="@+id/label_name"
25 android:layout_width="match_parent"
26 android:layout_height="wrap_content"
27 style="@style/TextAppearance.MaterialComponents.Headline5"
28 android:textSize="18sp"
29 android:text="@string/cheats_name"
30 android:layout_margin="@dimen/spacing_large"
31 android:labelFor="@id/edit_name"
32 app:layout_constraintStart_toStartOf="parent"
33 app:layout_constraintEnd_toEndOf="parent"
34 app:layout_constraintTop_toTopOf="parent"
35 app:layout_constraintBottom_toTopOf="@id/edit_name" />
36
37 <EditText
38 android:id="@+id/edit_name"
39 android:layout_width="match_parent"
40 android:layout_height="wrap_content"
41 android:minHeight="48dp"
42 android:layout_marginHorizontal="@dimen/spacing_large"
43 android:importantForAutofill="no"
44 android:inputType="text"
45 app:layout_constraintStart_toStartOf="parent"
46 app:layout_constraintEnd_toEndOf="parent"
47 app:layout_constraintTop_toBottomOf="@id/label_name"
48 app:layout_constraintBottom_toTopOf="@id/label_notes"
49 tools:text="Max Lives after losing 1" />
50
51 <TextView
52 android:id="@+id/label_notes"
53 android:layout_width="match_parent"
54 android:layout_height="wrap_content"
55 style="@style/TextAppearance.MaterialComponents.Headline5"
56 android:textSize="18sp"
57 android:text="@string/cheats_notes"
58 android:layout_margin="@dimen/spacing_large"
59 android:labelFor="@id/edit_notes"
60 app:layout_constraintStart_toStartOf="parent"
61 app:layout_constraintEnd_toEndOf="parent"
62 app:layout_constraintTop_toBottomOf="@id/edit_name"
63 app:layout_constraintBottom_toTopOf="@id/edit_notes" />
64
65 <EditText
66 android:id="@+id/edit_notes"
67 android:layout_width="match_parent"
68 android:layout_height="wrap_content"
69 android:minHeight="48dp"
70 android:layout_marginHorizontal="@dimen/spacing_large"
71 android:importantForAutofill="no"
72 android:inputType="textMultiLine"
73 app:layout_constraintStart_toStartOf="parent"
74 app:layout_constraintEnd_toEndOf="parent"
75 app:layout_constraintTop_toBottomOf="@id/label_notes"
76 app:layout_constraintBottom_toTopOf="@id/label_code" />
77
78 <TextView
79 android:id="@+id/label_code"
80 android:layout_width="match_parent"
81 android:layout_height="wrap_content"
82 style="@style/TextAppearance.MaterialComponents.Headline5"
83 android:textSize="18sp"
84 android:text="@string/cheats_code"
85 android:layout_margin="@dimen/spacing_large"
86 android:labelFor="@id/edit_code"
87 app:layout_constraintStart_toStartOf="parent"
88 app:layout_constraintEnd_toEndOf="parent"
89 app:layout_constraintTop_toBottomOf="@id/edit_notes"
90 app:layout_constraintBottom_toTopOf="@id/edit_code" />
91
92 <EditText
93 android:id="@+id/edit_code"
94 android:layout_width="match_parent"
95 android:layout_height="wrap_content"
96 android:minHeight="108sp"
97 android:layout_marginHorizontal="@dimen/spacing_large"
98 android:importantForAutofill="no"
99 android:inputType="textMultiLine"
100 android:typeface="monospace"
101 android:gravity="start"
102 app:layout_constraintStart_toStartOf="parent"
103 app:layout_constraintEnd_toEndOf="parent"
104 app:layout_constraintTop_toBottomOf="@id/label_code"
105 app:layout_constraintBottom_toBottomOf="parent"
106 tools:text="D3000000 00000000\n00138C78 E1C023BE" />
107
108 </androidx.constraintlayout.widget.ConstraintLayout>
109
110 </ScrollView>
111
112 <androidx.constraintlayout.widget.Barrier
113 android:id="@+id/barrier"
114 android:layout_width="wrap_content"
115 android:layout_height="wrap_content"
116 app:barrierDirection="top"
117 app:constraint_referenced_ids="button_delete,button_edit,button_cancel,button_ok" />
118
119 <Button
120 android:id="@+id/button_delete"
121 android:layout_width="0dp"
122 android:layout_height="wrap_content"
123 android:layout_margin="@dimen/spacing_large"
124 android:text="@string/cheats_delete"
125 app:layout_constraintStart_toStartOf="parent"
126 app:layout_constraintEnd_toStartOf="@id/button_edit"
127 app:layout_constraintTop_toBottomOf="@id/barrier"
128 app:layout_constraintBottom_toBottomOf="parent" />
129
130 <Button
131 android:id="@+id/button_edit"
132 android:layout_width="0dp"
133 android:layout_height="wrap_content"
134 android:layout_margin="@dimen/spacing_large"
135 android:text="@string/cheats_edit"
136 app:layout_constraintStart_toEndOf="@id/button_delete"
137 app:layout_constraintEnd_toStartOf="@id/button_cancel"
138 app:layout_constraintTop_toBottomOf="@id/barrier"
139 app:layout_constraintBottom_toBottomOf="parent" />
140
141 <Button
142 android:id="@+id/button_cancel"
143 android:layout_width="0dp"
144 android:layout_height="wrap_content"
145 android:layout_margin="@dimen/spacing_large"
146 android:text="@android:string/cancel"
147 app:layout_constraintStart_toEndOf="@id/button_edit"
148 app:layout_constraintEnd_toStartOf="@id/button_ok"
149 app:layout_constraintTop_toBottomOf="@id/barrier"
150 app:layout_constraintBottom_toBottomOf="parent" />
151
152 <Button
153 android:id="@+id/button_ok"
154 android:layout_width="0dp"
155 android:layout_height="wrap_content"
156 android:layout_margin="@dimen/spacing_large"
157 android:text="@android:string/ok"
158 app:layout_constraintStart_toEndOf="@id/button_cancel"
159 app:layout_constraintEnd_toEndOf="parent"
160 app:layout_constraintTop_toBottomOf="@id/barrier"
161 app:layout_constraintBottom_toBottomOf="parent" />
162
163</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/src/android/app/src/main/res/layout/fragment_cheat_list.xml b/src/android/app/src/main/res/layout/fragment_cheat_list.xml
deleted file mode 100644
index 679a49c28..000000000
--- a/src/android/app/src/main/res/layout/fragment_cheat_list.xml
+++ /dev/null
@@ -1,27 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<androidx.constraintlayout.widget.ConstraintLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 xmlns:app="http://schemas.android.com/apk/res-auto"
5 android:layout_width="match_parent"
6 android:layout_height="match_parent">
7
8 <androidx.recyclerview.widget.RecyclerView
9 android:id="@+id/cheat_list"
10 android:layout_width="match_parent"
11 android:layout_height="0dp"
12 app:layout_constraintStart_toStartOf="parent"
13 app:layout_constraintEnd_toEndOf="parent"
14 app:layout_constraintTop_toTopOf="parent"
15 app:layout_constraintBottom_toBottomOf="parent" />
16
17 <com.google.android.material.floatingactionbutton.FloatingActionButton
18 android:id="@+id/fab"
19 android:layout_width="wrap_content"
20 android:layout_height="wrap_content"
21 android:src="@drawable/ic_add"
22 android:contentDescription="@string/cheats_add"
23 android:layout_margin="16dp"
24 app:layout_constraintStart_toStartOf="parent"
25 app:layout_constraintBottom_toBottomOf="parent" />
26
27</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/src/android/app/src/main/res/layout/fragment_emulation.xml b/src/android/app/src/main/res/layout/fragment_emulation.xml
index d6e47e1e4..828c5efc4 100644
--- a/src/android/app/src/main/res/layout/fragment_emulation.xml
+++ b/src/android/app/src/main/res/layout/fragment_emulation.xml
@@ -3,7 +3,7 @@
3 android:layout_width="match_parent" 3 android:layout_width="match_parent"
4 android:layout_height="match_parent" 4 android:layout_height="match_parent"
5 android:keepScreenOn="true" 5 android:keepScreenOn="true"
6 tools:context="org.citra.citra_emu.fragments.EmulationFragment"> 6 tools:context="org.yuzu.yuzu_emu.fragments.EmulationFragment">
7 7
8 <!-- This is what everything is rendered to during emulation --> 8 <!-- This is what everything is rendered to during emulation -->
9 <SurfaceView 9 <SurfaceView
@@ -14,7 +14,7 @@
14 android:focusableInTouchMode="false" /> 14 android:focusableInTouchMode="false" />
15 15
16 <!-- This is the onscreen input overlay --> 16 <!-- This is the onscreen input overlay -->
17 <org.citra.citra_emu.overlay.InputOverlay 17 <org.yuzu.yuzu_emu.overlay.InputOverlay
18 android:id="@+id/surface_input_overlay" 18 android:id="@+id/surface_input_overlay"
19 android:layout_height="match_parent" 19 android:layout_height="match_parent"
20 android:layout_width="match_parent" 20 android:layout_width="match_parent"
@@ -45,3 +45,4 @@
45 android:visibility="gone" /> 45 android:visibility="gone" />
46 46
47</FrameLayout> 47</FrameLayout>
48t>
diff --git a/src/android/app/src/main/res/layout/fragment_ingame_menu.xml b/src/android/app/src/main/res/layout/fragment_ingame_menu.xml
new file mode 100644
index 000000000..ce618ef7b
--- /dev/null
+++ b/src/android/app/src/main/res/layout/fragment_ingame_menu.xml
@@ -0,0 +1,56 @@
1<?xml version="1.0" encoding="utf-8"?>
2<LinearLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 xmlns:tools="http://schemas.android.com/tools"
5 android:orientation="vertical"
6 android:layout_width="match_parent"
7 android:layout_height="match_parent"
8 android:background="?attr/colorSurface"
9 android:elevation="3dp"
10 tools:layout_width="250dp">
11
12 <TextView
13 android:id="@+id/text_game_title"
14 android:layout_width="match_parent"
15 android:layout_height="wrap_content"
16 android:layout_marginHorizontal="32dp"
17 android:layout_marginVertical="24dp"
18 android:ellipsize="end"
19 android:letterSpacing="0"
20 android:maxLines="@integer/game_title_lines"
21 android:textSize="20sp"
22 android:textColor="?attr/colorOnSurface"
23 tools:text="The Legend of Zelda: Breath of the Wild" />
24
25 <com.google.android.material.divider.MaterialDivider
26 android:id="@+id/divider"
27 android:layout_width="match_parent"
28 android:layout_height="wrap_content" />
29
30 <ScrollView
31 android:layout_width="match_parent"
32 android:layout_height="0dp"
33 android:layout_weight="1"
34 android:scrollbarSize="4dp"
35 android:fadeScrollbars="false">
36
37 <LinearLayout
38 android:id="@+id/layout_options"
39 android:layout_width="match_parent"
40 android:layout_height="wrap_content"
41 android:orientation="vertical" />
42
43 </ScrollView>
44
45 <com.google.android.material.divider.MaterialDivider
46 android:id="@+id/divider_2"
47 android:layout_width="match_parent"
48 android:layout_height="wrap_content" />
49
50 <Button
51 android:id="@+id/menu_exit"
52 style="@style/InGameMenuOption"
53 android:layout_marginTop="@dimen/spacing_large"
54 android:text="@string/emulation_exit" />
55
56</LinearLayout> \ No newline at end of file
diff --git a/src/android/app/src/main/res/layout/fragment_settings.xml b/src/android/app/src/main/res/layout/fragment_settings.xml
index 4c5d597c1..b44e77297 100644
--- a/src/android/app/src/main/res/layout/fragment_settings.xml
+++ b/src/android/app/src/main/res/layout/fragment_settings.xml
@@ -1,5 +1,5 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<org.citra.citra_emu.features.settings.ui.SettingsFrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 2<org.yuzu.yuzu_emu.features.settings.ui.SettingsFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:layout_width="match_parent" 3 android:layout_width="match_parent"
4 android:layout_height="match_parent"> 4 android:layout_height="match_parent">
5 5
@@ -7,6 +7,6 @@
7 android:id="@+id/list_settings" 7 android:id="@+id/list_settings"
8 android:layout_width="match_parent" 8 android:layout_width="match_parent"
9 android:layout_height="match_parent" 9 android:layout_height="match_parent"
10 android:background="@color/card_view_background" /> 10 android:background="@color/view_background" />
11 11
12</org.citra.citra_emu.features.settings.ui.SettingsFrameLayout> \ No newline at end of file 12</org.yuzu.yuzu_emu.features.settings.ui.SettingsFrameLayout> \ No newline at end of file
diff --git a/src/android/app/src/main/res/layout/list_item_cheat.xml b/src/android/app/src/main/res/layout/list_item_cheat.xml
deleted file mode 100644
index c0b5f982f..000000000
--- a/src/android/app/src/main/res/layout/list_item_cheat.xml
+++ /dev/null
@@ -1,38 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<androidx.constraintlayout.widget.ConstraintLayout
3 xmlns:android="http://schemas.android.com/apk/res/android"
4 xmlns:app="http://schemas.android.com/apk/res-auto"
5 xmlns:tools="http://schemas.android.com/tools"
6 android:id="@+id/root"
7 android:layout_width="match_parent"
8 android:layout_height="wrap_content"
9 android:focusable="true"
10 android:nextFocusRight="@id/checkbox">
11
12 <TextView
13 android:id="@+id/text_name"
14 android:layout_width="0dp"
15 android:layout_height="wrap_content"
16 android:textColor="@color/header_text"
17 android:textSize="16sp"
18 android:layout_margin="@dimen/spacing_large"
19 style="@style/TextAppearance.AppCompat.Headline"
20 app:layout_constraintStart_toStartOf="parent"
21 app:layout_constraintEnd_toStartOf="@id/checkbox"
22 app:layout_constraintTop_toTopOf="parent"
23 app:layout_constraintBottom_toBottomOf="parent"
24 tools:text="Max Lives after losing 1" />
25
26 <CheckBox
27 android:id="@+id/checkbox"
28 android:layout_width="48dp"
29 android:layout_height="64dp"
30 android:focusable="true"
31 android:gravity="center"
32 android:nextFocusLeft="@id/root"
33 app:layout_constraintBottom_toBottomOf="parent"
34 app:layout_constraintEnd_toEndOf="parent"
35 app:layout_constraintStart_toEndOf="@id/text_name"
36 app:layout_constraintTop_toTopOf="parent" />
37
38</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/src/android/app/src/main/res/menu/menu_emulation.xml b/src/android/app/src/main/res/menu/menu_emulation.xml
deleted file mode 100644
index b6c0d7cc4..000000000
--- a/src/android/app/src/main/res/menu/menu_emulation.xml
+++ /dev/null
@@ -1,118 +0,0 @@
1<menu xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 xmlns:app="http://schemas.android.com/apk/res-auto"
4 tools:context="org.citra.citra_emu.activities.EmulationActivity">
5
6 <item
7 android:id="@+id/menu_emulation_save_state"
8 android:title="@string/emulation_save_state">
9 <menu/>
10 </item>
11
12 <item
13 android:id="@+id/menu_emulation_load_state"
14 android:title="@string/emulation_load_state">
15 <menu/>
16 </item>
17
18 <item
19 android:id="@+id/menu_emulation_configure_controls"
20 android:title="@string/emulation_configure_controls">
21 <menu>
22 <item
23 android:id="@+id/menu_emulation_edit_layout"
24 android:title="@string/emulation_edit_layout" />
25
26 <item
27 android:id="@+id/menu_emulation_toggle_controls"
28 android:title="@string/emulation_toggle_controls" />
29
30 <item
31 android:id="@+id/menu_emulation_adjust_scale"
32 android:title="@string/emulation_control_scale" />
33
34 <group android:checkableBehavior="all">
35 <item
36 android:id="@+id/menu_emulation_joystick_rel_center"
37 android:checkable="true"
38 android:title="@string/emulation_control_joystick_rel_center"/>
39 <item
40 android:id="@+id/menu_emulation_dpad_slide_enable"
41 android:checkable="true"
42 android:title="@string/emulation_control_dpad_slide_enable" />
43 </group>
44
45 <item
46 android:id="@+id/menu_emulation_reset_overlay"
47 android:title="@string/emulation_touch_overlay_reset" />
48 </menu>
49 </item>
50
51 <item
52 android:id="@+id/menu_emulation_amiibo"
53 android:title="@string/menu_emulation_amiibo">
54 <menu>
55 <item
56 android:id="@+id/menu_emulation_amiibo_load"
57 android:title="@string/menu_emulation_amiibo_load" />
58
59 <item
60 android:id="@+id/menu_emulation_amiibo_remove"
61 android:title="@string/menu_emulation_amiibo_remove" />
62 </menu>
63 </item>
64
65 <item
66 android:id="@+id/menu_emulation_switch_screen_layout"
67 app:showAsAction="never"
68 android:title="@string/emulation_switch_screen_layout">
69 <menu>
70 <group android:checkableBehavior="single">
71 <item
72 android:id="@+id/menu_screen_layout_landscape"
73 android:title="@string/emulation_screen_layout_landscape" />
74
75 <item
76 android:id="@+id/menu_screen_layout_portrait"
77 android:title="@string/emulation_screen_layout_portrait" />
78
79 <item
80 android:id="@+id/menu_screen_layout_single"
81 android:title="@string/emulation_screen_layout_single" />
82
83 <item
84 android:id="@+id/menu_screen_layout_sidebyside"
85 android:title="@string/emulation_screen_layout_sidebyside" />
86 </group>
87 </menu>
88 </item>
89
90 <item
91 android:id="@+id/menu_emulation_swap_screens"
92 app:showAsAction="never"
93 android:title="@string/emulation_swap_screens"
94 android:checkable="true" />
95
96 <item
97 android:id="@+id/menu_emulation_show_fps"
98 app:showAsAction="never"
99 android:title="@string/emulation_show_fps"
100 android:checkable="true" />
101
102 <item
103 android:id="@+id/menu_emulation_show_overlay"
104 app:showAsAction="never"
105 android:title="@string/emulation_show_overlay"
106 android:checkable="true" />
107
108 <item
109 android:id="@+id/menu_emulation_open_cheats"
110 app:showAsAction="never"
111 android:title="@string/emulation_open_cheats" />
112
113 <item
114 android:id="@+id/menu_emulation_open_settings"
115 app:showAsAction="never"
116 android:title="@string/emulation_open_settings" />
117
118</menu>
diff --git a/src/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/src/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
index 57ea32d88..3a9dbf35b 100644
--- a/src/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
+++ b/src/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/src/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/src/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
index 18cc694d1..da4f4fda6 100644
--- a/src/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
+++ b/src/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/src/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/src/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 7052f4077..e7ab1ffcc 100644
--- a/src/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
+++ b/src/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/src/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/src/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
index 0e7cdeed6..68e6acda3 100644
--- a/src/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
+++ b/src/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/src/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/src/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 4d3e9fc41..1a4fa7a08 100644
--- a/src/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
+++ b/src/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/src/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/src/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
index b57a8d623..665e61c1b 100644
--- a/src/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
+++ b/src/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index d2c6d0692..62fc77634 100644
--- a/src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
+++ b/src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
index 22f6eb36f..efbf7184d 100644
--- a/src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
+++ b/src/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 1aa7f3ae2..1349d1065 100644
--- a/src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
+++ b/src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
index b57c8f75b..18cce2c92 100644
--- a/src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
+++ b/src/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/src/android/app/src/main/res/values-night/colors.xml b/src/android/app/src/main/res/values-night/colors.xml
index 43b948021..d71d2acb2 100644
--- a/src/android/app/src/main/res/values-night/colors.xml
+++ b/src/android/app/src/main/res/values-night/colors.xml
@@ -5,13 +5,14 @@
5 <color name="citra_orange_dark">#121212</color> 5 <color name="citra_orange_dark">#121212</color>
6 <color name="citra_accent">#FEC303</color> 6 <color name="citra_accent">#FEC303</color>
7 7
8 <color name="card_view_background">#121212</color> 8 <color name="view_background">#121212</color>
9 <color name="card_view_disabled">#3D3D3D</color> 9 <color name="view_disabled">#3D3D3D</color>
10 <color name="view_text">#FF0000</color>
10 11
11 <color name="gamelist_divider">#404040</color> 12 <color name="gamelist_divider">#404040</color>
12 13
13 <color name="header_text">#E0E0E0</color> 14 <color name="header_text">#E0E0E0</color>
14 <color name="header_subtext">#A0A0A0</color> 15 <color name="header_subtext">#A0A0A0</color>
15 16
16 <color name="citra_logo_text_color">@color/citra_accent</color> 17 <color name="yuzu_logo_text_color">@color/citra_accent</color>
17</resources> 18</resources>
diff --git a/src/android/app/src/main/res/values/colors.xml b/src/android/app/src/main/res/values/colors.xml
index 6668288a7..8db6626c1 100644
--- a/src/android/app/src/main/res/values/colors.xml
+++ b/src/android/app/src/main/res/values/colors.xml
@@ -5,13 +5,14 @@
5 <color name="citra_orange_dark">#FF8D03</color> 5 <color name="citra_orange_dark">#FF8D03</color>
6 <color name="citra_accent">#CC7102</color> 6 <color name="citra_accent">#CC7102</color>
7 7
8 <color name="card_view_background">#ffffff</color> 8 <color name="view_background">#ffffff</color>
9 <color name="card_view_disabled">#D5D5D5</color> 9 <color name="view_disabled">#D5D5D5</color>
10 <color name="view_text">#FF0000</color>
10 11
11 <color name="gamelist_divider">#ffffff</color> 12 <color name="gamelist_divider">#ffffff</color>
12 13
13 <color name="header_text">#1C1424</color> 14 <color name="header_text">#1C1424</color>
14 <color name="header_subtext">#5C5661</color> 15 <color name="header_subtext">#5C5661</color>
15 16
16 <color name="citra_logo_text_color">@color/header_text</color> 17 <color name="yuzu_logo_text_color">@color/header_text</color>
17</resources> 18</resources>
diff --git a/src/android/app/src/main/res/values/dimens.xml b/src/android/app/src/main/res/values/dimens.xml
index b3d186d88..a3bb0c2c5 100644
--- a/src/android/app/src/main/res/values/dimens.xml
+++ b/src/android/app/src/main/res/values/dimens.xml
@@ -1,10 +1,13 @@
1<resources> 1<resources>
2 <!-- Default screen margins, per the Android Design guidelines. -->
3 <dimen name="activity_horizontal_margin">16dp</dimen>
4
5 <dimen name="spacing_small">4dp</dimen> 2 <dimen name="spacing_small">4dp</dimen>
6 <dimen name="spacing_medlarge">12dp</dimen> 3 <dimen name="spacing_medlarge">12dp</dimen>
7 <dimen name="spacing_large">16dp</dimen> 4 <dimen name="spacing_large">16dp</dimen>
5 <dimen name="spacing_xtralarge">32dp</dimen>
6 <dimen name="spacing_list">64dp</dimen>
7 <dimen name="spacing_fab">72dp</dimen>
8 <dimen name="menu_width">256dp</dimen>
9 <dimen name="card_width">135dp</dimen>
8 10
9 <dimen name="dialog_margin">20dp</dimen> 11 <dimen name="dialog_margin">20dp</dimen>
12 <dimen name="elevated_app_bar">3dp</dimen>
10</resources> 13</resources>
diff --git a/src/android/app/src/main/res/values/integers.xml b/src/android/app/src/main/res/values/integers.xml
index 9f6d8492e..5cb9e4d14 100644
--- a/src/android/app/src/main/res/values/integers.xml
+++ b/src/android/app/src/main/res/values/integers.xml
@@ -1,5 +1,6 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<resources> 2<resources>
3 <integer name="game_title_lines">2</integer>
3 <integer name="game_grid_columns">1</integer> 4 <integer name="game_grid_columns">1</integer>
4 5
5 <!-- Default N3DS landscape layout --> 6 <!-- Default N3DS landscape layout -->
diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml
index 85422e849..58d80398f 100644
--- a/src/android/app/src/main/res/values/strings.xml
+++ b/src/android/app/src/main/res/values/strings.xml
@@ -3,7 +3,7 @@
3 3
4 <!-- General application strings --> 4 <!-- General application strings -->
5 <string name="app_name" translatable="false">yuzu</string> 5 <string name="app_name" translatable="false">yuzu</string>
6 <string name="app_disclaimer">This software will run games for the Nintendo 3DS handheld game console. No game titles are included.\n\nBefore you run, please place your rightfully owned 3DS game files onto your device storage.</string> 6 <string name="app_disclaimer">This software will run games for the Nintendo Switch game console. No game titles are included.\n\nBefore you run, please place your rightfully owned Switch game files onto your device storage.</string>
7 <string name="app_notification_channel_name" translatable="false">yuzu</string> 7 <string name="app_notification_channel_name" translatable="false">yuzu</string>
8 <string name="app_notification_channel_id" translatable="false">yuzu</string> 8 <string name="app_notification_channel_id" translatable="false">yuzu</string>
9 <string name="app_notification_channel_description">yuzu Switch emulator notifications</string> 9 <string name="app_notification_channel_description">yuzu Switch emulator notifications</string>
@@ -44,7 +44,7 @@
44 <string name="cpu_jit">Enable CPU JIT</string> 44 <string name="cpu_jit">Enable CPU JIT</string>
45 <string name="cpu_jit_description">Uses the Just-in-Time (JIT) compiler for CPU emulation. When enabled, game performance will be significantly improved.</string> 45 <string name="cpu_jit_description">Uses the Just-in-Time (JIT) compiler for CPU emulation. When enabled, game performance will be significantly improved.</string>
46 <string name="init_clock">System clock type</string> 46 <string name="init_clock">System clock type</string>
47 <string name="init_clock_description">Set the emulated 3DS clock to either reflect that of your device or start at a simulated date and time.</string> 47 <string name="init_clock_description">Set the emulated Console clock to either reflect that of your device or start at a simulated date and time.</string>
48 48
49 <!-- System settings strings --> 49 <!-- System settings strings -->
50 <string name="init_time">System clock starting time override</string> 50 <string name="init_time">System clock starting time override</string>
@@ -52,19 +52,6 @@
52 <string name="emulated_region">Emulated region</string> 52 <string name="emulated_region">Emulated region</string>
53 <string name="emulated_language">Emulated language</string> 53 <string name="emulated_language">Emulated language</string>
54 54
55 <!-- Camera settings strings -->
56 <string name="inner_camera">Inner Camera</string>
57 <string name="outer_left_camera">Outer Left Camera</string>
58 <string name="outer_right_camera">Outer Right Camera</string>
59 <string name="image_source">Image Source</string>
60 <string name="image_source_description">Sets the image source of the virtual camera. You can use an image file, or a device camera when supported.</string>
61 <string name="camera_device">Camera Device</string>
62 <string name="camera_device_description">If the \"Image Source\" setting is set to \"Device Camera\", this sets the physical camera to use.</string>
63 <string name="camera_facing_front">Front</string>
64 <string name="camera_facing_back">Back</string>
65 <string name="camera_facing_external">External</string>
66 <string name="image_flip">Image Flip</string>
67
68 <!-- Graphics settings strings --> 55 <!-- Graphics settings strings -->
69 <string name="renderer">Renderer</string> 56 <string name="renderer">Renderer</string>
70 <string name="vsync">Enable V-Sync</string> 57 <string name="vsync">Enable V-Sync</string>
@@ -153,36 +140,13 @@
153 <string name="loader_error_invalid_format">Invalid ROM format</string> 140 <string name="loader_error_invalid_format">Invalid ROM format</string>
154 141
155 <!-- Emulation Menu --> 142 <!-- Emulation Menu -->
156 <string name="emulation_save_state">Save State</string> 143 <string name="emulation_exit">Exit Emulation</string>
157 <string name="emulation_load_state">Load State</string>
158 <string name="emulation_empty_state_slot">Slot %1$d</string>
159 <string name="emulation_occupied_state_slot">Slot %1$d - %2$tF %2$tR</string>
160 <string name="emulation_show_fps">Show FPS</string>
161 <string name="emulation_configure_controls">Configure Controls</string>
162 <string name="emulation_edit_layout">Edit Layout</string>
163 <string name="emulation_done">Done</string> 144 <string name="emulation_done">Done</string>
164 <string name="emulation_toggle_controls">Toggle Controls</string> 145 <string name="emulation_toggle_controls">Toggle Controls</string>
165 <string name="emulation_control_scale">Adjust Scale</string> 146 <string name="emulation_control_scale">Adjust Scale</string>
166 <string name="emulation_control_joystick_rel_center">Relative Stick Center</string>
167 <string name="emulation_control_dpad_slide_enable">Enable D-Pad Sliding</string>
168 <string name="emulation_open_settings">Open Settings</string>
169 <string name="emulation_open_cheats">Open Cheats</string>
170 <string name="emulation_switch_screen_layout">Landscape Screen Layout</string>
171 <string name="emulation_screen_layout_landscape">Default</string>
172 <string name="emulation_screen_layout_portrait">Portrait</string>
173 <string name="emulation_screen_layout_single">Single Screen</string>
174 <string name="emulation_screen_layout_sidebyside">Side by Side Screens</string>
175 <string name="emulation_swap_screens">Swap Screens</string> 147 <string name="emulation_swap_screens">Swap Screens</string>
176 <string name="emulation_touch_overlay_reset">Reset Overlay</string> 148 <string name="emulation_touch_overlay_reset">Reset Overlay</string>
177 <string name="emulation_show_overlay">Show Overlay</string>
178 <string name="emulation_close_game">Close Game</string>
179 <string name="emulation_close_game_message">Are you sure that you would like to close the current game?</string> 149 <string name="emulation_close_game_message">Are you sure that you would like to close the current game?</string>
180 <string name="menu_emulation_amiibo">Amiibo</string>
181 <string name="menu_emulation_amiibo_load">Load</string>
182 <string name="menu_emulation_amiibo_remove">Remove</string>
183 <string name="select_amiibo">Select Amiibo file</string>
184 <string name="amiibo_load_error">Error loading Amiibo</string>
185 <string name="amiibo_load_error_message">While loading the specified Amiibo file, an error occurred. Please check that the file is correct.</string>
186 150
187 <string name="write_permission_needed">You need to allow write access to external storage for the emulator to work</string> 151 <string name="write_permission_needed">You need to allow write access to external storage for the emulator to work</string>
188 <string name="load_settings">Loading Settings...</string> 152 <string name="load_settings">Loading Settings...</string>
@@ -193,8 +157,6 @@
193 <string name="empty_gamelist">No files were found or no game directory has been selected yet.</string> 157 <string name="empty_gamelist">No files were found or no game directory has been selected yet.</string>
194 158
195 <string name="do_not_show_this_again">Do not show this again</string> 159 <string name="do_not_show_this_again">Do not show this again</string>
196 <string name="savestate_warning_title">Savestates</string>
197 <string name="savestate_warning_message">Warning: Savestates are NOT a replacement for in-game saves, and are not meant to be reliable.\n\nUse at your own risk!</string>
198 160
199 <!-- Software Keyboard --> 161 <!-- Software Keyboard -->
200 <string name="software_keyboard">Software Keyboard</string> 162 <string name="software_keyboard">Software Keyboard</string>
@@ -204,19 +166,6 @@
204 <string name="blank_input_not_allowed">Blank input is not allowed</string> 166 <string name="blank_input_not_allowed">Blank input is not allowed</string>
205 <string name="empty_input_not_allowed">Empty input is not allowed</string> 167 <string name="empty_input_not_allowed">Empty input is not allowed</string>
206 168
207 <!-- Mii Selector -->
208 <string name="mii_selector">Mii Selector</string>
209 <string name="standard_mii">Standard Mii</string>
210
211 <!-- Camera -->
212 <string name="camera_select_image">Select Image</string>
213 <string name="camera">Camera</string>
214 <string name="camera_permission_needed">yuzu needs to access your camera to emulate the 3DS\'s cameras.\n\nAlternatively, you can also set \"Image Source\" to \"Still Image\" in Camera Settings.</string>
215
216 <!-- Microphone -->
217 <string name="microphone">Microphone</string>
218 <string name="microphone_permission_needed">yuzu needs to access your microphone to emulate the 3DS\'s microphone.\n\nAlternatively, you can also change \"Audio Input Device\" in Audio Settings.</string>
219
220 <!-- Core Errors --> 169 <!-- Core Errors -->
221 <string name="abort_button">Abort</string> 170 <string name="abort_button">Abort</string>
222 <string name="continue_button">Continue</string> 171 <string name="continue_button">Continue</string>
@@ -226,21 +175,4 @@
226 <string name="save_load_error">Save/Load Error</string> 175 <string name="save_load_error">Save/Load Error</string>
227 <string name="fatal_error">Fatal Error</string> 176 <string name="fatal_error">Fatal Error</string>
228 <string name="fatal_error_message">A fatal error occurred. Check the log for details.\nContinuing emulation may result in crashes and bugs.</string> 177 <string name="fatal_error_message">A fatal error occurred. Check the log for details.\nContinuing emulation may result in crashes and bugs.</string>
229
230 <!-- Disk shader cache -->
231 <string name="preparing_shaders">Preparing shaders</string>
232 <string name="building_shaders">Building shaders</string>
233
234 <!-- Cheats -->
235 <string name="cheats">Cheats</string>
236 <string name="cheats_add">Add Cheat</string>
237 <string name="cheats_name">Name</string>
238 <string name="cheats_notes">Notes</string>
239 <string name="cheats_code">Code</string>
240 <string name="cheats_edit">Edit</string>
241 <string name="cheats_delete">Delete</string>
242 <string name="cheats_delete_confirmation">Are you sure you want to delete \"%1$s\"?</string>
243 <string name="cheats_error_no_name">Name can\'t be empty</string>
244 <string name="cheats_error_no_code_lines">Code can\'t be empty</string>
245 <string name="cheats_error_on_line">Error on line %1$d</string>
246</resources> 178</resources>
diff --git a/src/android/app/src/main/res/values/styles.xml b/src/android/app/src/main/res/values/styles.xml
index 47fe6f6ea..62f24bad3 100644
--- a/src/android/app/src/main/res/values/styles.xml
+++ b/src/android/app/src/main/res/values/styles.xml
@@ -1,16 +1,29 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<resources> 2<resources>
3 <!-- Custom button styles -->
4 <style name="InGameMenuOption" parent="Widget.Material3.Button.TextButton">
5 <item name="android:layout_width">match_parent</item>
6 <item name="android:layout_height">48dp</item>
7 <item name="android:textColor">@android:color/black</item>
8 <item name="android:textSize">16sp</item>
9 <item name="android:fontFamily">sans-serif-condensed</item>
10 <item name="android:gravity">center_vertical|left</item>
11 <item name="android:paddingLeft">32dp</item>
12 <item name="android:paddingRight">32dp</item>
13 </style>
3 14
4 <!-- Inherit from the material theme --> 15 <!-- Inherit from the material theme -->
5 <style name="CitraBase" parent="Theme.AppCompat.DayNight.NoActionBar"> 16 <style name="YuzuBase" parent="Theme.AppCompat.DayNight.NoActionBar">
6 <!-- Main theme colors --> 17 <!-- Main theme colors -->
18 <item name="colorSurface">@color/view_background</item>
19 <item name="colorOnSurface">@color/view_text</item>
7 <!-- Branding color for the app bar --> 20 <!-- Branding color for the app bar -->
8 <item name="colorPrimary">@color/citra_orange</item> 21 <item name="colorPrimary">@color/citra_orange</item>
9 <!-- Darker variant for the status bar and contextual app bars --> 22 <!-- Darker variant for the status bar and contextual app bars -->
10 <item name="colorPrimaryDark">@color/citra_orange_dark</item> 23 <item name="colorPrimaryDark">@color/citra_orange_dark</item>
11 <item name="colorAccent">@color/citra_accent</item> 24 <item name="colorAccent">@color/citra_accent</item>
12 25
13 <item name="titleTextColor">@color/citra_logo_text_color</item> 26 <item name="titleTextColor">@color/yuzu_logo_text_color</item>
14 27
15 <!-- Enable window content transitions --> 28 <!-- Enable window content transitions -->
16 <item name="android:windowContentTransitions">true</item> 29 <item name="android:windowContentTransitions">true</item>
@@ -21,20 +34,26 @@
21 </style> 34 </style>
22 35
23 <!-- Same as above, but use default action bar, and mandate margins. --> 36 <!-- Same as above, but use default action bar, and mandate margins. -->
24 <style name="CitraSettingsBase" parent="Theme.AppCompat.DayNight"> 37 <style name="YuzuSettingsBase" parent="Theme.AppCompat.DayNight">
38 <item name="colorSurface">@color/view_background</item>
39 <item name="colorOnSurface">@color/view_text</item>
25 <item name="colorPrimary">@color/citra_orange</item> 40 <item name="colorPrimary">@color/citra_orange</item>
26 <item name="colorPrimaryDark">@color/citra_orange_dark</item> 41 <item name="colorPrimaryDark">@color/citra_orange_dark</item>
27 <item name="colorAccent">@color/citra_accent</item> 42 <item name="colorAccent">@color/citra_accent</item>
28 </style> 43 </style>
29 44
30 <!-- Inherit from the Base Citra Dialog Theme --> 45 <!-- Inherit from the Base Citra Dialog Theme -->
31 <style name="CitraEmulationBase" parent="Theme.AppCompat.DayNight"> 46 <style name="YuzuEmulationBase" parent="Theme.AppCompat.DayNight">
47 <item name="colorSurface">@color/view_background</item>
48 <item name="colorOnSurface">@color/view_text</item>
32 <item name="colorPrimary">@color/citra_orange</item> 49 <item name="colorPrimary">@color/citra_orange</item>
33 <item name="colorPrimaryDark">@color/citra_orange_dark</item> 50 <item name="colorPrimaryDark">@color/citra_orange_dark</item>
34 <item name="colorAccent">@color/citra_accent</item> 51 <item name="colorAccent">@color/citra_accent</item>
35 <item name="android:windowTranslucentNavigation">true</item> 52 <item name="android:windowTranslucentNavigation">true</item>
36
37 <item name="android:windowBackground">@android:color/black</item> 53 <item name="android:windowBackground">@android:color/black</item>
54 <item name="windowActionBar">false</item>
55 <item name="windowNoTitle">true</item>
56 <item name="android:windowFullscreen">true</item>
38 57
39 <!-- Enable window content transitions --> 58 <!-- Enable window content transitions -->
40 <item name="android:windowContentTransitions">true</item> 59 <item name="android:windowContentTransitions">true</item>
@@ -44,10 +63,12 @@
44 63
45 <!-- Inherit from a base file picker theme that handles day/night --> 64 <!-- Inherit from a base file picker theme that handles day/night -->
46 <style name="FilePickerTheme" parent="FilePickerBaseTheme"> 65 <style name="FilePickerTheme" parent="FilePickerBaseTheme">
66 <item name="colorSurface">@color/view_background</item>
67 <item name="colorOnSurface">@color/view_text</item>
47 <item name="colorPrimary">@color/citra_orange</item> 68 <item name="colorPrimary">@color/citra_orange</item>
48 <item name="colorPrimaryDark">@color/citra_orange_dark</item> 69 <item name="colorPrimaryDark">@color/citra_orange_dark</item>
49 <item name="colorAccent">@color/citra_accent</item> 70 <item name="colorAccent">@color/citra_accent</item>
50 <item name="android:windowBackground">@color/card_view_background</item> 71 <item name="android:windowBackground">@color/view_background</item>
51 72
52 <!-- Need to set this also to style create folder dialog --> 73 <!-- Need to set this also to style create folder dialog -->
53 <item name="alertDialogTheme">@style/FilePickerAlertDialogTheme</item> 74 <item name="alertDialogTheme">@style/FilePickerAlertDialogTheme</item>
@@ -57,9 +78,15 @@
57 </style> 78 </style>
58 79
59 <style name="FilePickerAlertDialogTheme" parent="Theme.AppCompat.DayNight.Dialog.Alert"> 80 <style name="FilePickerAlertDialogTheme" parent="Theme.AppCompat.DayNight.Dialog.Alert">
81 <item name="colorSurface">@color/view_background</item>
82 <item name="colorOnSurface">@color/view_text</item>
60 <item name="colorPrimary">@color/citra_orange</item> 83 <item name="colorPrimary">@color/citra_orange</item>
61 <item name="colorPrimaryDark">@color/citra_orange_dark</item> 84 <item name="colorPrimaryDark">@color/citra_orange_dark</item>
62 <item name="colorAccent">@color/citra_accent</item> 85 <item name="colorAccent">@color/citra_accent</item>
63 </style> 86 </style>
64 87
65</resources> 88</resources>
89
90
91
92
diff --git a/src/android/app/src/test/java/org/citra/citra_emu/ExampleUnitTest.java b/src/android/app/src/test/java/org/citra/citra_emu/ExampleUnitTest.java
deleted file mode 100644
index 4e4bb317f..000000000
--- a/src/android/app/src/test/java/org/citra/citra_emu/ExampleUnitTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
1package org.citra.citra_emu;
2
3import org.junit.Test;
4
5import static org.junit.Assert.*;
6
7/**
8 * Example local unit test, which will execute on the development machine (host).
9 *
10 * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
11 */
12public class ExampleUnitTest {
13 @Test
14 public void addition_isCorrect() {
15 assertEquals(4, 2 + 2);
16 }
17} \ No newline at end of file
diff --git a/src/android/code-style-java.xml b/src/android/code-style-java.xml
index a8ed003c8..1c9014dd9 100644
--- a/src/android/code-style-java.xml
+++ b/src/android/code-style-java.xml
@@ -1,4 +1,4 @@
1<code_scheme name="Citra-Java" version="173"> 1<code_scheme name="Yuzu-Java" version="173">
2 <option name="OTHER_INDENT_OPTIONS"> 2 <option name="OTHER_INDENT_OPTIONS">
3 <value> 3 <value>
4 <option name="INDENT_SIZE" value="2" /> 4 <option name="INDENT_SIZE" value="2" />
@@ -238,3 +238,4 @@
238 </arrangement> 238 </arrangement>
239 </codeStyleSettings> 239 </codeStyleSettings>
240</code_scheme> 240</code_scheme>
241