diff options
| author | neonloop | 2021-08-04 21:39:47 +0000 | 
|---|---|---|
| committer | neonloop | 2021-08-04 21:39:47 +0000 | 
| commit | 2316cdca56925fab2f3faf6acb451fdaafb9f362 (patch) | |
| tree | f223b8f6c0f998eadddf6faab868f7a6dff0f40f /menu.c | |
| parent | 9fc540857834d4edaa9afbf2937f2f3c9f2e3202 (diff) | |
| download | picoarch-2316cdca56925fab2f3faf6acb451fdaafb9f362.tar.gz picoarch-2316cdca56925fab2f3faf6acb451fdaafb9f362.tar.bz2 picoarch-2316cdca56925fab2f3faf6acb451fdaafb9f362.zip | |
Adds pagination for core options
Diffstat (limited to 'menu.c')
| -rw-r--r-- | menu.c | 32 | 
1 files changed, 26 insertions, 6 deletions
| @@ -9,6 +9,8 @@  #define MENU_ALIGN_LEFT 0  #define MENU_X2 0 +#define CORE_OPTIONS_PER_PAGE 11 +  typedef enum  {  	MA_NONE = 1, @@ -155,23 +157,24 @@ static int mh_savecfg(int id, int keys)  	return 1;  } -static int menu_loop_core_options(int id, int keys) -{ +static int menu_loop_core_options_page(int offset, int keys) {  	static int sel = 0;  	menu_entry *e_menu_core_options; +	int i, menu_idx; -	e_menu_core_options = (menu_entry *)calloc(core_options.visible_len + 1, sizeof(menu_entry)); +	/* core_option + 2 for possible "Next page" +  NULL */ +	e_menu_core_options = (menu_entry *)calloc(core_options.visible_len + 2, sizeof(menu_entry));  	if (!e_menu_core_options) {  		PA_ERROR("Error allocating core options\n");  		return 0;  	} -	for(int i = 0, menu_idx = 0; i < core_options.len; i++) { -		const char *key; +	for (i = offset, menu_idx = 0; i < core_options.len && menu_idx < CORE_OPTIONS_PER_PAGE; i++) {  		struct core_option_entry *entry;  		menu_entry *option; -		key = core_options.defs ? core_options.defs[i].key : core_options.vars[i].key; +		const char *key = options_get_key(i); +  		if (options_is_blocked(key))  			continue; @@ -189,14 +192,31 @@ static int menu_loop_core_options(int id, int keys)  		menu_idx++;  	} +	if (i < core_options.len) { +		menu_entry *option; +		option = &e_menu_core_options[menu_idx]; +		option->name = "Next page"; +		option->beh = MB_OPT_CUSTOM; +		option->id = i; +		option->enabled = 1; +		option->selectable = 1; +		option->handler = menu_loop_core_options_page; +	} +  	me_loop(e_menu_core_options, &sel);  	options_update_changed();  	free(e_menu_core_options); +  	return 0;  } +static int menu_loop_core_options(int id, int keys) +{ +	return menu_loop_core_options_page(0, keys); +} +  static const char h_restore_def[]     = "Switches back to default / recommended\n"  	"configuration"; | 
