summaryrefslogtreecommitdiff
path: root/apps/settings_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/settings_menu.c')
-rw-r--r--apps/settings_menu.c237
1 files changed, 185 insertions, 52 deletions
diff --git a/apps/settings_menu.c b/apps/settings_menu.c
index a96c88c681..79edce936d 100644
--- a/apps/settings_menu.c
+++ b/apps/settings_menu.c
@@ -34,6 +34,7 @@
34#include "backlight.h" 34#include "backlight.h"
35#include "playlist.h" /* for playlist_shuffle */ 35#include "playlist.h" /* for playlist_shuffle */
36#include "fat.h" /* For dotfile settings */ 36#include "fat.h" /* For dotfile settings */
37#include "sleeptimer.h"
37#include "powermgmt.h" 38#include "powermgmt.h"
38#include "rtc.h" 39#include "rtc.h"
39#include "ata.h" 40#include "ata.h"
@@ -46,6 +47,9 @@
46#ifdef HAVE_MAS3507D 47#ifdef HAVE_MAS3507D
47void dac_line_in(bool enable); 48void dac_line_in(bool enable);
48#endif 49#endif
50#ifdef HAVE_ALARM_MOD
51#include "alarm_menu.h"
52#endif
49 53
50static bool car_adapter_mode(void) 54static bool car_adapter_mode(void)
51{ 55{
@@ -583,13 +587,12 @@ static bool trickle_charge(void)
583} 587}
584#endif 588#endif
585 589
586#ifdef HAVE_LCD_BITMAP 590#ifdef HAVE_RTC
587static bool timedate_set(void) 591static bool timedate_set(void)
588{ 592{
589 int timedate[7]; /* hour,minute,second,year,month,day,dayofweek */ 593 int timedate[7]; /* hour,minute,second,year,month,day,dayofweek */
590 bool result; 594 bool result;
591 595
592#ifdef HAVE_RTC
593 timedate[0] = rtc_read(0x03); /* hour */ 596 timedate[0] = rtc_read(0x03); /* hour */
594 timedate[1] = rtc_read(0x02); /* minute */ 597 timedate[1] = rtc_read(0x02); /* minute */
595 timedate[2] = rtc_read(0x01); /* second */ 598 timedate[2] = rtc_read(0x01); /* second */
@@ -633,11 +636,9 @@ static bool timedate_set(void)
633 /* day */ 636 /* day */
634 timedate[5] = 1; 637 timedate[5] = 1;
635 } 638 }
636#endif
637 639
638 result = set_time(str(LANG_TIME),timedate); 640 result = set_time(str(LANG_TIME),timedate);
639 641
640#ifdef HAVE_RTC
641 if(timedate[0] != -1) { 642 if(timedate[0] != -1) {
642 /* hour */ 643 /* hour */
643 timedate[0] = ((timedate[0]/10) << 4 | timedate[0]%10) & 0x3f; 644 timedate[0] = ((timedate[0]/10) << 4 | timedate[0]%10) & 0x3f;
@@ -661,7 +662,6 @@ static bool timedate_set(void)
661 rtc_write(0x04, timedate[6] | (rtc_read(0x04) & 0xf8)); /* dayofweek */ 662 rtc_write(0x04, timedate[6] | (rtc_read(0x04) & 0xf8)); /* dayofweek */
662 rtc_write(0x00, 0x00); /* 0.1 + 0.01 seconds */ 663 rtc_write(0x00, 0x00); /* 0.1 + 0.01 seconds */
663 } 664 }
664#endif
665 return result; 665 return result;
666} 666}
667 667
@@ -768,14 +768,12 @@ static bool language_browse(void)
768 return rockbox_browse(ROCKBOX_DIR LANG_DIR, SHOW_LNG); 768 return rockbox_browse(ROCKBOX_DIR LANG_DIR, SHOW_LNG);
769} 769}
770 770
771#ifdef HAVE_RECORDER_KEYPAD 771#ifdef HAVE_LCD_BITMAP
772static bool font_browse(void) 772static bool font_browse(void)
773{ 773{
774 return rockbox_browse(ROCKBOX_DIR FONT_DIR, SHOW_FONT); 774 return rockbox_browse(ROCKBOX_DIR FONT_DIR, SHOW_FONT);
775} 775}
776#endif
777 776
778#ifdef HAVE_LCD_BITMAP
779static bool scroll_bar(void) 777static bool scroll_bar(void)
780{ 778{
781 return set_bool( str(LANG_SCROLL_BAR), &global_settings.scrollbar ); 779 return set_bool( str(LANG_SCROLL_BAR), &global_settings.scrollbar );
@@ -787,6 +785,23 @@ static bool status_bar(void)
787} 785}
788#endif 786#endif
789 787
788static bool ff_rewind_settings_menu(void)
789{
790 int m;
791 bool result;
792
793 struct menu_items items[] = {
794 { str(LANG_FFRW_STEP), ff_rewind_min_step },
795 { str(LANG_FFRW_ACCEL), ff_rewind_accel },
796 };
797
798 m=menu_init( items, sizeof(items) / sizeof(*items) );
799 result = menu_run(m);
800 menu_exit(m);
801
802 return result;
803}
804
790static bool playback_settings_menu(void) 805static bool playback_settings_menu(void)
791{ 806{
792 int m; 807 int m;
@@ -797,14 +812,13 @@ static bool playback_settings_menu(void)
797 { str(LANG_REPEAT), repeat_mode }, 812 { str(LANG_REPEAT), repeat_mode },
798 { str(LANG_PLAY_SELECTED), play_selected }, 813 { str(LANG_PLAY_SELECTED), play_selected },
799 { str(LANG_RESUME), resume }, 814 { str(LANG_RESUME), resume },
800 { str(LANG_FFRW_STEP), ff_rewind_min_step }, 815 { str(LANG_WIND_MENU), ff_rewind_settings_menu },
801 { str(LANG_FFRW_ACCEL), ff_rewind_accel },
802 { str(LANG_MP3BUFFER_MARGIN), buffer_margin }, 816 { str(LANG_MP3BUFFER_MARGIN), buffer_margin },
803 { str(LANG_FADE_ON_STOP), set_fade_on_stop }, 817 { str(LANG_FADE_ON_STOP), set_fade_on_stop },
804 }; 818 };
805 819
806 bool old_shuffle = global_settings.playlist_shuffle; 820 bool old_shuffle = global_settings.playlist_shuffle;
807 821
808 m=menu_init( items, sizeof(items) / sizeof(*items) ); 822 m=menu_init( items, sizeof(items) / sizeof(*items) );
809 result = menu_run(m); 823 result = menu_run(m);
810 menu_exit(m); 824 menu_exit(m);
@@ -868,7 +882,7 @@ static bool reset_settings(void)
868 done = true; 882 done = true;
869 break; 883 break;
870 884
871#ifdef HAVE_LCD_BITMAP 885#ifdef HAVE_RECORDER_KEYPAD
872 case BUTTON_OFF: 886 case BUTTON_OFF:
873#else 887#else
874 case BUTTON_STOP: 888 case BUTTON_STOP:
@@ -899,6 +913,7 @@ static bool fileview_settings_menu(void)
899 { str(LANG_CASE_MENU), sort_case }, 913 { str(LANG_CASE_MENU), sort_case },
900 { str(LANG_FILTER), dir_filter }, 914 { str(LANG_FILTER), dir_filter },
901 { str(LANG_FOLLOW), browse_current }, 915 { str(LANG_FOLLOW), browse_current },
916 { str(LANG_SHOW_ICONS), show_icons },
902 }; 917 };
903 918
904 m=menu_init( items, sizeof(items) / sizeof(*items) ); 919 m=menu_init( items, sizeof(items) / sizeof(*items) );
@@ -932,93 +947,211 @@ static bool scroll_settings_menu(void)
932 return result; 947 return result;
933} 948}
934 949
935 950static bool lcd_settings_menu(void)
936
937static bool display_settings_menu(void)
938{ 951{
939 int m; 952 int m;
940 bool result; 953 bool result;
941 954
942 struct menu_items items[] = { 955 struct menu_items items[] = {
943 { str(LANG_SCROLL_MENU), scroll_settings_menu },
944 { str(LANG_BACKLIGHT), backlight_timer }, 956 { str(LANG_BACKLIGHT), backlight_timer },
945 { str(LANG_BACKLIGHT_ON_WHEN_CHARGING), backlight_on_when_charging }, 957 { str(LANG_BACKLIGHT_ON_WHEN_CHARGING), backlight_on_when_charging },
946 { str(LANG_CONTRAST), contrast }, 958 { str(LANG_CAPTION_BACKLIGHT), caption_backlight },
959 { str(LANG_CONTRAST), contrast },
947#ifdef HAVE_LCD_BITMAP 960#ifdef HAVE_LCD_BITMAP
948 { str(LANG_SCROLL_BAR), scroll_bar },
949 { str(LANG_STATUS_BAR), status_bar },
950 { str(LANG_INVERT), invert }, 961 { str(LANG_INVERT), invert },
951 { str(LANG_INVERT_CURSOR), invert_cursor },
952 { str(LANG_FLIP_DISPLAY), flip_display }, 962 { str(LANG_FLIP_DISPLAY), flip_display },
953 { str(LANG_PM_MENU), peak_meter_menu }, 963 { str(LANG_INVERT_CURSOR), invert_cursor },
954 { str(LANG_VOLUME_DISPLAY), volume_type },
955 { str(LANG_BATTERY_DISPLAY), battery_type },
956#endif 964#endif
957 { str(LANG_SHOW_ICONS), show_icons },
958 { str(LANG_CAPTION_BACKLIGHT), caption_backlight },
959 }; 965 };
960 966
961 m=menu_init( items, sizeof(items) / sizeof(*items) ); 967 m=menu_init( items, sizeof(items) / sizeof(*items) );
962 result = menu_run(m); 968 result = menu_run(m);
963 menu_exit(m); 969 menu_exit(m);
964 return result; 970 return result;
965} 971}
966 972
967static bool system_settings_menu(void) 973#ifdef HAVE_LCD_BITMAP
974static bool bars_settings_menu(void)
968{ 975{
969 int m; 976 int m;
970 bool result; 977 bool result;
971 978
972 struct menu_items items[] = { 979 struct menu_items items[] = {
973 { str(LANG_SPINDOWN), spindown }, 980 { str(LANG_SCROLL_BAR), scroll_bar },
974#ifdef HAVE_MAS3507D 981 { str(LANG_STATUS_BAR), status_bar },
975 { str(LANG_LINE_IN), line_in }, 982 { str(LANG_VOLUME_DISPLAY), volume_type },
983 { str(LANG_BATTERY_DISPLAY), battery_type },
984 };
985
986 m=menu_init( items, sizeof(items) / sizeof(*items) );
987 result = menu_run(m);
988 menu_exit(m);
989 return result;
990}
976#endif 991#endif
977#ifdef HAVE_ATA_POWER_OFF 992
978 { str(LANG_POWEROFF), poweroff }, 993
994static bool display_settings_menu(void)
995{
996 int m;
997 bool result;
998
999 struct menu_items items[] = {
1000#ifdef HAVE_LCD_BITMAP
1001 { str(LANG_CUSTOM_FONT), font_browse },
979#endif 1002#endif
980 { str(LANG_MAX_FILES_IN_DIR), max_files_in_dir }, 1003 { str(LANG_WHILE_PLAYING), custom_wps_browse },
981 { str(LANG_MAX_FILES_IN_PLAYLIST), max_files_in_playlist }, 1004 { str(LANG_LCD_MENU), lcd_settings_menu },
982#ifndef SIMULATOR 1005 { str(LANG_SCROLL_MENU), scroll_settings_menu },
983 { str(LANG_BATTERY_CAPACITY), battery_capacity }, 1006#ifdef HAVE_LCD_BITMAP
1007 { str(LANG_BARS_MENU), bars_settings_menu },
1008 { str(LANG_PM_MENU), peak_meter_menu },
984#endif 1009#endif
1010 };
1011
1012 m=menu_init( items, sizeof(items) / sizeof(*items) );
1013 result = menu_run(m);
1014 menu_exit(m);
1015 return result;
1016}
1017
1018
1019static bool firmware_browse(void)
1020{
1021 return rockbox_browse(ROCKBOX_DIR, SHOW_MOD);
1022}
1023
1024static bool battery_settings_menu(void)
1025{
1026 int m;
1027 bool result;
1028
1029 struct menu_items items[] = {
985#ifdef HAVE_CHARGE_CTRL 1030#ifdef HAVE_CHARGE_CTRL
986 { str(LANG_DISCHARGE), deep_discharge }, 1031 { str(LANG_DISCHARGE), deep_discharge },
987 { str(LANG_TRICKLE_CHARGE), trickle_charge }, 1032 { str(LANG_TRICKLE_CHARGE), trickle_charge },
988#endif 1033#endif
1034#ifndef SIMULATOR
1035 { str(LANG_BATTERY_CAPACITY), battery_capacity },
1036#endif
1037 };
1038
1039 m=menu_init( items, sizeof(items) / sizeof(*items) );
1040 result = menu_run(m);
1041 menu_exit(m);
1042 return result;
1043}
1044
1045static bool disk_settings_menu(void)
1046{
1047 int m;
1048 bool result;
1049
1050 struct menu_items items[] = {
1051 { str(LANG_SPINDOWN), spindown },
1052#ifdef HAVE_ATA_POWER_OFF
1053 { str(LANG_POWEROFF), poweroff },
1054#endif
1055 };
1056
1057 m=menu_init( items, sizeof(items) / sizeof(*items) );
1058 result = menu_run(m);
1059 menu_exit(m);
1060 return result;
1061}
1062
989#ifdef HAVE_LCD_BITMAP 1063#ifdef HAVE_LCD_BITMAP
1064static bool time_settings_menu(void)
1065{
1066 int m;
1067 bool result;
1068
1069 struct menu_items items[] = {
990 { str(LANG_TIME), timedate_set }, 1070 { str(LANG_TIME), timedate_set },
991 { str(LANG_TIMEFORMAT), timeformat_set }, 1071 { str(LANG_TIMEFORMAT), timeformat_set },
1072 };
1073
1074 m=menu_init( items, sizeof(items) / sizeof(*items) );
1075 result = menu_run(m);
1076 menu_exit(m);
1077 return result;
1078}
992#endif 1079#endif
993 { str(LANG_POWEROFF_IDLE), poweroff_idle_timer }, 1080
994 { str(LANG_CAR_ADAPTER_MODE), car_adapter_mode }, 1081static bool manage_settings_menu(void)
995 { str(LANG_RESET), reset_settings }, 1082{
1083 int m;
1084 bool result;
1085
1086 struct menu_items items[] = {
1087 { str(LANG_CUSTOM_CFG), custom_cfg_browse },
1088 { str(LANG_FIRMWARE), firmware_browse },
1089 { str(LANG_RESET), reset_settings },
1090 { str(LANG_SAVE_SETTINGS), settings_save_config },
996 }; 1091 };
997 1092
998 m=menu_init( items, sizeof(items) / sizeof(*items) ); 1093 m=menu_init( items, sizeof(items) / sizeof(*items) );
999 result = menu_run(m); 1094 result = menu_run(m);
1000 menu_exit(m); 1095 menu_exit(m);
1001 return result; 1096 return result;
1002} 1097}
1003 1098
1004bool settings_menu(void) 1099static bool limits_settings_menu(void)
1005{ 1100{
1006 int m; 1101 int m;
1007 bool result; 1102 bool result;
1008 1103
1009 struct menu_items items[] = { 1104 struct menu_items items[] = {
1010 { str(LANG_PLAYBACK), playback_settings_menu }, 1105 { str(LANG_MAX_FILES_IN_DIR), max_files_in_dir },
1011 { str(LANG_CUSTOM_CFG), custom_cfg_browse }, 1106 { str(LANG_MAX_FILES_IN_PLAYLIST), max_files_in_playlist },
1012 { str(LANG_WHILE_PLAYING), custom_wps_browse }, 1107 };
1013 { str(LANG_LANGUAGE), language_browse }, 1108
1014 { str(LANG_FILE), fileview_settings_menu }, 1109 m=menu_init( items, sizeof(items) / sizeof(*items) );
1015 { str(LANG_DISPLAY), display_settings_menu }, 1110 result = menu_run(m);
1016#ifdef HAVE_RECORDER_KEYPAD 1111 menu_exit(m);
1017 { str(LANG_CUSTOM_FONT), font_browse }, 1112 return result;
1113}
1114
1115
1116static bool system_settings_menu(void)
1117{
1118 int m;
1119 bool result;
1120
1121 struct menu_items items[] = {
1122 { str(LANG_BATTERY_MENU), battery_settings_menu },
1123 { str(LANG_DISK_MENU), disk_settings_menu },
1124#ifdef HAVE_RTC
1125 { str(LANG_TIME_MENU), time_settings_menu },
1018#endif 1126#endif
1019 { str(LANG_SYSTEM), system_settings_menu }, 1127 { str(LANG_POWEROFF_IDLE), poweroff_idle_timer },
1020 { str(LANG_BOOKMARK_SETTINGS),bookmark_settings_menu }, 1128 { str(LANG_SLEEP_TIMER), sleeptimer_screen },
1021 { str(LANG_SAVE_SETTINGS), settings_save_config }, 1129 { str(LANG_LIMITS_MENU), limits_settings_menu },
1130#ifdef HAVE_MAS3507D
1131 { str(LANG_LINE_IN), line_in },
1132#endif
1133 { str(LANG_CAR_ADAPTER_MODE), car_adapter_mode },
1134 { str(LANG_MANAGE_MENU), manage_settings_menu },
1135 };
1136
1137 m=menu_init( items, sizeof(items) / sizeof(*items) );
1138 result = menu_run(m);
1139 menu_exit(m);
1140 return result;
1141}
1142
1143bool settings_menu(void)
1144{
1145 int m;
1146 bool result;
1147
1148 struct menu_items items[] = {
1149 { str(LANG_PLAYBACK), playback_settings_menu },
1150 { str(LANG_FILE), fileview_settings_menu },
1151 { str(LANG_DISPLAY), display_settings_menu },
1152 { str(LANG_SYSTEM), system_settings_menu },
1153 { str(LANG_BOOKMARK_SETTINGS),bookmark_settings_menu },
1154 { str(LANG_LANGUAGE), language_browse },
1022 }; 1155 };
1023 1156
1024 m=menu_init( items, sizeof(items) / sizeof(*items) ); 1157 m=menu_init( items, sizeof(items) / sizeof(*items) );