diff --git a/Makefile b/Makefile index b6377d7e..a7caab37 100644 --- a/Makefile +++ b/Makefile @@ -61,6 +61,7 @@ SRCS = \ menu/views/music_player.c \ menu/views/startup.c \ menu/views/system_info.c \ + menu/views/settings_editor.c \ utils/fs.c FONTS = \ diff --git a/src/menu/actions.c b/src/menu/actions.c index f517a11f..79791b4a 100644 --- a/src/menu/actions.c +++ b/src/menu/actions.c @@ -22,6 +22,7 @@ static void actions_clear (menu_t *menu) { menu->actions.options = false; menu->actions.system_info = false; menu->actions.settings = false; + menu->actions.credits = false; } static void actions_update_direction (menu_t *menu) { @@ -90,9 +91,11 @@ static void actions_update_buttons (menu_t *menu) { menu->actions.back = true; } else if (pressed.r) { menu->actions.options = true; - } else if (pressed.l) { + } else if (pressed.z) { menu->actions.system_info = true; } else if (pressed.start) { + menu->actions.credits = true; + } else if (pressed.l) { menu->actions.settings = true; } } diff --git a/src/menu/menu.c b/src/menu/menu.c index 1ba98b5d..020fdc33 100644 --- a/src/menu/menu.c +++ b/src/menu/menu.c @@ -146,6 +146,7 @@ static struct views_s { { view_image_viewer_init, view_image_viewer_display }, // MENU_MODE_IMAGE_VIEWER { view_music_player_init, view_music_player_display }, // MENU_MODE_MUSIC_PLAYER { view_credits_init, view_credits_display }, // MENU_MODE_CREDITS + { view_settings_init, view_settings_display }, // MENU_MODE_SETTINGS_EDITOR { view_load_rom_init, view_load_rom_display }, // MENU_MODE_LOAD_ROM { view_load_disk_init, view_load_disk_display }, // MENU_MODE_LOAD_DISK { view_load_emulator_init, view_load_emulator_display }, // MENU_MODE_LOAD_EMULATOR diff --git a/src/menu/menu_state.h b/src/menu/menu_state.h index 1c51b946..7db9ca00 100644 --- a/src/menu/menu_state.h +++ b/src/menu/menu_state.h @@ -31,6 +31,7 @@ typedef enum { MENU_MODE_IMAGE_VIEWER, MENU_MODE_MUSIC_PLAYER, MENU_MODE_CREDITS, + MENU_MODE_SETTINGS_EDITOR, MENU_MODE_LOAD_ROM, MENU_MODE_LOAD_DISK, MENU_MODE_LOAD_EMULATOR, @@ -84,6 +85,7 @@ typedef struct { bool options; bool system_info; bool settings; + bool credits; } actions; struct { diff --git a/src/menu/views/browser.c b/src/menu/views/browser.c index 2f7a6acf..27c170ed 100644 --- a/src/menu/views/browser.c +++ b/src/menu/views/browser.c @@ -286,8 +286,10 @@ static void process (menu_t *menu) { component_context_menu_show(&entry_context_menu); } else if (menu->actions.system_info) { menu->next_mode = MENU_MODE_SYSTEM_INFO; - } else if (menu->actions.settings) { + } else if (menu->actions.credits) { menu->next_mode = MENU_MODE_CREDITS; + } else if (menu->actions.settings) { + menu->next_mode = MENU_MODE_SETTINGS_EDITOR; } } @@ -332,7 +334,7 @@ static void draw (menu_t *menu, surface_t *d) { if (menu->current_time >= 0) { component_actions_bar_text_draw( ALIGN_CENTER, VALIGN_TOP, - "\n" + "Z: System Info | Start: Credits\n" "%s", ctime(&menu->current_time) ); diff --git a/src/menu/views/settings_editor.c b/src/menu/views/settings_editor.c new file mode 100644 index 00000000..2df8fe30 --- /dev/null +++ b/src/menu/views/settings_editor.c @@ -0,0 +1,70 @@ +#include "views.h" + +static char *convert_boolean (int state) { + switch (state) { + case 0: return "Off"; + case 1: return "On"; + default: return "Unknown"; + } +} + +static void process (menu_t *menu) { + if (menu->actions.back) { + menu->next_mode = MENU_MODE_BROWSER; + } +} + +static void draw (menu_t *menu, surface_t *d) { + rdpq_attach(d, NULL); + + component_background_draw(); + + component_layout_draw(); + + component_main_text_draw( + ALIGN_CENTER, VALIGN_TOP, + "SETTINGS EDITOR\n" + "\n" + ); + + component_main_text_draw( + ALIGN_LEFT, VALIGN_TOP, + "\n" + "\n" + "pal60_enabled: %s\n" + "hidden_files_enabled: %s\n" + "default_directory: %s\n" + "use_saves_folder: %s\n" + "autodetect_rom_region: %s\n" + "bgm_enabled: %s\n" + "sound_enabled: %s\n" + "rumble_enabled: %s\n", + convert_boolean(menu->settings.pal60_enabled), + convert_boolean(menu->settings.hidden_files_enabled), + menu->settings.default_directory, + convert_boolean(menu->settings.use_saves_folder), + convert_boolean(menu->settings.autodetect_rom_region), + convert_boolean(menu->settings.bgm_enabled), + convert_boolean(menu->settings.sound_enabled), + convert_boolean(menu->settings.rumble_enabled) + ); + + + component_actions_bar_text_draw( + ALIGN_LEFT, VALIGN_TOP, + "\n" + "B: Back" + ); + + rdpq_detach_show(); +} + + +void view_settings_init (menu_t *menu) { + // Nothing to initialize (yet) +} + +void view_settings_display (menu_t *menu, surface_t *display) { + process(menu); + draw(menu, display); +} diff --git a/src/menu/views/views.h b/src/menu/views/views.h index 990474dd..58c610d3 100644 --- a/src/menu/views/views.h +++ b/src/menu/views/views.h @@ -44,6 +44,9 @@ void view_load_rom_display (menu_t *menu, surface_t *display); void view_load_disk_init (menu_t *menu); void view_load_disk_display (menu_t *menu, surface_t *display); +void view_settings_init (menu_t *menu); +void view_settings_display (menu_t *menu, surface_t *display); + void view_load_emulator_init (menu_t *menu); void view_load_emulator_display (menu_t *menu, surface_t *display);