diff options
Diffstat (limited to 'apps/menu.c')
-rw-r--r-- | apps/menu.c | 27 |
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) | |||
353 | static void menu_get_icon(int selected_item, void * data, ICON * icon) | 353 | static 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); |