diff --git a/apps/root_menu.c b/apps/root_menu.c index a989475740..918669b245 100644 --- a/apps/root_menu.c +++ b/apps/root_menu.c @@ -68,6 +68,7 @@ #endif #ifdef HAVE_TAGCACHE #include "tagcache.h" +#include "tagtree.h" #endif #include "language.h" #include "plugin.h" @@ -269,6 +270,12 @@ static int browser(void* param) } if (!tagcache_is_usable()) return GO_TO_PREVIOUS; + if (!tagtree_ready()) + { + splashf(HZ*3, "%s\n%s", str(LANG_FILE_NOT_FOUND), + ROCKBOX_DIR "/tagnavi.config"); + return GO_TO_PREVIOUS; + } filter = SHOW_ID3DB; last_ft_dirlevel = tc->dirlevel; tc->dirlevel = last_db_dirlevel; diff --git a/apps/tagtree.c b/apps/tagtree.c index 83aa2fe21e..89889dfd8d 100644 --- a/apps/tagtree.c +++ b/apps/tagtree.c @@ -1467,9 +1467,16 @@ static bool initialize_tagtree(void) /* also used when user selects 'Reload' in return true; } +static bool tagnavi_loaded; + void tagtree_init(void) { - initialize_tagtree(); + tagnavi_loaded = initialize_tagtree(); +} + +bool tagtree_ready(void) +{ + return tagnavi_loaded; } static int format_str(struct tagcache_search *tcs, struct display_format *fmt, @@ -2097,7 +2104,8 @@ int tagtree_load(struct tree_context* c) { splash(HZ, ID2P(LANG_WAIT)); tagtree_unload(c); - if (!initialize_tagtree()) + tagnavi_loaded = initialize_tagtree(); + if (!tagnavi_loaded) return 0; } c->dirlevel = 0; diff --git a/apps/tagtree.h b/apps/tagtree.h index 8b24dd162a..b96b4fdf82 100644 --- a/apps/tagtree.h +++ b/apps/tagtree.h @@ -33,6 +33,7 @@ int tagtree_export(void); int tagtree_import(void); void tagtree_init(void) INIT_ATTR; +bool tagtree_ready(void); int tagtree_enter(struct tree_context* c, bool is_visible); void tagtree_exit(struct tree_context* c, bool is_visible); int tagtree_load(struct tree_context* c);