summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/lang/english.lang13
-rw-r--r--apps/tree.c35
2 files changed, 48 insertions, 0 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 1d7b3088a6..9ca18b88ef 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -1599,3 +1599,16 @@ desc: The plugin return an error code
1599eng: "Plugin returned error" 1599eng: "Plugin returned error"
1600new: 1600new:
1601 1601
1602##
1603## boot change detection
1604##
1605
1606id: LANG_BOOT_CHANGED
1607desc: File browser discovered the boot file was changed
1608eng: "Boot changed"
1609new:
1610
1611id: LANG_REBOOT_NOW
1612desc: Do you want to reboot?
1613eng: "Reboot now?"
1614new:
diff --git a/apps/tree.c b/apps/tree.c
index e61fdc50cb..f7a83de85f 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -55,6 +55,9 @@
55 55
56#ifdef HAVE_LCD_BITMAP 56#ifdef HAVE_LCD_BITMAP
57#include "widgets.h" 57#include "widgets.h"
58#define BOOTFILE "ajbrec.ajz"
59#else
60#define BOOTFILE "archos.mod"
58#endif 61#endif
59 62
60/* Boot value of global_settings.max_files_in_dir */ 63/* Boot value of global_settings.max_files_in_dir */
@@ -80,6 +83,9 @@ static char lastdir[MAX_PATH];
80static char lastfile[MAX_PATH]; 83static char lastfile[MAX_PATH];
81static char currdir[MAX_PATH]; 84static char currdir[MAX_PATH];
82static bool reload_dir = false; 85static bool reload_dir = false;
86static int boot_size = 0;
87static int boot_cluster;
88static bool boot_changed = false;
83 89
84void browse_root(void) 90void browse_root(void)
85{ 91{
@@ -322,6 +328,17 @@ static int showdir(char *path, int start)
322 dptr->attr |= TREE_ATTR_ROCK; 328 dptr->attr |= TREE_ATTR_ROCK;
323 } 329 }
324 330
331 /* memorize/compare details about the boot file */
332 if ((currdir[1] == 0) && !strcmp(entry->d_name, BOOTFILE)) {
333 if (boot_size) {
334 if ((entry->size != boot_size) ||
335 (entry->startcluster != boot_cluster))
336 boot_changed = true;
337 }
338 boot_size = entry->size;
339 boot_cluster = entry->startcluster;
340 }
341
325 /* filter out all non-playlist files */ 342 /* filter out all non-playlist files */
326 if ( global_settings.dirfilter == SHOW_PLAYLIST && 343 if ( global_settings.dirfilter == SHOW_PLAYLIST &&
327 (!(dptr->attr & 344 (!(dptr->attr &
@@ -822,6 +839,24 @@ bool dirbrowse(char *root)
822 bool restore = false; 839 bool restore = false;
823 840
824 button = button_get_w_tmo(HZ/5); 841 button = button_get_w_tmo(HZ/5);
842
843#ifndef SIMULATOR
844 if (boot_changed) {
845 lcd_clear_display();
846 lcd_puts(0,0,str(LANG_BOOT_CHANGED));
847 lcd_puts(0,1,str(LANG_REBOOT_NOW));
848#ifdef HAVE_LCD_BITMAP
849 lcd_puts(0,3,str(LANG_CONFIRM_WITH_PLAY_RECORDER));
850 lcd_puts(0,4,str(LANG_CANCEL_WITH_ANY_RECORDER));
851 lcd_update();
852#endif
853 if (button_get(true) == BUTTON_PLAY)
854 rolo_load("/" BOOTFILE);
855 restore = true;
856 boot_changed = false;
857 }
858#endif
859
825 switch ( button ) { 860 switch ( button ) {
826 case TREE_EXIT: 861 case TREE_EXIT:
827 case BUTTON_RC_STOP: 862 case BUTTON_RC_STOP: