diff options
Diffstat (limited to 'apps/main_menu.c')
-rw-r--r-- | apps/main_menu.c | 98 |
1 files changed, 63 insertions, 35 deletions
diff --git a/apps/main_menu.c b/apps/main_menu.c index 12bd2274cb..49ad9c9f5b 100644 --- a/apps/main_menu.c +++ b/apps/main_menu.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include "powermgmt.h" | 38 | #include "powermgmt.h" |
39 | #include "sound_menu.h" | 39 | #include "sound_menu.h" |
40 | #include "status.h" | 40 | #include "status.h" |
41 | #include "fat.h" | ||
41 | 42 | ||
42 | #include "lang.h" | 43 | #include "lang.h" |
43 | 44 | ||
@@ -158,60 +159,87 @@ bool show_info(void) | |||
158 | int integer, decimal; | 159 | int integer, decimal; |
159 | bool done = false; | 160 | bool done = false; |
160 | int key; | 161 | int key; |
161 | int state=0; | 162 | int state = 1; |
162 | 163 | ||
163 | while(!done) | 164 | while(!done) |
164 | { | 165 | { |
166 | int y=0; | ||
165 | lcd_clear_display(); | 167 | lcd_clear_display(); |
166 | lcd_puts(0, 0, str(LANG_ROCKBOX_INFO)); | 168 | #ifdef HAVE_LCD_BITMAP |
167 | 169 | lcd_puts(0, y++, str(LANG_ROCKBOX_INFO)); | |
168 | integer = buflen / 1000; | 170 | y++; |
169 | decimal = buflen % 1000; | 171 | state = 3; |
172 | #endif | ||
173 | |||
174 | if (state & 1) { | ||
175 | integer = buflen / 1000; | ||
176 | decimal = buflen % 1000; | ||
170 | #ifdef HAVE_LCD_CHARCELLS | 177 | #ifdef HAVE_LCD_CHARCELLS |
171 | snprintf(s, sizeof(s), str(LANG_BUFFER_STAT_PLAYER), integer, decimal); | 178 | snprintf(s, sizeof(s), str(LANG_BUFFER_STAT_PLAYER), |
172 | lcd_puts(0, 0, s); | 179 | integer, decimal); |
173 | #else | 180 | #else |
174 | snprintf(s, sizeof(s), str(LANG_BUFFER_STAT_RECORDER), integer, | 181 | snprintf(s, sizeof(s), str(LANG_BUFFER_STAT_RECORDER), |
175 | decimal); | 182 | integer, decimal); |
176 | lcd_puts(0, 2, s); | ||
177 | #endif | 183 | #endif |
178 | 184 | lcd_puts(0, y++, s); | |
185 | |||
179 | #ifdef HAVE_LCD_CHARCELLS | 186 | #ifdef HAVE_LCD_CHARCELLS |
180 | snprintf(s, sizeof(s), str(LANG_BATTERY_LEVEL_PLAYER), | 187 | snprintf(s, sizeof(s), str(LANG_BATTERY_LEVEL_PLAYER), |
181 | battery_level(), battery_level_safe() ? "" : "!"); | 188 | battery_level(), battery_level_safe() ? "" : "!"); |
182 | lcd_puts(0, 1, s); | ||
183 | #else | 189 | #else |
184 | #ifdef HAVE_CHARGE_CTRL | 190 | #ifdef HAVE_CHARGE_CTRL |
185 | if (charger_enabled) | 191 | if (charger_enabled) |
186 | snprintf(s, sizeof(s), str(LANG_BATTERY_CHARGE)); | 192 | snprintf(s, sizeof(s), str(LANG_BATTERY_CHARGE)); |
187 | else | 193 | else |
194 | snprintf(s, sizeof(s), str(LANG_BATTERY_LEVEL_RECORDER), | ||
195 | battery_level(), battery_level_safe() ? "" : " !!"); | ||
196 | #else | ||
188 | snprintf(s, sizeof(s), str(LANG_BATTERY_LEVEL_RECORDER), | 197 | snprintf(s, sizeof(s), str(LANG_BATTERY_LEVEL_RECORDER), |
189 | battery_level(), battery_level_safe() ? "" : " !!"); | 198 | battery_level(), battery_level_safe() ? "" : " !!"); |
190 | lcd_puts(0, 3, s); | ||
191 | #else | ||
192 | snprintf(s, sizeof(s), str(LANG_BATTERY_LEVEL_RECORDER), | ||
193 | battery_level(), battery_level_safe() ? "" : " !!"); | ||
194 | lcd_puts(0, 3, s); | ||
195 | #endif | 199 | #endif |
196 | #endif | 200 | #endif |
197 | 201 | lcd_puts(0, y++, s); | |
202 | } | ||
203 | |||
204 | if (state & 2) { | ||
205 | unsigned int size, free; | ||
206 | fat_size( &size, &free ); | ||
207 | |||
208 | size /= 1024; | ||
209 | integer = size / 1024; | ||
210 | decimal = size % 1024 / 100; | ||
211 | snprintf(s, sizeof s, str(LANG_DISK_STAT), integer, decimal); | ||
212 | lcd_puts(0, y++, s); | ||
213 | |||
214 | free /= 1024; | ||
215 | integer = free / 1024; | ||
216 | decimal = free % 1024 / 100; | ||
217 | snprintf(s, sizeof s, str(LANG_DISK_FREE_STAT), integer, decimal); | ||
218 | lcd_puts(0, y++, s); | ||
219 | } | ||
198 | lcd_update(); | 220 | lcd_update(); |
199 | 221 | ||
200 | /* Wait for a key to be pushed */ | 222 | /* Wait for a key to be pushed */ |
201 | key = button_get_w_tmo(HZ/2); | 223 | key = button_get_w_tmo(HZ*5); |
202 | if(key) { | 224 | switch(key) { |
203 | switch(state) { | 225 | #ifdef HAVE_PLAYER_KEYPAD |
204 | case 0: | 226 | case BUTTON_STOP | BUTTON_REL: |
205 | /* first, a non-release event */ | 227 | #else |
206 | if(!(key&BUTTON_REL)) | 228 | case BUTTON_LEFT | BUTTON_REL: |
207 | state++; | 229 | case BUTTON_OFF | BUTTON_REL: |
230 | #endif | ||
231 | done = true; | ||
208 | break; | 232 | break; |
209 | case 1: | 233 | |
210 | /* then a release-event */ | 234 | #ifdef HAVE_PLAYER_KEYPAD |
211 | if(key&BUTTON_REL) | 235 | case BUTTON_LEFT: |
212 | done = true; | 236 | case BUTTON_RIGHT: |
237 | if (state == 1) | ||
238 | state = 2; | ||
239 | else | ||
240 | state = 1; | ||
213 | break; | 241 | break; |
214 | } | 242 | #endif |
215 | } | 243 | } |
216 | } | 244 | } |
217 | 245 | ||