summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/lang/english.lang15
-rw-r--r--apps/tagtree.c18
2 files changed, 30 insertions, 3 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 2589576..2eadfc4 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -11512,4 +11512,17 @@
ipodvideo: "Treble Cutoff"
</voice>
</phrase>
-
+<phrase>
+ id: LANG_TAGNAVI_RANDOM
+ desc: "<Random>" entry in tag browser
+ user:
+ <source>
+ *: "<Random>"
+ </source>
+ <dest>
+ *: "<Random>"
+ </dest>
+ <voice>
+ *: "Random"
+ </voice>
+</phrase>
diff --git a/apps/tagtree.c b/apps/tagtree.c
index 8298fe2..d394491 100644
--- a/apps/tagtree.c
+++ b/apps/tagtree.c
@@ -1136,7 +1136,15 @@ static int retrieve_entries(struct tree_context *c, struct tagcache_search *tcs,
dptr++;
current_entry_count++;
}
- special_entry_count++;
+ if (offset <= 1)
+ {
+ dptr->newtable = navibrowse;
+ dptr->name = str(LANG_TAGNAVI_RANDOM);
+ dptr->extraseek = -1;
+ dptr++;
+ current_entry_count++;
+ }
+ special_entry_count+=2;
}
total_count += special_entry_count;
@@ -1374,8 +1382,14 @@ int tagtree_enter(struct tree_context* c)
dptr = tagtree_get_entry(c, c->selected_item);
c->dirfull = false;
+ seek = dptr->extraseek;
+ if (seek == -1)
+ {
+ srand(current_tick);
+ dptr = (tagtree_get_entry(c, 2+(rand() % (c->filesindir-2))));
+ seek = dptr->extraseek;
+ }
newextra = dptr->newtable;
- seek = dptr->extraseek;
if (c->dirlevel >= MAX_DIR_LEVELS)
return 0;