diff --git a/apps/lang/english.lang b/apps/lang/english.lang
old mode 100644
new mode 100755
index 2543060..ba6641e
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -2546,6 +2546,20 @@
+ id: LANG_TAGCACHE_GENTRACKNUM
+ desc: in settings_menu.
+ user: core
+
+ *: "Generate Tracknumber"
+
+
+ *: "Generate Tracknumber"
+
+
+ *: "Generate Tracknumber"
+
+
+
id: LANG_TAGCACHE_EXPORT
desc: in tag cache settings
user: core
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c
old mode 100644
new mode 100755
index fdc7758..bd5a7ea
--- a/apps/menus/settings_menu.c
+++ b/apps/menus/settings_menu.c
@@ -75,6 +75,7 @@ MENUITEM_FUNCTION(tc_update, 0, ID2P(LANG_TAGCACHE_UPDATE),
(int(*)(void))tagcache_update_with_splash,
NULL, NULL, Icon_NOICON);
MENUITEM_SETTING(runtimedb, &global_settings.runtimedb, NULL);
+MENUITEM_SETTING(gentracknum, &global_settings.gentracknum, NULL);
MENUITEM_FUNCTION(tc_export, 0, ID2P(LANG_TAGCACHE_EXPORT),
(int(*)(void))tagtree_export, NULL,
NULL, Icon_NOICON);
@@ -86,7 +87,7 @@ MAKE_MENU(tagcache_menu, ID2P(LANG_TAGCACHE), 0, Icon_NOICON,
&tagcache_ram,
#endif
&tagcache_autoupdate, &tc_init, &tc_update, &runtimedb,
- &tc_export, &tc_import);
+ &gentracknum, &tc_export, &tc_import);
#endif /* HAVE_TAGCACHE */
/* TAGCACHE MENU */
/***********************************/
diff --git a/apps/settings.h b/apps/settings.h
old mode 100644
new mode 100755
index 3d05e29..ff894dc
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -571,6 +571,7 @@ struct user_settings
#endif
bool tagcache_autoupdate; /* automatically keep tagcache in sync? */
bool runtimedb; /* runtime database active? */
+ bool gentracknum; /* if missing tracknumber, then generate track number? */
#endif /* HAVE_TAGCACHE */
#if LCD_DEPTH > 1
diff --git a/apps/settings_list.c b/apps/settings_list.c
old mode 100644
new mode 100755
index 6187478..26e701a
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1111,6 +1111,8 @@ const struct settings_list settings[] = {
#ifdef HAVE_TAGCACHE
OFFON_SETTING(0, runtimedb, LANG_RUNTIMEDB_ACTIVE, false,
"gather runtime data", NULL),
+ OFFON_SETTING(0, gentracknum, LANG_TAGCACHE_GENTRACKNUM, true,
+ "generate tracknumber", NULL),
#endif
#if CONFIG_CODEC == SWCODEC
diff --git a/apps/tagcache.c b/apps/tagcache.c
old mode 100644
new mode 100755
index 07af9bf..ac2c7a6
--- a/apps/tagcache.c
+++ b/apps/tagcache.c
@@ -1761,7 +1761,7 @@ static void __attribute__ ((noinline)) add_tagcache(char *path,
logf("-> %s", path);
/* Generate track number if missing. */
- if (id3.tracknum <= 0)
+ if (id3.tracknum <= 0 && global_settings.gentracknum)
{
const char *p = strrchr(path, '.');