diff options
Diffstat (limited to 'apps/settings_menu.c')
-rw-r--r-- | apps/settings_menu.c | 237 |
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 |
47 | void dac_line_in(bool enable); | 48 | void dac_line_in(bool enable); |
48 | #endif | 49 | #endif |
50 | #ifdef HAVE_ALARM_MOD | ||
51 | #include "alarm_menu.h" | ||
52 | #endif | ||
49 | 53 | ||
50 | static bool car_adapter_mode(void) | 54 | static 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 |
587 | static bool timedate_set(void) | 591 | static 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 |
772 | static bool font_browse(void) | 772 | static 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 | ||
779 | static bool scroll_bar(void) | 777 | static 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 | ||
788 | static 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 | |||
790 | static bool playback_settings_menu(void) | 805 | static 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 | 950 | static bool lcd_settings_menu(void) | |
936 | |||
937 | static 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 | ||
967 | static bool system_settings_menu(void) | 973 | #ifdef HAVE_LCD_BITMAP |
974 | static 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 | |
994 | static 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 | |||
1019 | static bool firmware_browse(void) | ||
1020 | { | ||
1021 | return rockbox_browse(ROCKBOX_DIR, SHOW_MOD); | ||
1022 | } | ||
1023 | |||
1024 | static 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 | |||
1045 | static 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 |
1064 | static 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 }, | 1081 | static 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 | ||
1004 | bool settings_menu(void) | 1099 | static 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 | |||
1116 | static 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 | |||
1143 | bool 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) ); |