summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorJeffrey Goode <jeffg7@gmail.com>2010-05-11 13:40:25 +0000
committerJeffrey Goode <jeffg7@gmail.com>2010-05-11 13:40:25 +0000
commite141f80e11c08fbb9d404c192f1ef4bcf28c7a74 (patch)
treebce928acbd2bfe793b8a3250d7305ef17f9f94bc /apps
parent565a863dd50b62245e52e18caaf5306955f6b9f5 (diff)
downloadrockbox-e141f80e11c08fbb9d404c192f1ef4bcf28c7a74.zip
rockbox-e141f80e11c08fbb9d404c192f1ef4bcf28c7a74.tar.gz
rockbox-e141f80e11c08fbb9d404c192f1ef4bcf28c7a74.tar.bz2
rockbox-e141f80e11c08fbb9d404c192f1ef4bcf28c7a74.tar.xz
Add Insert Shuffled to hotkey options
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25950 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/onplay.c27
-rw-r--r--apps/onplay.h1
-rw-r--r--apps/settings_list.c6
3 files changed, 28 insertions, 6 deletions
diff --git a/apps/onplay.c b/apps/onplay.c
index fc236fc..da94dbd 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -1195,6 +1195,19 @@ static bool open_with(void)
return list_viewers();
}
+static int playlist_insert_shuffled(void)
+{
+ if ((audio_status() & AUDIO_STATUS_PLAY) ||
+ (selected_file_attr & ATTR_DIRECTORY) ||
+ ((selected_file_attr & FILE_ATTR_MASK) == FILE_ATTR_M3U))
+ {
+ playlist_insert_func((intptr_t*)PLAYLIST_INSERT_SHUFFLED);
+ return ONPLAY_START_PLAY;
+ }
+
+ return ONPLAY_RELOAD_DIR;
+}
+
struct hotkey_assignment {
int action; /* hotkey_action */
int lang_id; /* Language ID */
@@ -1228,6 +1241,9 @@ static struct hotkey_assignment hotkey_items[] = {
{ HOTKEY_INSERT, LANG_INSERT,
HOTKEY_FUNC(playlist_insert_func, (intptr_t*)PLAYLIST_INSERT),
ONPLAY_START_PLAY },
+ { HOTKEY_INSERT_SHUFFLED, LANG_INSERT_SHUFFLED,
+ HOTKEY_FUNC(playlist_insert_shuffled, NULL),
+ ONPLAY_OK },
};
static const int num_hotkey_items = sizeof(hotkey_items) / sizeof(hotkey_items[0]);
@@ -1261,15 +1277,20 @@ static int execute_hotkey(bool is_wps)
{
/* run the associated function (with optional param), if any */
const struct menu_func func = this_item->func;
+ int func_return;
if (func.function != NULL)
{
if (func.param != NULL)
- (*func.function_w_param)(func.param);
+ func_return = (*func.function_w_param)(func.param);
else
- (*func.function)();
+ func_return = (*func.function)();
}
/* return with the associated code */
- return this_item->return_code;
+ const int return_code = this_item->return_code;
+ /* ONPLAY_OK here means to use the function return code */
+ if (return_code == ONPLAY_OK)
+ return func_return;
+ return return_code;
}
}
diff --git a/apps/onplay.h b/apps/onplay.h
index a489b09..8462603 100644
--- a/apps/onplay.h
+++ b/apps/onplay.h
@@ -42,6 +42,7 @@ enum hotkey_action {
HOTKEY_OPEN_WITH,
HOTKEY_DELETE,
HOTKEY_INSERT,
+ HOTKEY_INSERT_SHUFFLED,
};
#endif
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 5a16f09..61853f8 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -1688,9 +1688,9 @@ const struct settings_list settings[] = {
HOTKEY_OPEN_WITH, HOTKEY_DELETE),
TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, hotkey_tree,
LANG_HOTKEY_FILE_BROWSER, HOTKEY_OFF, "hotkey tree",
- "off,open with,delete,insert",
- UNIT_INT, hotkey_formatter, hotkey_getlang, NULL, 4, HOTKEY_OFF,
- HOTKEY_OPEN_WITH, HOTKEY_DELETE, HOTKEY_INSERT),
+ "off,open with,delete,insert,insert shuffled",
+ UNIT_INT, hotkey_formatter, hotkey_getlang, NULL, 5, HOTKEY_OFF,
+ HOTKEY_OPEN_WITH, HOTKEY_DELETE, HOTKEY_INSERT, HOTKEY_INSERT_SHUFFLED),
#endif
#if CONFIG_CODEC == SWCODEC