summaryrefslogtreecommitdiff
path: root/apps/menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/menu.c')
-rw-r--r--apps/menu.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/apps/menu.c b/apps/menu.c
index 98cce52a47..df786dde55 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -334,12 +334,12 @@ static char * get_menu_item_name(int selected_item,void * data, char *buffer)
334 334
335 menu = menu->submenus[selected_item]; 335 menu = menu->submenus[selected_item];
336 336
337 if (menu->flags&MENU_DYNAMIC_DESC) 337 if ((menu->flags&MENU_DYNAMIC_DESC) && (type != MT_SETTING_W_TEXT))
338 return menu->menu_get_name_and_icon->list_get_name(selected_item, 338 return menu->menu_get_name_and_icon->list_get_name(selected_item,
339 menu->menu_get_name_and_icon->list_get_name_data, buffer); 339 menu->menu_get_name_and_icon->list_get_name_data, buffer);
340 340
341 type = (menu->flags&MENU_TYPE_MASK); 341 type = (menu->flags&MENU_TYPE_MASK);
342 if (type == MT_SETTING) 342 if ((type == MT_SETTING) || (type == MT_SETTING_W_TEXT))
343 { 343 {
344 const struct settings_list *v 344 const struct settings_list *v
345 = find_setting(menu->variable, NULL); 345 = find_setting(menu->variable, NULL);
@@ -353,7 +353,7 @@ static char * get_menu_item_name(int selected_item,void * data, char *buffer)
353static void menu_get_icon(int selected_item, void * data, ICON * icon) 353static void menu_get_icon(int selected_item, void * data, ICON * icon)
354{ 354{
355 const struct menu_item_ex *menu = (const struct menu_item_ex *)data; 355 const struct menu_item_ex *menu = (const struct menu_item_ex *)data;
356 int menu_icon; 356 int menu_icon = Icon_NOICON;
357 selected_item = get_menu_selection(selected_item, menu); 357 selected_item = get_menu_selection(selected_item, menu);
358 358
359 menu = menu->submenus[selected_item]; 359 menu = menu->submenus[selected_item];
@@ -365,6 +365,7 @@ static void menu_get_icon(int selected_item, void * data, ICON * icon)
365 switch (menu->flags&MENU_TYPE_MASK) 365 switch (menu->flags&MENU_TYPE_MASK)
366 { 366 {
367 case MT_SETTING: 367 case MT_SETTING:
368 case MT_SETTING_W_TEXT:
368 *icon = bitmap_icons_6x8[Icon_Menu_setting]; 369 *icon = bitmap_icons_6x8[Icon_Menu_setting];
369 break; 370 break;
370 case MT_MENU: 371 case MT_MENU:
@@ -438,12 +439,14 @@ static void talk_menu_item(const struct menu_item_ex *menu,
438 struct gui_synclist *lists) 439 struct gui_synclist *lists)
439{ 440{
440 int id = -1; 441 int id = -1;
442 int type;
441 if (global_settings.talk_menu) 443 if (global_settings.talk_menu)
442 { 444 {
443 int sel = get_menu_selection(gui_synclist_get_sel_pos(lists),menu); 445 int sel = get_menu_selection(gui_synclist_get_sel_pos(lists),menu);
444 if ((menu->flags&MENU_TYPE_MASK) == MT_MENU) 446 if ((menu->flags&MENU_TYPE_MASK) == MT_MENU)
445 { 447 {
446 if ((menu->submenus[sel]->flags&MENU_TYPE_MASK) == MT_SETTING) 448 type = menu->submenus[sel]->flags&MENU_TYPE_MASK;
449 if ((type == MT_SETTING) || (type == MT_SETTING_W_TEXT))
447 talk_setting(menu->submenus[sel]->variable); 450 talk_setting(menu->submenus[sel]->variable);
448 else 451 else
449 { 452 {
@@ -463,8 +466,14 @@ bool do_setting_from_menu(const struct menu_item_ex *temp)
463 temp->variable, 466 temp->variable,
464 &setting_id); 467 &setting_id);
465 bool ret_val = false; 468 bool ret_val = false;
469 unsigned char *title;
466 if (setting) 470 if (setting)
467 { 471 {
472 if ((temp->flags&MENU_TYPE_MASK) == MT_SETTING_W_TEXT)
473 title = temp->callback_and_desc->desc;
474 else
475 title = ID2P(setting->lang_id);
476
468 if ((setting->flags&F_BOOL_SETTING) == F_BOOL_SETTING) 477 if ((setting->flags&F_BOOL_SETTING) == F_BOOL_SETTING)
469 { 478 {
470 bool temp_var, *var; 479 bool temp_var, *var;
@@ -478,7 +487,7 @@ bool do_setting_from_menu(const struct menu_item_ex *temp)
478 { 487 {
479 var = (bool*)setting->setting; 488 var = (bool*)setting->setting;
480 } 489 }
481 set_bool_options(str(setting->lang_id),var, 490 set_bool_options(P2STR(title), var,
482 STR(setting->bool_setting->lang_yes), 491 STR(setting->bool_setting->lang_yes),
483 STR(setting->bool_setting->lang_no), 492 STR(setting->bool_setting->lang_no),
484 setting->bool_setting->option_callback); 493 setting->bool_setting->option_callback);
@@ -489,7 +498,7 @@ bool do_setting_from_menu(const struct menu_item_ex *temp)
489 } 498 }
490 else if (setting->flags&F_T_SOUND) 499 else if (setting->flags&F_T_SOUND)
491 { 500 {
492 set_sound(str(setting->lang_id), setting->setting, 501 set_sound(P2STR(title), setting->setting,
493 setting->sound_setting->setting); 502 setting->sound_setting->setting);
494 } 503 }
495 else /* other setting, must be an INT type */ 504 else /* other setting, must be an INT type */
@@ -519,8 +528,7 @@ bool do_setting_from_menu(const struct menu_item_ex *temp)
519 min = setting->int_setting->min; 528 min = setting->int_setting->min;
520 step = setting->int_setting->step; 529 step = setting->int_setting->step;
521 } 530 }
522 set_int_ex(str(setting->lang_id), 531 set_int_ex(P2STR(title), NULL,
523 NULL,
524 setting->int_setting->unit,var, 532 setting->int_setting->unit,var,
525 setting->int_setting->option_callback, 533 setting->int_setting->option_callback,
526 step, min, max, 534 step, min, max,
@@ -561,7 +569,7 @@ bool do_setting_from_menu(const struct menu_item_ex *temp)
561 j++; 569 j++;
562 } 570 }
563 } 571 }
564 set_option(str(setting->lang_id), var, INT, 572 set_option(P2STR(title), var, INT,
565 options,j, 573 options,j,
566 setting-> 574 setting->
567 choice_setting->option_callback); 575 choice_setting->option_callback);
@@ -721,6 +729,7 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected)
721 temp->func_with_param->param); 729 temp->func_with_param->param);
722 break; 730 break;
723 case MT_SETTING: 731 case MT_SETTING:
732 case MT_SETTING_W_TEXT:
724 { 733 {
725 if (do_setting_from_menu(temp)) 734 if (do_setting_from_menu(temp))
726 init_menu_lists(menu, &lists, 0, true); 735 init_menu_lists(menu, &lists, 0, true);