mirror of
https://github.com/libretro/RetroArch
synced 2025-01-30 03:32:46 +00:00
ed7b3aa415
This also allows WiFi passwords to be remembered. The underlying tool (connman) allows to store passswords (that's why it auto connects whenever you boot a Lakka device), so we expose this so that the user does not have to re-input the pass when connecting to a saved wifi. Option to forget a password to come in a future PR, for now a password is automatically forgotten if the Wifi connect operation fails (we assume it fails due to password). Changes the WiFi API to enable these features of course!
350 lines
11 KiB
C
350 lines
11 KiB
C
/* RetroArch - A frontend for libretro.
|
|
* Copyright (C) 2011-2017 - Daniel De Matteis
|
|
*
|
|
* RetroArch is free software: you can redistribute it and/or modify it under the terms
|
|
* of the GNU General Public License as published by the Free Software Found-
|
|
* ation, either version 3 of the License, or (at your option) any later version.
|
|
*
|
|
* RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
* PURPOSE. See the GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along with RetroArch.
|
|
* If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef _MENU_DISPLAYLIST_H
|
|
#define _MENU_DISPLAYLIST_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#include <boolean.h>
|
|
#include <retro_miscellaneous.h>
|
|
#include <retro_common_api.h>
|
|
#include <lists/file_list.h>
|
|
|
|
#include "../msg_hash.h"
|
|
#include "../setting_list.h"
|
|
|
|
RETRO_BEGIN_DECLS
|
|
|
|
/* NOTE: Order matters - only add new entries at
|
|
* the bottom */
|
|
enum menu_displaylist_parse_type
|
|
{
|
|
PARSE_NONE = 0,
|
|
PARSE_GROUP,
|
|
PARSE_ACTION,
|
|
PARSE_ONLY_INT,
|
|
PARSE_ONLY_UINT,
|
|
PARSE_ONLY_BOOL,
|
|
PARSE_ONLY_FLOAT,
|
|
PARSE_ONLY_BIND,
|
|
PARSE_ONLY_GROUP,
|
|
PARSE_ONLY_STRING,
|
|
PARSE_ONLY_PATH,
|
|
PARSE_ONLY_STRING_OPTIONS,
|
|
PARSE_ONLY_HEX,
|
|
PARSE_ONLY_DIR,
|
|
PARSE_SUB_GROUP,
|
|
PARSE_ONLY_SIZE
|
|
};
|
|
|
|
enum menu_displaylist_ctl_state
|
|
{
|
|
DISPLAYLIST_NONE = 0,
|
|
DISPLAYLIST_DROPDOWN_LIST,
|
|
DISPLAYLIST_DROPDOWN_LIST_SPECIAL,
|
|
DISPLAYLIST_DROPDOWN_LIST_RESOLUTION,
|
|
DISPLAYLIST_DROPDOWN_LIST_VIDEO_SHADER_PARAMETER,
|
|
DISPLAYLIST_DROPDOWN_LIST_VIDEO_SHADER_PRESET_PARAMETER,
|
|
DISPLAYLIST_DROPDOWN_LIST_VIDEO_SHADER_NUM_PASSES,
|
|
DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_DEFAULT_CORE,
|
|
DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LABEL_DISPLAY_MODE,
|
|
DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_RIGHT_THUMBNAIL_MODE,
|
|
DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_LEFT_THUMBNAIL_MODE,
|
|
DISPLAYLIST_DROPDOWN_LIST_PLAYLIST_SORT_MODE,
|
|
DISPLAYLIST_DROPDOWN_LIST_MANUAL_CONTENT_SCAN_SYSTEM_NAME,
|
|
DISPLAYLIST_DROPDOWN_LIST_MANUAL_CONTENT_SCAN_CORE_NAME,
|
|
DISPLAYLIST_DROPDOWN_LIST_DISK_INDEX,
|
|
DISPLAYLIST_DROPDOWN_LIST_INPUT_DESCRIPTION,
|
|
DISPLAYLIST_DROPDOWN_LIST_INPUT_DESCRIPTION_KBD,
|
|
DISPLAYLIST_CDROM_DETAIL_INFO,
|
|
DISPLAYLIST_INFO,
|
|
DISPLAYLIST_HELP,
|
|
DISPLAYLIST_HELP_SCREEN_LIST,
|
|
DISPLAYLIST_MAIN_MENU,
|
|
DISPLAYLIST_GENERIC,
|
|
DISPLAYLIST_SETTINGS_ALL,
|
|
DISPLAYLIST_HORIZONTAL,
|
|
DISPLAYLIST_HORIZONTAL_CONTENT_ACTIONS,
|
|
DISPLAYLIST_HISTORY,
|
|
DISPLAYLIST_EXPLORE,
|
|
DISPLAYLIST_FAVORITES,
|
|
DISPLAYLIST_PLAYLIST,
|
|
DISPLAYLIST_VIDEO_HISTORY,
|
|
DISPLAYLIST_MUSIC_HISTORY,
|
|
DISPLAYLIST_IMAGES_HISTORY,
|
|
DISPLAYLIST_MUSIC_LIST,
|
|
DISPLAYLIST_PLAYLIST_COLLECTION,
|
|
DISPLAYLIST_DEFAULT,
|
|
DISPLAYLIST_FILE_BROWSER_SELECT_DIR,
|
|
DISPLAYLIST_FILE_BROWSER_SCAN_DIR,
|
|
DISPLAYLIST_FILE_BROWSER_SELECT_FILE,
|
|
DISPLAYLIST_FILE_BROWSER_SELECT_CORE,
|
|
DISPLAYLIST_FILE_BROWSER_SELECT_SIDELOAD_CORE,
|
|
DISPLAYLIST_FILE_BROWSER_SELECT_COLLECTION,
|
|
DISPLAYLIST_CORES,
|
|
DISPLAYLIST_CORES_SUPPORTED,
|
|
DISPLAYLIST_CORES_COLLECTION_SUPPORTED,
|
|
DISPLAYLIST_CORES_UPDATER,
|
|
DISPLAYLIST_CORE_MANAGER_LIST,
|
|
DISPLAYLIST_THUMBNAILS_UPDATER,
|
|
DISPLAYLIST_PL_THUMBNAILS_UPDATER,
|
|
DISPLAYLIST_LAKKA,
|
|
DISPLAYLIST_CORES_DETECTED,
|
|
DISPLAYLIST_CORE_OPTIONS,
|
|
DISPLAYLIST_CORE_INFO,
|
|
DISPLAYLIST_DISC_INFO,
|
|
DISPLAYLIST_PERFCOUNTERS_CORE,
|
|
DISPLAYLIST_PERFCOUNTERS_FRONTEND,
|
|
DISPLAYLIST_SHADER_PASS,
|
|
DISPLAYLIST_SHADER_PRESET,
|
|
DISPLAYLIST_DATABASES,
|
|
DISPLAYLIST_DATABASE_CURSORS,
|
|
DISPLAYLIST_DATABASE_PLAYLISTS,
|
|
DISPLAYLIST_DATABASE_PLAYLISTS_HORIZONTAL,
|
|
DISPLAYLIST_DATABASE_QUERY,
|
|
DISPLAYLIST_DATABASE_ENTRY,
|
|
DISPLAYLIST_AUDIO_FILTERS,
|
|
DISPLAYLIST_VIDEO_FILTERS,
|
|
DISPLAYLIST_CHEAT_FILES,
|
|
DISPLAYLIST_REMAP_FILES,
|
|
DISPLAYLIST_RECORD_CONFIG_FILES,
|
|
DISPLAYLIST_STREAM_CONFIG_FILES,
|
|
DISPLAYLIST_RGUI_THEME_PRESETS,
|
|
DISPLAYLIST_CONFIG_FILES,
|
|
DISPLAYLIST_CONTENT_HISTORY,
|
|
DISPLAYLIST_IMAGES,
|
|
DISPLAYLIST_FONTS,
|
|
DISPLAYLIST_LOAD_DISC,
|
|
DISPLAYLIST_DUMP_DISC,
|
|
DISPLAYLIST_OVERLAYS,
|
|
#ifdef HAVE_VIDEO_LAYOUT
|
|
DISPLAYLIST_VIDEO_LAYOUT_PATH,
|
|
#endif
|
|
DISPLAYLIST_SHADER_PARAMETERS,
|
|
DISPLAYLIST_SHADER_PARAMETERS_PRESET,
|
|
DISPLAYLIST_SHADER_PRESET_SAVE,
|
|
DISPLAYLIST_SHADER_PRESET_REMOVE,
|
|
DISPLAYLIST_NETWORK_INFO,
|
|
DISPLAYLIST_SYSTEM_INFO,
|
|
DISPLAYLIST_ACHIEVEMENT_LIST,
|
|
DISPLAYLIST_USER_BINDS_LIST,
|
|
DISPLAYLIST_ACCOUNTS_LIST,
|
|
DISPLAYLIST_SUBSYSTEM_SETTINGS_LIST,
|
|
DISPLAYLIST_MIXER_STREAM_SETTINGS_LIST,
|
|
DISPLAYLIST_DRIVER_SETTINGS_LIST,
|
|
DISPLAYLIST_VIDEO_FULLSCREEN_MODE_SETTINGS_LIST,
|
|
DISPLAYLIST_VIDEO_WINDOWED_MODE_SETTINGS_LIST,
|
|
DISPLAYLIST_VIDEO_SYNCHRONIZATION_SETTINGS_LIST,
|
|
DISPLAYLIST_VIDEO_OUTPUT_SETTINGS_LIST,
|
|
DISPLAYLIST_VIDEO_SCALING_SETTINGS_LIST,
|
|
DISPLAYLIST_CRT_SWITCHRES_SETTINGS_LIST,
|
|
DISPLAYLIST_VIDEO_SETTINGS_LIST,
|
|
DISPLAYLIST_CONFIGURATION_SETTINGS_LIST,
|
|
DISPLAYLIST_SAVING_SETTINGS_LIST,
|
|
DISPLAYLIST_LOGGING_SETTINGS_LIST,
|
|
DISPLAYLIST_FRAME_THROTTLE_SETTINGS_LIST,
|
|
DISPLAYLIST_FRAME_TIME_COUNTER_SETTINGS_LIST,
|
|
DISPLAYLIST_REWIND_SETTINGS_LIST,
|
|
DISPLAYLIST_CHEAT_DETAILS_SETTINGS_LIST,
|
|
DISPLAYLIST_CHEAT_SEARCH_SETTINGS_LIST,
|
|
DISPLAYLIST_AUDIO_SETTINGS_LIST,
|
|
DISPLAYLIST_AUDIO_RESAMPLER_SETTINGS_LIST,
|
|
DISPLAYLIST_AUDIO_OUTPUT_SETTINGS_LIST,
|
|
DISPLAYLIST_AUDIO_SYNCHRONIZATION_SETTINGS_LIST,
|
|
DISPLAYLIST_AUDIO_MIXER_SETTINGS_LIST,
|
|
DISPLAYLIST_CORE_SETTINGS_LIST,
|
|
DISPLAYLIST_INPUT_SETTINGS_LIST,
|
|
DISPLAYLIST_INPUT_HAPTIC_FEEDBACK_SETTINGS_LIST,
|
|
DISPLAYLIST_INPUT_MENU_SETTINGS_LIST,
|
|
DISPLAYLIST_LATENCY_SETTINGS_LIST,
|
|
DISPLAYLIST_INPUT_HOTKEY_BINDS_LIST,
|
|
DISPLAYLIST_ONSCREEN_OVERLAY_SETTINGS_LIST,
|
|
DISPLAYLIST_AI_SERVICE_SETTINGS_LIST,
|
|
DISPLAYLIST_ACCESSIBILITY_SETTINGS_LIST,
|
|
#ifdef HAVE_VIDEO_LAYOUT
|
|
DISPLAYLIST_ONSCREEN_VIDEO_LAYOUT_SETTINGS_LIST,
|
|
#endif
|
|
DISPLAYLIST_ONSCREEN_DISPLAY_SETTINGS_LIST,
|
|
DISPLAYLIST_ONSCREEN_NOTIFICATIONS_SETTINGS_LIST,
|
|
DISPLAYLIST_ONSCREEN_NOTIFICATIONS_VIEWS_SETTINGS_LIST,
|
|
DISPLAYLIST_MENU_FILE_BROWSER_SETTINGS_LIST,
|
|
DISPLAYLIST_MENU_VIEWS_SETTINGS_LIST,
|
|
DISPLAYLIST_QUICK_MENU_VIEWS_SETTINGS_LIST,
|
|
DISPLAYLIST_SETTINGS_VIEWS_SETTINGS_LIST,
|
|
DISPLAYLIST_MENU_SETTINGS_LIST,
|
|
DISPLAYLIST_USER_INTERFACE_SETTINGS_LIST,
|
|
DISPLAYLIST_POWER_MANAGEMENT_SETTINGS_LIST,
|
|
DISPLAYLIST_MENU_SOUNDS_LIST,
|
|
DISPLAYLIST_RETRO_ACHIEVEMENTS_SETTINGS_LIST,
|
|
DISPLAYLIST_UPDATER_SETTINGS_LIST,
|
|
DISPLAYLIST_BLUETOOTH_SETTINGS_LIST,
|
|
DISPLAYLIST_WIFI_SETTINGS_LIST,
|
|
DISPLAYLIST_NETWORK_SETTINGS_LIST,
|
|
DISPLAYLIST_NETWORK_HOSTING_SETTINGS_LIST,
|
|
DISPLAYLIST_NETPLAY_LAN_SCAN_SETTINGS_LIST,
|
|
DISPLAYLIST_LAKKA_SERVICES_LIST,
|
|
DISPLAYLIST_USER_SETTINGS_LIST,
|
|
DISPLAYLIST_DIRECTORY_SETTINGS_LIST,
|
|
DISPLAYLIST_PRIVACY_SETTINGS_LIST,
|
|
DISPLAYLIST_MIDI_SETTINGS_LIST,
|
|
DISPLAYLIST_RECORDING_SETTINGS_LIST,
|
|
DISPLAYLIST_PLAYLIST_SETTINGS_LIST,
|
|
DISPLAYLIST_PLAYLIST_MANAGER_LIST,
|
|
DISPLAYLIST_PLAYLIST_MANAGER_SETTINGS,
|
|
DISPLAYLIST_ACCOUNTS_CHEEVOS_LIST,
|
|
DISPLAYLIST_ACCOUNTS_YOUTUBE_LIST,
|
|
DISPLAYLIST_ACCOUNTS_TWITCH_LIST,
|
|
DISPLAYLIST_BROWSE_URL_LIST,
|
|
DISPLAYLIST_BROWSE_URL_START,
|
|
DISPLAYLIST_LOAD_CONTENT_LIST,
|
|
DISPLAYLIST_LOAD_CONTENT_SPECIAL,
|
|
DISPLAYLIST_INFORMATION_LIST,
|
|
DISPLAYLIST_INFORMATION,
|
|
DISPLAYLIST_CONTENT_SETTINGS,
|
|
DISPLAYLIST_OPTIONS,
|
|
DISPLAYLIST_OPTIONS_CHEATS,
|
|
DISPLAYLIST_OPTIONS_REMAPPINGS,
|
|
DISPLAYLIST_OPTIONS_REMAPPINGS_PORT,
|
|
DISPLAYLIST_OPTIONS_MANAGEMENT,
|
|
DISPLAYLIST_OPTIONS_DISK,
|
|
DISPLAYLIST_OPTIONS_SHADERS,
|
|
DISPLAYLIST_OPTIONS_OVERRIDES,
|
|
DISPLAYLIST_NETPLAY,
|
|
DISPLAYLIST_ADD_CONTENT_LIST,
|
|
DISPLAYLIST_CONFIGURATIONS_LIST,
|
|
DISPLAYLIST_SCAN_DIRECTORY_LIST,
|
|
DISPLAYLIST_NETPLAY_ROOM_LIST,
|
|
DISPLAYLIST_ARCHIVE_ACTION,
|
|
DISPLAYLIST_ARCHIVE_ACTION_DETECT_CORE,
|
|
DISPLAYLIST_CORE_CONTENT,
|
|
DISPLAYLIST_CORE_CONTENT_DIRS,
|
|
DISPLAYLIST_CORE_CONTENT_DIRS_SUBDIR,
|
|
#ifdef HAVE_LAKKA_SWITCH
|
|
DISPLAYLIST_SWITCH_GPU_PROFILE,
|
|
#endif
|
|
#if defined(HAVE_LAKKA_SWITCH) || defined(HAVE_LIBNX)
|
|
DISPLAYLIST_SWITCH_CPU_PROFILE,
|
|
#endif
|
|
DISPLAYLIST_MANUAL_CONTENT_SCAN_LIST,
|
|
DISPLAYLIST_MANUAL_CONTENT_SCAN_DAT_FILES,
|
|
DISPLAYLIST_CORE_RESTORE_BACKUP_LIST,
|
|
DISPLAYLIST_CORE_DELETE_BACKUP_LIST,
|
|
DISPLAYLIST_PENDING_CLEAR,
|
|
DISPLAYLIST_WIFI_NETWORKS_LIST,
|
|
};
|
|
|
|
enum filebrowser_enums
|
|
{
|
|
FILEBROWSER_NONE = 0,
|
|
FILEBROWSER_SELECT_DIR,
|
|
FILEBROWSER_SCAN_DIR,
|
|
FILEBROWSER_SCAN_FILE,
|
|
FILEBROWSER_MANUAL_SCAN_DIR,
|
|
FILEBROWSER_SELECT_FILE,
|
|
FILEBROWSER_SELECT_FILE_SUBSYSTEM,
|
|
FILEBROWSER_SELECT_IMAGE,
|
|
FILEBROWSER_SELECT_FONT,
|
|
FILEBROWSER_SELECT_COLLECTION
|
|
};
|
|
|
|
typedef struct menu_displaylist_info
|
|
{
|
|
char *path;
|
|
char *path_b;
|
|
char *path_c;
|
|
char *exts;
|
|
char *label;
|
|
file_list_t *list;
|
|
file_list_t *menu_list;
|
|
rarch_setting_t *setting;
|
|
|
|
size_t directory_ptr;
|
|
|
|
unsigned count;
|
|
|
|
unsigned type;
|
|
unsigned type_default;
|
|
unsigned flags;
|
|
|
|
enum msg_hash_enums enum_idx;
|
|
/* should the displaylist be sorted by alphabet? */
|
|
bool need_sort;
|
|
bool need_refresh;
|
|
bool need_entries_refresh;
|
|
bool need_push;
|
|
bool need_push_no_playlist_entries;
|
|
/* should we clear the displaylist before we push
|
|
* entries onto it? */
|
|
bool need_clear;
|
|
bool push_builtin_cores;
|
|
/* Should a 'download core' entry be pushed onto the list?
|
|
* This will be set to true in case there are no currently
|
|
* installed cores. */
|
|
bool download_core;
|
|
/* does the navigation index need to be cleared to 0 (first entry) ? */
|
|
bool need_navigation_clear;
|
|
} menu_displaylist_info_t;
|
|
|
|
typedef struct menu_displaylist_ctx_parse_entry
|
|
{
|
|
const char *info_label;
|
|
void *data;
|
|
menu_displaylist_info_t *info;
|
|
enum msg_hash_enums enum_idx;
|
|
enum menu_displaylist_parse_type parse_type;
|
|
bool add_empty_entry;
|
|
} menu_displaylist_ctx_parse_entry_t;
|
|
|
|
typedef struct menu_displaylist_ctx_entry
|
|
{
|
|
file_list_t *stack;
|
|
file_list_t *list;
|
|
} menu_displaylist_ctx_entry_t;
|
|
|
|
bool menu_displaylist_process(menu_displaylist_info_t *info);
|
|
|
|
bool menu_displaylist_push(menu_displaylist_ctx_entry_t *entry);
|
|
|
|
void menu_displaylist_info_free(menu_displaylist_info_t *info);
|
|
|
|
unsigned menu_displaylist_build_list(file_list_t *list, enum menu_displaylist_ctl_state type, bool include_everything);
|
|
|
|
void menu_displaylist_info_init(menu_displaylist_info_t *info);
|
|
|
|
bool menu_displaylist_ctl(enum menu_displaylist_ctl_state type, menu_displaylist_info_t *info);
|
|
|
|
bool menu_displaylist_setting(menu_displaylist_ctx_parse_entry_t *entry);
|
|
|
|
#ifdef HAVE_NETWORKING
|
|
unsigned menu_displaylist_netplay_refresh_rooms(file_list_t *list);
|
|
#endif
|
|
|
|
bool menu_displaylist_has_subsystems(void);
|
|
|
|
#if defined(HAVE_LIBRETRODB)
|
|
unsigned menu_displaylist_explore(file_list_t *list);
|
|
#endif
|
|
|
|
enum filebrowser_enums filebrowser_get_type(void);
|
|
|
|
void filebrowser_clear_type(void);
|
|
|
|
void filebrowser_set_type(enum filebrowser_enums type);
|
|
|
|
RETRO_END_DECLS
|
|
|
|
#endif
|