summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeffrey Goode <jeffg7@gmail.com>2010-05-09 02:02:51 +0000
committerJeffrey Goode <jeffg7@gmail.com>2010-05-09 02:02:51 +0000
commit1ad76ff25be3f86b9467fc6f4171dbf6895b419c (patch)
treee679a66806c1a89343a29324dd2a6bc860d4a86d
parent8d3553489f1dd44b9dd3b7493489e9ec03f387be (diff)
downloadrockbox-1ad76ff25be3f86b9467fc6f4171dbf6895b419c.tar.gz
rockbox-1ad76ff25be3f86b9467fc6f4171dbf6895b419c.zip
FS#11250: Hotkey setting method changed to menu item vs button pres in context menu. Manuals updated to match.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25905 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/gui/wps.c5
-rw-r--r--apps/lang/czech.lang100
-rw-r--r--apps/lang/english.lang50
-rw-r--r--apps/lang/italiano.lang100
-rw-r--r--apps/lang/slovak.lang100
-rw-r--r--apps/menu.c22
-rw-r--r--apps/menu.h1
-rw-r--r--apps/menus/playlist_menu.c2
-rw-r--r--apps/menus/settings_menu.c45
-rw-r--r--apps/onplay.c121
-rw-r--r--apps/onplay.h12
-rw-r--r--apps/root_menu.h1
-rw-r--r--apps/settings.h2
-rw-r--r--apps/settings_list.c49
-rw-r--r--apps/tree.c5
-rw-r--r--manual/appendix/config_file_options.tex6
-rwxr-xr-xmanual/configure_rockbox/hotkey_settings.tex13
-rw-r--r--manual/rockbox_interface/browsing_and_playing.tex10
-rw-r--r--manual/rockbox_interface/hotkeys.tex32
-rw-r--r--manual/rockbox_interface/wps.tex12
-rw-r--r--manual/working_with_playlists/main.tex1
21 files changed, 129 insertions, 560 deletions
diff --git a/apps/gui/wps.c b/apps/gui/wps.c
index 916ca2cbcf..96f66eeb50 100644
--- a/apps/gui/wps.c
+++ b/apps/gui/wps.c
@@ -886,8 +886,11 @@ long gui_wps_show(void)
886#endif 886#endif
887 switch(button) 887 switch(button)
888 { 888 {
889 case ACTION_WPS_CONTEXT:
890 case ACTION_WPS_HOTKEY: 889 case ACTION_WPS_HOTKEY:
890 if (!global_settings.hotkey_wps)
891 break;
892 /* fall through */
893 case ACTION_WPS_CONTEXT:
891 { 894 {
892 bool hotkey = button == ACTION_WPS_HOTKEY; 895 bool hotkey = button == ACTION_WPS_HOTKEY;
893 gwps_leave_wps(); 896 gwps_leave_wps();
diff --git a/apps/lang/czech.lang b/apps/lang/czech.lang
index 05e2b75793..4f7253eecd 100644
--- a/apps/lang/czech.lang
+++ b/apps/lang/czech.lang
@@ -13321,57 +13321,6 @@
13321 </voice> 13321 </voice>
13322</phrase> 13322</phrase>
13323<phrase> 13323<phrase>
13324 id: LANG_SET_HOTKEY_QUESTION
13325 desc: hotkey splash
13326 user: core
13327 <source>
13328 *: none
13329 hotkey: "Set Hotkey: %s?"
13330 </source>
13331 <dest>
13332 *: none
13333 hotkey: "Nastavit zkratkovou klávesu: %s?"
13334 </dest>
13335 <voice>
13336 *: none
13337 hotkey: "Nastavit zkratkovou klávesu?"
13338 </voice>
13339</phrase>
13340<phrase>
13341 id: LANG_HOTKEY_ASSIGNED
13342 desc: Confirmation after the hotkey has been assigned
13343 user: core
13344 <source>
13345 *: none
13346 hotkey: "Assigned Hotkey: %s"
13347 </source>
13348 <dest>
13349 *: none
13350 hotkey: "Přiřazená zkratková klávesa: %s"
13351 </dest>
13352 <voice>
13353 *: none
13354 hotkey: "Přiřazená zkratková klávesa"
13355 </voice>
13356</phrase>
13357<phrase>
13358 id: LANG_HOTKEY_NOT_SET
13359 desc: hotkey splash
13360 user: core
13361 <source>
13362 *: none
13363 hotkey: "Hotkey Not Set"
13364 </source>
13365 <dest>
13366 *: none
13367 hotkey: "Zkratková klávesa nenastavena"
13368 </dest>
13369 <voice>
13370 *: none
13371 hotkey: "Zkratková klávesa nenastavena"
13372 </voice>
13373</phrase>
13374<phrase>
13375 id: LANG_HOTKEY 13324 id: LANG_HOTKEY
13376 desc: hotkey menu 13325 desc: hotkey menu
13377 user: core 13326 user: core
@@ -13389,55 +13338,6 @@
13389 </voice> 13338 </voice>
13390</phrase> 13339</phrase>
13391<phrase> 13340<phrase>
13392 id: LANG_VIEW_HOTKEY
13393 desc: hotkey menu
13394 user: core
13395 <source>
13396 *: none
13397 hotkey: "View Hotkey Settings"
13398 </source>
13399 <dest>
13400 *: none
13401 hotkey: "Zobrazit nastavení zkratkové klávesy"
13402 </dest>
13403 <voice>
13404 *: none
13405 hotkey: "Zobrazit nastavení zkratkové klávesy"
13406 </voice>
13407</phrase>
13408<phrase>
13409 id: LANG_HOTKEY_VIEW_WPS
13410 desc: hotkey info menu
13411 user: core
13412 <source>
13413 *: none
13414 hotkey: "WPS: %s"
13415 </source>
13416 <dest>
13417 *: none
13418 hotkey: "Přehrávací obrazovka: %s"
13419 </dest>
13420 <voice>
13421 *: none
13422 </voice>
13423</phrase>
13424<phrase>
13425 id: LANG_HOTKEY_VIEW_FILE_BROWSER
13426 desc: hotkey info menu
13427 user: core
13428 <source>
13429 *: none
13430 hotkey: "Prohlížeč souborů: %s"
13431 </source>
13432 <dest>
13433 *: none
13434 hotkey: "Prohlížeč souborů: %s"
13435 </dest>
13436 <voice>
13437 *: none
13438 </voice>
13439</phrase>
13440<phrase>
13441 id: LANG_RESUME_REWIND 13341 id: LANG_RESUME_REWIND
13442 desc: in playback settings menu 13342 desc: in playback settings menu
13443 user: core 13343 user: core
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 64d28422c1..8303586551 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -13396,53 +13396,53 @@
13396</phrase> 13396</phrase>
13397<phrase> 13397<phrase>
13398 id: LANG_SET_HOTKEY_QUESTION 13398 id: LANG_SET_HOTKEY_QUESTION
13399 desc: hotkey splash 13399 desc: deprecated
13400 user: core 13400 user: core
13401 <source> 13401 <source>
13402 *: none 13402 *: none
13403 hotkey: "Set Hotkey: %s?" 13403 hotkey: ""
13404 </source> 13404 </source>
13405 <dest> 13405 <dest>
13406 *: none 13406 *: none
13407 hotkey: "Set Hotkey: %s?" 13407 hotkey: ""
13408 </dest> 13408 </dest>
13409 <voice> 13409 <voice>
13410 *: none 13410 *: none
13411 hotkey: "Set Hotkey?" 13411 hotkey: ""
13412 </voice> 13412 </voice>
13413</phrase> 13413</phrase>
13414<phrase> 13414<phrase>
13415 id: LANG_HOTKEY_ASSIGNED 13415 id: LANG_HOTKEY_ASSIGNED
13416 desc: Confirmation after the hotkey has been assigned 13416 desc: deprecated
13417 user: core 13417 user: core
13418 <source> 13418 <source>
13419 *: none 13419 *: none
13420 hotkey: "Assigned Hotkey: %s" 13420 hotkey: ""
13421 </source> 13421 </source>
13422 <dest> 13422 <dest>
13423 *: none 13423 *: none
13424 hotkey: "Assigned Hotkey: %s" 13424 hotkey: ""
13425 </dest> 13425 </dest>
13426 <voice> 13426 <voice>
13427 *: none 13427 *: none
13428 hotkey: "Assigned Hotkey" 13428 hotkey: ""
13429 </voice> 13429 </voice>
13430</phrase> 13430</phrase>
13431<phrase> 13431<phrase>
13432 id: LANG_HOTKEY_NOT_SET 13432 id: LANG_HOTKEY_NOT_SET
13433 desc: hotkey splash 13433 desc: deprecated
13434 user: core 13434 user: core
13435 <source> 13435 <source>
13436 *: none 13436 *: none
13437 hotkey: "Hotkey Not Set" 13437 hotkey: ""
13438 </source> 13438 </source>
13439 <dest> 13439 <dest>
13440 *: none 13440 *: none
13441 hotkey: "Hotkey Not Set" 13441 hotkey: ""
13442 </dest> 13442 </dest>
13443 <voice> 13443 <voice>
13444 *: none 13444 *: none
13445 hotkey: "Hotkey Not Set" 13445 hotkey: ""
13446 </voice> 13446 </voice>
13447</phrase> 13447</phrase>
13448<phrase> 13448<phrase>
@@ -13464,51 +13464,53 @@
13464</phrase> 13464</phrase>
13465<phrase> 13465<phrase>
13466 id: LANG_VIEW_HOTKEY 13466 id: LANG_VIEW_HOTKEY
13467 desc: hotkey menu 13467 desc: deprecated
13468 user: core 13468 user: core
13469 <source> 13469 <source>
13470 *: none 13470 *: none
13471 hotkey: "View Hotkey Settings" 13471 hotkey: ""
13472 </source> 13472 </source>
13473 <dest> 13473 <dest>
13474 *: none 13474 *: none
13475 hotkey: "View Hotkey Settings" 13475 hotkey: ""
13476 </dest> 13476 </dest>
13477 <voice> 13477 <voice>
13478 *: none 13478 *: none
13479 hotkey: "View Hotkey Settings" 13479 hotkey: ""
13480 </voice> 13480 </voice>
13481</phrase> 13481</phrase>
13482<phrase> 13482<phrase>
13483 id: LANG_HOTKEY_VIEW_WPS 13483 id: LANG_HOTKEY_WPS
13484 desc: hotkey info menu 13484 desc: hotkey menu
13485 user: core 13485 user: core
13486 <source> 13486 <source>
13487 *: none 13487 *: none
13488 hotkey: "WPS: %s" 13488 hotkey: "WPS Hotkey"
13489 </source> 13489 </source>
13490 <dest> 13490 <dest>
13491 *: none 13491 *: none
13492 hotkey: "WPS: %s" 13492 hotkey: "WPS Hotkey"
13493 </dest> 13493 </dest>
13494 <voice> 13494 <voice>
13495 *: none 13495 *: none
13496 hotkey: "WPS Hotkey"
13496 </voice> 13497 </voice>
13497</phrase> 13498</phrase>
13498<phrase> 13499<phrase>
13499 id: LANG_HOTKEY_VIEW_FILE_BROWSER 13500 id: LANG_HOTKEY_FILE_BROWSER
13500 desc: hotkey info menu 13501 desc: hotkey menu
13501 user: core 13502 user: core
13502 <source> 13503 <source>
13503 *: none 13504 *: none
13504 hotkey: "File Browser: %s" 13505 hotkey: "File Browser Hotkey"
13505 </source> 13506 </source>
13506 <dest> 13507 <dest>
13507 *: none 13508 *: none
13508 hotkey: "File Browser: %s" 13509 hotkey: "File Browser Hotkey"
13509 </dest> 13510 </dest>
13510 <voice> 13511 <voice>
13511 *: none 13512 *: none
13513 hotkey: "File Browser Hotkey"
13512 </voice> 13514 </voice>
13513</phrase> 13515</phrase>
13514<phrase> 13516<phrase>
diff --git a/apps/lang/italiano.lang b/apps/lang/italiano.lang
index d52b6aa13c..65f4e577a7 100644
--- a/apps/lang/italiano.lang
+++ b/apps/lang/italiano.lang
@@ -13320,57 +13320,6 @@
13320 </voice> 13320 </voice>
13321</phrase> 13321</phrase>
13322<phrase> 13322<phrase>
13323 id: LANG_SET_HOTKEY_QUESTION
13324 desc: hotkey splash
13325 user: core
13326 <source>
13327 *: none
13328 hotkey: "Set Hotkey: %s?"
13329 </source>
13330 <dest>
13331 *: none
13332 hotkey: "Imposta Tasto Rapido: %s?"
13333 </dest>
13334 <voice>
13335 *: none
13336 hotkey: "Imposta Tasto Rapido?"
13337 </voice>
13338</phrase>
13339<phrase>
13340 id: LANG_HOTKEY_ASSIGNED
13341 desc: Confirmation after the hotkey has been assigned
13342 user: core
13343 <source>
13344 *: none
13345 hotkey: "Assigned Hotkey: %s"
13346 </source>
13347 <dest>
13348 *: none
13349 hotkey: "Tasto Rapido Assegnato: %s"
13350 </dest>
13351 <voice>
13352 *: none
13353 hotkey: "Tasto Rapido Assegnato"
13354 </voice>
13355</phrase>
13356<phrase>
13357 id: LANG_HOTKEY_NOT_SET
13358 desc: hotkey splash
13359 user: core
13360 <source>
13361 *: none
13362 hotkey: "Hotkey Not Set"
13363 </source>
13364 <dest>
13365 *: none
13366 hotkey: "Tasto Rapido Non Impostato"
13367 </dest>
13368 <voice>
13369 *: none
13370 hotkey: "Tasto Rapido Non Impostato"
13371 </voice>
13372</phrase>
13373<phrase>
13374 id: LANG_HOTKEY 13323 id: LANG_HOTKEY
13375 desc: hotkey menu 13324 desc: hotkey menu
13376 user: core 13325 user: core
@@ -13387,52 +13336,3 @@
13387 hotkey: "Tasto Rapido" 13336 hotkey: "Tasto Rapido"
13388 </voice> 13337 </voice>
13389</phrase> 13338</phrase>
13390<phrase>
13391 id: LANG_VIEW_HOTKEY
13392 desc: hotkey menu
13393 user: core
13394 <source>
13395 *: none
13396 hotkey: "View Hotkey Settings"
13397 </source>
13398 <dest>
13399 *: none
13400 hotkey: "Visualizza Impostazioni Tasto Rapido"
13401 </dest>
13402 <voice>
13403 *: none
13404 hotkey: "Visualizza Impostazioni Tasto Rapido"
13405 </voice>
13406</phrase>
13407<phrase>
13408 id: LANG_HOTKEY_VIEW_WPS
13409 desc: hotkey info menu
13410 user: core
13411 <source>
13412 *: none
13413 hotkey: "WPS: %s"
13414 </source>
13415 <dest>
13416 *: none
13417 hotkey: "WPS: %s"
13418 </dest>
13419 <voice>
13420 *: none
13421 </voice>
13422</phrase>
13423<phrase>
13424 id: LANG_HOTKEY_VIEW_FILE_BROWSER
13425 desc: hotkey info menu
13426 user: core
13427 <source>
13428 *: none
13429 hotkey: "File Browser: %s"
13430 </source>
13431 <dest>
13432 *: none
13433 hotkey: "Sfoglia File: %s"
13434 </dest>
13435 <voice>
13436 *: none
13437 </voice>
13438</phrase>
diff --git a/apps/lang/slovak.lang b/apps/lang/slovak.lang
index 6bfeef5c11..e2c17f405e 100644
--- a/apps/lang/slovak.lang
+++ b/apps/lang/slovak.lang
@@ -13319,40 +13319,6 @@
13319 </voice> 13319 </voice>
13320</phrase> 13320</phrase>
13321<phrase> 13321<phrase>
13322 id: LANG_VIEW_HOTKEY
13323 desc: hotkey menu
13324 user: core
13325 <source>
13326 *: none
13327 hotkey: "View Hotkey Settings"
13328 </source>
13329 <dest>
13330 *: none
13331 hotkey: "Zobraziť Nastavenia Horúceho Klávesu"
13332 </dest>
13333 <voice>
13334 *: none
13335 hotkey: "Zobraziť nastavenia horúceho klávesu"
13336 </voice>
13337</phrase>
13338<phrase>
13339 id: LANG_HOTKEY_ASSIGNED
13340 desc: Confirmation after the hotkey has been assigned
13341 user: core
13342 <source>
13343 *: none
13344 hotkey: "Assigned Hotkey: %s"
13345 </source>
13346 <dest>
13347 *: none
13348 hotkey: "Priradená Skratka: %s"
13349 </dest>
13350 <voice>
13351 *: none
13352 hotkey: "Priradená skratka"
13353 </voice>
13354</phrase>
13355<phrase>
13356 id: LANG_HOTKEY 13322 id: LANG_HOTKEY
13357 desc: hotkey menu 13323 desc: hotkey menu
13358 user: core 13324 user: core
@@ -13370,72 +13336,6 @@
13370 </voice> 13336 </voice>
13371</phrase> 13337</phrase>
13372<phrase> 13338<phrase>
13373 id: LANG_HOTKEY_NOT_SET
13374 desc: hotkey splash
13375 user: core
13376 <source>
13377 *: none
13378 hotkey: "Hotkey Not Set"
13379 </source>
13380 <dest>
13381 *: none
13382 hotkey: "Skratka Nieje Nastavená"
13383 </dest>
13384 <voice>
13385 *: none
13386 hotkey: "Skratka nieje nastavená"
13387 </voice>
13388</phrase>
13389<phrase>
13390 id: LANG_SET_HOTKEY_QUESTION
13391 desc: hotkey splash
13392 user: core
13393 <source>
13394 *: none
13395 hotkey: "Set Hotkey: %s?"
13396 </source>
13397 <dest>
13398 *: none
13399 hotkey: "Nastaviť skratku: %s?"
13400 </dest>
13401 <voice>
13402 *: none
13403 hotkey: "Nastaviť skratku?"
13404 </voice>
13405</phrase>
13406<phrase>
13407 id: LANG_HOTKEY_VIEW_FILE_BROWSER
13408 desc: hotkey info menu
13409 user: core
13410 <source>
13411 *: none
13412 hotkey: "File Browser: %s"
13413 </source>
13414 <dest>
13415 *: none
13416 hotkey: "Prehliadač Súborov: %s"
13417 </dest>
13418 <voice>
13419 *: none
13420 </voice>
13421</phrase>
13422<phrase>
13423 id: LANG_HOTKEY_VIEW_WPS
13424 desc: hotkey info menu
13425 user: core
13426 <source>
13427 *: none
13428 hotkey: "WPS: %s"
13429 </source>
13430 <dest>
13431 *: none
13432 hotkey: "WPS: %s"
13433 </dest>
13434 <voice>
13435 *: none
13436 </voice>
13437</phrase>
13438<phrase>
13439 id: LANG_RESUME_REWIND 13339 id: LANG_RESUME_REWIND
13440 desc: in playback settings menu 13340 desc: in playback settings menu
13441 user: core 13341 user: core
diff --git a/apps/menu.c b/apps/menu.c
index bfad812803..670a235202 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -61,12 +61,6 @@
61#include "list.h" 61#include "list.h"
62#include "buttonbar.h" 62#include "buttonbar.h"
63 63
64/* hotkey settings */
65#ifdef HAVE_HOTKEY
66const struct menu_item_ex *selected_menu_item;
67bool hotkey_settable_menu = false;
68#endif
69
70#define MAX_MENUS 8 64#define MAX_MENUS 8
71/* used to allow for dynamic menus */ 65/* used to allow for dynamic menus */
72#define MAX_MENU_SUBITEMS 64 66#define MAX_MENU_SUBITEMS 64
@@ -432,22 +426,6 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
432 done = true; 426 done = true;
433 } 427 }
434#endif 428#endif
435#ifdef HAVE_HOTKEY
436 else if (hotkey_settable_menu &&
437 ((action == ACTION_WPS_HOTKEY) ||
438 (action == ACTION_TREE_HOTKEY)))
439 {
440 int this = get_menu_selection(gui_synclist_get_sel_pos(&lists),menu);
441 temp = menu->submenus[this];
442 if (temp->flags&MENU_FUNC_HOTKEYABLE)
443 {
444 selected_menu_item = temp;
445 selected = this;
446 ret = MENU_SELECTED_HOTKEY;
447 done = true;
448 }
449 }
450#endif
451 else if (action == ACTION_TREE_WPS) 429 else if (action == ACTION_TREE_WPS)
452 { 430 {
453 ret = GO_TO_PREVIOUS_MUSIC; 431 ret = GO_TO_PREVIOUS_MUSIC;
diff --git a/apps/menu.h b/apps/menu.h
index a7bd1c1a73..b5bab90981 100644
--- a/apps/menu.h
+++ b/apps/menu.h
@@ -61,7 +61,6 @@ struct menu_func {
61/* Flags for MT_FUNCTION_CALL */ 61/* Flags for MT_FUNCTION_CALL */
62#define MENU_FUNC_USEPARAM 0x80 62#define MENU_FUNC_USEPARAM 0x80
63#define MENU_FUNC_CHECK_RETVAL 0x100 63#define MENU_FUNC_CHECK_RETVAL 0x100
64#define MENU_FUNC_HOTKEYABLE 0x200
65 64
66#define MENU_COUNT_MASK 0xFFF 65#define MENU_COUNT_MASK 0xFFF
67#define MENU_COUNT_SHIFT 12 66#define MENU_COUNT_SHIFT 12
diff --git a/apps/menus/playlist_menu.c b/apps/menus/playlist_menu.c
index 0d08a4f04f..2237761efd 100644
--- a/apps/menus/playlist_menu.c
+++ b/apps/menus/playlist_menu.c
@@ -68,7 +68,7 @@ static int playlist_view_(void)
68 68
69MENUITEM_FUNCTION(create_playlist_item, 0, ID2P(LANG_CREATE_PLAYLIST), 69MENUITEM_FUNCTION(create_playlist_item, 0, ID2P(LANG_CREATE_PLAYLIST),
70 (int(*)(void))create_playlist, NULL, NULL, Icon_NOICON); 70 (int(*)(void))create_playlist, NULL, NULL, Icon_NOICON);
71MENUITEM_FUNCTION(view_cur_playlist, MENU_FUNC_CHECK_RETVAL | MENU_FUNC_HOTKEYABLE, 71MENUITEM_FUNCTION(view_cur_playlist, MENU_FUNC_CHECK_RETVAL,
72 ID2P(LANG_VIEW_DYNAMIC_PLAYLIST), 72 ID2P(LANG_VIEW_DYNAMIC_PLAYLIST),
73 (int(*)(void))playlist_view_, NULL, NULL, Icon_NOICON); 73 (int(*)(void))playlist_view_, NULL, NULL, Icon_NOICON);
74MENUITEM_FUNCTION(save_playlist, MENU_FUNC_USEPARAM, ID2P(LANG_SAVE_DYNAMIC_PLAYLIST), 74MENUITEM_FUNCTION(save_playlist, MENU_FUNC_USEPARAM, ID2P(LANG_SAVE_DYNAMIC_PLAYLIST),
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c
index 1007d2aeb0..bcd49c942c 100644
--- a/apps/menus/settings_menu.c
+++ b/apps/menus/settings_menu.c
@@ -46,11 +46,6 @@
46#ifdef HAVE_DIRCACHE 46#ifdef HAVE_DIRCACHE
47#include "dircache.h" 47#include "dircache.h"
48#endif 48#endif
49#ifdef HAVE_HOTKEY
50#include "list.h"
51#include "settings_list.h"
52#include "onplay.h"
53#endif
54 49
55/***********************************/ 50/***********************************/
56/* TAGCACHE MENU */ 51/* TAGCACHE MENU */
@@ -406,44 +401,10 @@ MAKE_MENU(voice_settings_menu, ID2P(LANG_VOICE), 0, Icon_Voice,
406/***********************************/ 401/***********************************/
407/* HOTKEY MENU */ 402/* HOTKEY MENU */
408#ifdef HAVE_HOTKEY 403#ifdef HAVE_HOTKEY
409static void view_hotkey_info(void) 404MENUITEM_SETTING(hotkey_wps_item, &global_settings.hotkey_wps, NULL);
410{ 405MENUITEM_SETTING(hotkey_tree_item, &global_settings.hotkey_tree, NULL);
411 struct simplelist_info info;
412 simplelist_info_init(&info, str(LANG_VIEW_HOTKEY), 0, NULL);
413 info.hide_selection = true;
414 info.scroll_all = true;
415 simplelist_addline(SIMPLELIST_ADD_LINE, str(LANG_HOTKEY_VIEW_WPS),
416 get_hotkey_desc(global_settings.hotkey_wps));
417 simplelist_addline(SIMPLELIST_ADD_LINE, str(LANG_HOTKEY_VIEW_FILE_BROWSER),
418 get_hotkey_desc(global_settings.hotkey_tree));
419 simplelist_show_list(&info);
420}
421
422/* reset hotkey settings to their defaults */
423static void reset_hotkey_settings(void)
424{
425 {
426 const struct settings_list *setting =
427 find_setting(&global_settings.hotkey_wps, NULL);
428 reset_setting(setting, setting->setting);
429 }
430 {
431 const struct settings_list *setting =
432 find_setting(&global_settings.hotkey_tree, NULL);
433 reset_setting(setting, setting->setting);
434 }
435 settings_save();
436 splash(HZ, str(LANG_RESET_DONE_CLEAR));
437}
438
439MENUITEM_FUNCTION(hotkey_view, 0, ID2P(LANG_VIEW_HOTKEY),
440 (int(*)(void))view_hotkey_info, NULL,
441 NULL, Icon_NOICON);
442MENUITEM_FUNCTION(hotkey_reset, 0, ID2P(LANG_RESET),
443 (int(*)(void))reset_hotkey_settings, NULL,
444 NULL, Icon_NOICON);
445MAKE_MENU(hotkey_menu, ID2P(LANG_HOTKEY), 0, Icon_NOICON, 406MAKE_MENU(hotkey_menu, ID2P(LANG_HOTKEY), 0, Icon_NOICON,
446 &hotkey_view, &hotkey_reset); 407 &hotkey_wps_item, &hotkey_tree_item);
447#endif /*have_hotkey */ 408#endif /*have_hotkey */
448/* HOTKEY MENU */ 409/* HOTKEY MENU */
449/***********************************/ 410/***********************************/
diff --git a/apps/onplay.c b/apps/onplay.c
index 82a8bddae7..c9ec565a0c 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -270,8 +270,7 @@ static int treeplaylist_callback(int action,
270 const struct menu_item_ex *this_item); 270 const struct menu_item_ex *this_item);
271 271
272/* insert items */ 272/* insert items */
273MENUITEM_FUNCTION(i_pl_item, MENU_FUNC_USEPARAM | MENU_FUNC_HOTKEYABLE, 273MENUITEM_FUNCTION(i_pl_item, MENU_FUNC_USEPARAM, ID2P(LANG_INSERT),
274 ID2P(LANG_INSERT),
275 playlist_insert_func, (intptr_t*)PLAYLIST_INSERT, 274 playlist_insert_func, (intptr_t*)PLAYLIST_INSERT,
276 NULL, Icon_Playlist); 275 NULL, Icon_Playlist);
277MENUITEM_FUNCTION(i_first_pl_item, MENU_FUNC_USEPARAM, ID2P(LANG_INSERT_FIRST), 276MENUITEM_FUNCTION(i_first_pl_item, MENU_FUNC_USEPARAM, ID2P(LANG_INSERT_FIRST),
@@ -960,12 +959,10 @@ MENUITEM_FUNCTION(view_cue_item, 0, ID2P(LANG_BROWSE_CUESHEET),
960 view_cue, NULL, view_cue_item_callback, Icon_NOICON); 959 view_cue, NULL, view_cue_item_callback, Icon_NOICON);
961 960
962/* CONTEXT_WPS items */ 961/* CONTEXT_WPS items */
963MENUITEM_FUNCTION(browse_id3_item, MENU_FUNC_HOTKEYABLE, 962MENUITEM_FUNCTION(browse_id3_item, 0, ID2P(LANG_MENU_SHOW_ID3_INFO),
964 ID2P(LANG_MENU_SHOW_ID3_INFO),
965 browse_id3, NULL, NULL, Icon_NOICON); 963 browse_id3, NULL, NULL, Icon_NOICON);
966#ifdef HAVE_PITCHSCREEN 964#ifdef HAVE_PITCHSCREEN
967MENUITEM_FUNCTION(pitch_screen_item, MENU_FUNC_HOTKEYABLE, 965MENUITEM_FUNCTION(pitch_screen_item, 0, ID2P(LANG_PITCH),
968 ID2P(LANG_PITCH),
969 gui_syncpitchscreen_run, NULL, NULL, Icon_Audio); 966 gui_syncpitchscreen_run, NULL, NULL, Icon_Audio);
970#endif 967#endif
971 968
@@ -979,9 +976,9 @@ MENUITEM_FUNCTION(clipboard_copy_item, 0, ID2P(LANG_COPY),
979 clipboard_copy, NULL, clipboard_callback, Icon_NOICON); 976 clipboard_copy, NULL, clipboard_callback, Icon_NOICON);
980MENUITEM_FUNCTION(clipboard_paste_item, 0, ID2P(LANG_PASTE), 977MENUITEM_FUNCTION(clipboard_paste_item, 0, ID2P(LANG_PASTE),
981 clipboard_paste, NULL, clipboard_callback, Icon_NOICON); 978 clipboard_paste, NULL, clipboard_callback, Icon_NOICON);
982MENUITEM_FUNCTION(delete_file_item, MENU_FUNC_HOTKEYABLE, ID2P(LANG_DELETE), 979MENUITEM_FUNCTION(delete_file_item, 0, ID2P(LANG_DELETE),
983 delete_file_dir, NULL, clipboard_callback, Icon_NOICON); 980 delete_file_dir, NULL, clipboard_callback, Icon_NOICON);
984MENUITEM_FUNCTION(delete_dir_item, MENU_FUNC_HOTKEYABLE, ID2P(LANG_DELETE_DIR), 981MENUITEM_FUNCTION(delete_dir_item, 0, ID2P(LANG_DELETE_DIR),
985 delete_file_dir, NULL, clipboard_callback, Icon_NOICON); 982 delete_file_dir, NULL, clipboard_callback, Icon_NOICON);
986MENUITEM_FUNCTION(create_dir_item, 0, ID2P(LANG_CREATE_DIR), 983MENUITEM_FUNCTION(create_dir_item, 0, ID2P(LANG_CREATE_DIR),
987 create_dir, NULL, clipboard_callback, Icon_NOICON); 984 create_dir, NULL, clipboard_callback, Icon_NOICON);
@@ -1003,8 +1000,7 @@ static bool onplay_load_plugin(void *param)
1003 return false; 1000 return false;
1004} 1001}
1005 1002
1006MENUITEM_FUNCTION(list_viewers_item, MENU_FUNC_HOTKEYABLE, 1003MENUITEM_FUNCTION(list_viewers_item, 0, ID2P(LANG_ONPLAY_OPEN_WITH),
1007 ID2P(LANG_ONPLAY_OPEN_WITH),
1008 list_viewers, NULL, clipboard_callback, Icon_NOICON); 1004 list_viewers, NULL, clipboard_callback, Icon_NOICON);
1009MENUITEM_FUNCTION(properties_item, MENU_FUNC_USEPARAM, ID2P(LANG_PROPERTIES), 1005MENUITEM_FUNCTION(properties_item, MENU_FUNC_USEPARAM, ID2P(LANG_PROPERTIES),
1010 onplay_load_plugin, (void *)"properties", 1006 onplay_load_plugin, (void *)"properties",
@@ -1199,75 +1195,61 @@ static bool open_with(void)
1199 return list_viewers(); 1195 return list_viewers();
1200} 1196}
1201 1197
1202extern const struct menu_item_ex *selected_menu_item;
1203extern bool hotkey_settable_menu;
1204
1205#define HOTKEY_ACTION_MASK 0x0FF /* Mask to apply to get the action (enum) */ 1198#define HOTKEY_ACTION_MASK 0x0FF /* Mask to apply to get the action (enum) */
1206#define HOTKEY_CTX_WPS 0x100 /* Mask to apply to check whether it's for WPS */ 1199#define HOTKEY_CTX_WPS 0x100 /* Mask to apply to check whether it's for WPS */
1207#define HOTKEY_CTX_TREE 0x200 /* Mask to apply to check whether it's for the tree */ 1200#define HOTKEY_CTX_TREE 0x200 /* Mask to apply to check whether it's for the tree */
1208 1201
1209/* Any desired hotkey functions go here... */
1210enum hotkey_action {
1211 HOTKEY_OFF = 0,
1212 HOTKEY_VIEW_PLAYLIST = 1,
1213 HOTKEY_SHOW_TRACK_INFO,
1214 HOTKEY_PITCHSCREEN,
1215 HOTKEY_OPEN_WITH,
1216 HOTKEY_DELETE,
1217 HOTKEY_INSERT,
1218};
1219
1220struct hotkey_assignment { 1202struct hotkey_assignment {
1221 int item; /* Bit or'd hotkey_action and HOTKEY_CTX_x */ 1203 int item; /* Bit or'd hotkey_action and HOTKEY_CTX_x */
1222 struct menu_func func; /* Function to run if this entry is selected */ 1204 struct menu_func func; /* Function to run if this entry is selected */
1223 int return_code; /* What to return after the function is run */ 1205 int return_code; /* What to return after the function is run */
1224 const struct menu_item_ex *menu_addr; /* Must have non-dynamic text, */ 1206 int lang_id; /* Language ID */
1225 /* i.e. have the flag MENU_HAS_DESC. E.g. be a MENUITEM_FUNCTION */
1226 /* For all possibilities see menu.h. */
1227}; 1207};
1228 1208
1229#define HOTKEY_FUNC(func, param) {{(void *)func}, param} 1209#define HOTKEY_FUNC(func, param) {{(void *)func}, param}
1230 1210
1231/* ... and here. Order is not important. */ 1211/* Any desired hotkey functions go here, in the enum in onplay.h,
1212 and in the settings menu in settings_list.c. The order here
1213 is not important. */
1232static struct hotkey_assignment hotkey_items[] = { 1214static struct hotkey_assignment hotkey_items[] = {
1233 { HOTKEY_VIEW_PLAYLIST | HOTKEY_CTX_WPS, 1215 { HOTKEY_VIEW_PLAYLIST | HOTKEY_CTX_WPS,
1234 HOTKEY_FUNC(NULL, NULL), 1216 HOTKEY_FUNC(NULL, NULL),
1235 ONPLAY_PLAYLIST, &view_cur_playlist }, 1217 ONPLAY_PLAYLIST, LANG_VIEW_DYNAMIC_PLAYLIST },
1236 { HOTKEY_SHOW_TRACK_INFO| HOTKEY_CTX_WPS, 1218 { HOTKEY_SHOW_TRACK_INFO| HOTKEY_CTX_WPS,
1237 HOTKEY_FUNC(browse_id3, NULL), 1219 HOTKEY_FUNC(browse_id3, NULL),
1238 ONPLAY_RELOAD_DIR, &browse_id3_item }, 1220 ONPLAY_RELOAD_DIR, LANG_MENU_SHOW_ID3_INFO },
1239#ifdef HAVE_PITCHSCREEN 1221#ifdef HAVE_PITCHSCREEN
1240 { HOTKEY_PITCHSCREEN | HOTKEY_CTX_WPS, 1222 { HOTKEY_PITCHSCREEN | HOTKEY_CTX_WPS,
1241 HOTKEY_FUNC(gui_syncpitchscreen_run, NULL), 1223 HOTKEY_FUNC(gui_syncpitchscreen_run, NULL),
1242 ONPLAY_RELOAD_DIR, &pitch_screen_item }, 1224 ONPLAY_RELOAD_DIR, LANG_PITCH },
1243#endif 1225#endif
1244 { HOTKEY_OPEN_WITH | HOTKEY_CTX_WPS | HOTKEY_CTX_TREE, 1226 { HOTKEY_OPEN_WITH | HOTKEY_CTX_WPS | HOTKEY_CTX_TREE,
1245 HOTKEY_FUNC(open_with, NULL), 1227 HOTKEY_FUNC(open_with, NULL),
1246 ONPLAY_RELOAD_DIR, &list_viewers_item }, 1228 ONPLAY_RELOAD_DIR, LANG_ONPLAY_OPEN_WITH },
1247 { HOTKEY_DELETE | HOTKEY_CTX_WPS | HOTKEY_CTX_TREE, 1229 { HOTKEY_DELETE | HOTKEY_CTX_WPS | HOTKEY_CTX_TREE,
1248 HOTKEY_FUNC(delete_item, NULL), 1230 HOTKEY_FUNC(delete_item, NULL),
1249 ONPLAY_RELOAD_DIR, &delete_file_item }, 1231 ONPLAY_RELOAD_DIR, LANG_DELETE },
1250 { HOTKEY_DELETE | HOTKEY_CTX_TREE, 1232 { HOTKEY_DELETE | HOTKEY_CTX_TREE,
1251 HOTKEY_FUNC(delete_item, NULL), 1233 HOTKEY_FUNC(delete_item, NULL),
1252 ONPLAY_RELOAD_DIR, &delete_dir_item }, 1234 ONPLAY_RELOAD_DIR, LANG_DELETE },
1253 { HOTKEY_INSERT | HOTKEY_CTX_TREE, 1235 { HOTKEY_INSERT | HOTKEY_CTX_TREE,
1254 HOTKEY_FUNC(playlist_insert_func, (intptr_t*)PLAYLIST_INSERT), 1236 HOTKEY_FUNC(playlist_insert_func, (intptr_t*)PLAYLIST_INSERT),
1255 ONPLAY_START_PLAY, &i_pl_item }, 1237 ONPLAY_START_PLAY, LANG_INSERT },
1256}; 1238};
1257 1239
1258static const int num_hotkey_items = sizeof(hotkey_items) / sizeof(hotkey_items[0]); 1240static const int num_hotkey_items = sizeof(hotkey_items) / sizeof(hotkey_items[0]);
1259 1241
1260/* Return the language ID for the input function */ 1242/* Return the language ID for the input function */
1261const char* get_hotkey_desc(int hk_func) 1243int get_hotkey_lang_id(int hk_func)
1262{ 1244{
1263 int i; 1245 int i;
1264 for (i = 0; i < num_hotkey_items; i++) 1246 for (i = 0; i < num_hotkey_items; i++)
1265 { 1247 {
1266 if ((hotkey_items[i].item & HOTKEY_ACTION_MASK) == hk_func) 1248 if ((hotkey_items[i].item & HOTKEY_ACTION_MASK) == hk_func)
1267 return P2STR(hotkey_items[i].menu_addr->callback_and_desc->desc); 1249 return hotkey_items[i].lang_id;
1268 } 1250 }
1269 1251
1270 return str(LANG_HOTKEY_NOT_SET); 1252 return LANG_OFF;
1271} 1253}
1272 1254
1273/* Execute the hotkey function, if listed for this screen */ 1255/* Execute the hotkey function, if listed for this screen */
@@ -1300,60 +1282,9 @@ static int execute_hotkey(bool is_wps)
1300 } 1282 }
1301 } 1283 }
1302 1284
1303 /* no valid hotkey set */ 1285 /* no valid hotkey set, ignore hotkey */
1304 splash(HZ, ID2P(LANG_HOTKEY_NOT_SET));
1305 return ONPLAY_RELOAD_DIR; 1286 return ONPLAY_RELOAD_DIR;
1306} 1287}
1307
1308/* Set the hotkey to the current context menu function, if listed */
1309static void set_hotkey(bool is_wps)
1310{
1311 int i;
1312 struct hotkey_assignment *this_item;
1313 const int context = is_wps ? HOTKEY_CTX_WPS : HOTKEY_CTX_TREE;
1314 int *hk_func = is_wps ? &global_settings.hotkey_wps :
1315 &global_settings.hotkey_tree;
1316 int this_hk;
1317 char *this_desc;
1318 bool match_found = false;
1319
1320 /* search assignment struct for a function that matches the current menu item */
1321 for (i = 0; i < num_hotkey_items; i++)
1322 {
1323 this_item = &hotkey_items[i];
1324 if ((this_item->item & context) &&
1325 (this_item->menu_addr == selected_menu_item))
1326 {
1327 this_hk = this_item->item & HOTKEY_ACTION_MASK;
1328 this_desc = P2STR((selected_menu_item->callback_and_desc)->desc);
1329 match_found = true;
1330 break;
1331 }
1332 }
1333
1334 /* ignore the hotkey if no match found or no change to setting */
1335 if (!match_found || (this_hk == *hk_func)) return;
1336
1337 char line1_buf[100],
1338 line2_buf[100];
1339 char *line1 = line1_buf,
1340 *line2 = line2_buf;
1341 char **line1_ptr = &line1,
1342 **line2_ptr = &line2;
1343 const struct text_message message={(const char **)line1_ptr, 1};
1344 const struct text_message yes_message={(const char **)line2_ptr, 1};
1345
1346 snprintf(line1, sizeof(line1_buf), str(LANG_SET_HOTKEY_QUESTION), this_desc);
1347 snprintf(line2, sizeof(line2_buf), str(LANG_HOTKEY_ASSIGNED), this_desc);
1348
1349 /* confirm the hotkey setting change */
1350 if(gui_syncyesno_run(&message, &yes_message, NULL)==YESNO_YES)
1351 {
1352 /* store the hotkey settings */
1353 *hk_func = this_hk;
1354 settings_save();
1355 }
1356}
1357#endif /* HOTKEY */ 1288#endif /* HOTKEY */
1358 1289
1359int onplay(char* file, int attr, int from, bool hotkey) 1290int onplay(char* file, int attr, int from, bool hotkey)
@@ -1367,7 +1298,6 @@ int onplay(char* file, int attr, int from, bool hotkey)
1367#ifdef HAVE_HOTKEY 1298#ifdef HAVE_HOTKEY
1368 if (hotkey) 1299 if (hotkey)
1369 return execute_hotkey(context == CONTEXT_WPS); 1300 return execute_hotkey(context == CONTEXT_WPS);
1370 hotkey_settable_menu = true;
1371#else 1301#else
1372 (void)hotkey; 1302 (void)hotkey;
1373#endif 1303#endif
@@ -1376,17 +1306,8 @@ int onplay(char* file, int attr, int from, bool hotkey)
1376 else 1306 else
1377 menu = &tree_onplay_menu; 1307 menu = &tree_onplay_menu;
1378 menu_selection = do_menu(menu, NULL, NULL, false); 1308 menu_selection = do_menu(menu, NULL, NULL, false);
1379#ifdef HAVE_HOTKEY
1380 hotkey_settable_menu = false;
1381 switch (menu_selection)
1382 {
1383 case MENU_SELECTED_HOTKEY:
1384 set_hotkey(context == CONTEXT_WPS);
1385 return ONPLAY_RELOAD_DIR;
1386#else
1387 switch (menu_selection) 1309 switch (menu_selection)
1388 { 1310 {
1389#endif
1390 case GO_TO_WPS: 1311 case GO_TO_WPS:
1391 return ONPLAY_START_PLAY; 1312 return ONPLAY_START_PLAY;
1392 case GO_TO_ROOT: 1313 case GO_TO_ROOT:
diff --git a/apps/onplay.h b/apps/onplay.h
index 5a834d5ed1..161366ecc2 100644
--- a/apps/onplay.h
+++ b/apps/onplay.h
@@ -32,7 +32,17 @@ enum {
32}; 32};
33 33
34#ifdef HAVE_HOTKEY 34#ifdef HAVE_HOTKEY
35const char* get_hotkey_desc(int hk_func); 35int get_hotkey_lang_id(int hk_func);
36
37enum hotkey_action {
38 HOTKEY_OFF = 0,
39 HOTKEY_VIEW_PLAYLIST,
40 HOTKEY_SHOW_TRACK_INFO,
41 HOTKEY_PITCHSCREEN,
42 HOTKEY_OPEN_WITH,
43 HOTKEY_DELETE,
44 HOTKEY_INSERT,
45};
36#endif 46#endif
37 47
38#endif 48#endif
diff --git a/apps/root_menu.h b/apps/root_menu.h
index d3ef817d5b..4113b64495 100644
--- a/apps/root_menu.h
+++ b/apps/root_menu.h
@@ -53,7 +53,6 @@ enum {
53 GO_TO_BROWSEPLUGINS, 53 GO_TO_BROWSEPLUGINS,
54 GO_TO_TIMESCREEN, 54 GO_TO_TIMESCREEN,
55 GO_TO_PLAYLIST_VIEWER, 55 GO_TO_PLAYLIST_VIEWER,
56 MENU_SELECTED_HOTKEY,
57}; 56};
58 57
59extern const struct menu_item_ex root_menu_; 58extern const struct menu_item_ex root_menu_;
diff --git a/apps/settings.h b/apps/settings.h
index fc44caae43..cfef6162a8 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -818,7 +818,7 @@ struct user_settings
818 818
819#ifdef HAVE_HOTKEY 819#ifdef HAVE_HOTKEY
820 /* hotkey assignments - acceptable values are in 820 /* hotkey assignments - acceptable values are in
821 hotkey_settings enum in onplay.c */ 821 hotkey_action enum in onplay.h */
822 int hotkey_wps; 822 int hotkey_wps;
823 int hotkey_tree; 823 int hotkey_tree;
824#endif 824#endif
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 34d4fc52e0..5a16f09763 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -56,6 +56,9 @@
56#include "touchscreen.h" 56#include "touchscreen.h"
57#include "ctype.h" /* For isspace() */ 57#include "ctype.h" /* For isspace() */
58#endif 58#endif
59#ifdef HAVE_HOTKEY
60#include "onplay.h"
61#endif
59 62
60#define NVRAM(bytes) (bytes<<F_NVRAM_MASK_SHIFT) 63#define NVRAM(bytes) (bytes<<F_NVRAM_MASK_SHIFT)
61/** NOTE: NVRAM_CONFIG_VERSION is in settings_list.h 64/** NOTE: NVRAM_CONFIG_VERSION is in settings_list.h
@@ -529,6 +532,21 @@ static void tsc_set_default(void* setting, void* defaultval)
529 memcpy(setting, defaultval, sizeof(struct touchscreen_parameter)); 532 memcpy(setting, defaultval, sizeof(struct touchscreen_parameter));
530} 533}
531#endif 534#endif
535#ifdef HAVE_HOTKEY
536static const char* hotkey_formatter(char* buffer, size_t buffer_size, int value,
537 const char* unit)
538{
539 (void)buffer;
540 (void)buffer_size;
541 (void)unit;
542 return str(get_hotkey_lang_id(value));
543}
544static int32_t hotkey_getlang(int value, int unit)
545{
546 (void)unit;
547 return get_hotkey_lang_id(value);
548}
549#endif /* HAVE_HOTKEY */
532const struct settings_list settings[] = { 550const struct settings_list settings[] = {
533 /* sound settings */ 551 /* sound settings */
534 SOUND_SETTING(F_NO_WRAP,volume, LANG_VOLUME, "volume", SOUND_VOLUME), 552 SOUND_SETTING(F_NO_WRAP,volume, LANG_VOLUME, "volume", SOUND_VOLUME),
@@ -1662,26 +1680,17 @@ const struct settings_list settings[] = {
1662#endif 1680#endif
1663 1681
1664#ifdef HAVE_HOTKEY 1682#ifdef HAVE_HOTKEY
1665 CHOICE_SETTING(0, hotkey_wps, -1, 1, "hotkey wps", 1683 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, hotkey_wps,
1666 "off,view playlist,show track info,pitchscreen,open with,delete,insert", 1684 LANG_HOTKEY_WPS, HOTKEY_VIEW_PLAYLIST, "hotkey wps",
1667 NULL, 7, ID2P(LANG_OFF), 1685 "off,view playlist,show track info,pitchscreen,open with,delete",
1668 ID2P(LANG_VIEW_DYNAMIC_PLAYLIST), ID2P(LANG_MENU_SHOW_ID3_INFO), 1686 UNIT_INT, hotkey_formatter, hotkey_getlang, NULL, 6, HOTKEY_OFF,
1669#ifdef HAVE_PITCHSCREEN 1687 HOTKEY_VIEW_PLAYLIST, HOTKEY_SHOW_TRACK_INFO, HOTKEY_PITCHSCREEN,
1670 ID2P(LANG_PITCH), 1688 HOTKEY_OPEN_WITH, HOTKEY_DELETE),
1671#else 1689 TABLE_SETTING(F_ALLOW_ARBITRARY_VALS, hotkey_tree,
1672 NULL, 1690 LANG_HOTKEY_FILE_BROWSER, HOTKEY_OFF, "hotkey tree",
1673#endif 1691 "off,open with,delete,insert",
1674 ID2P(LANG_ONPLAY_OPEN_WITH), ID2P(LANG_DELETE), ID2P(LANG_INSERT)), 1692 UNIT_INT, hotkey_formatter, hotkey_getlang, NULL, 4, HOTKEY_OFF,
1675 CHOICE_SETTING(0, hotkey_tree, -1, 0, "hotkey tree", 1693 HOTKEY_OPEN_WITH, HOTKEY_DELETE, HOTKEY_INSERT),
1676 "off,view playlist,show track info,pitchscreen,open with,delete,insert",
1677 NULL, 7, ID2P(LANG_OFF),
1678 ID2P(LANG_VIEW_DYNAMIC_PLAYLIST), ID2P(LANG_MENU_SHOW_ID3_INFO),
1679#ifdef HAVE_PITCHSCREEN
1680 ID2P(LANG_PITCH),
1681#else
1682 NULL,
1683#endif
1684 ID2P(LANG_ONPLAY_OPEN_WITH), ID2P(LANG_DELETE), ID2P(LANG_INSERT)),
1685#endif 1694#endif
1686 1695
1687#if CONFIG_CODEC == SWCODEC 1696#if CONFIG_CODEC == SWCODEC
diff --git a/apps/tree.c b/apps/tree.c
index 204ebb9ff5..dde4b57b8a 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -755,8 +755,11 @@ static int dirbrowse()
755 break; 755 break;
756#endif 756#endif
757 757
758 case ACTION_STD_CONTEXT:
759 case ACTION_TREE_HOTKEY: 758 case ACTION_TREE_HOTKEY:
759 if (!global_settings.hotkey_tree)
760 break;
761 /* fall through */
762 case ACTION_STD_CONTEXT:
760 { 763 {
761 bool hotkey = button == ACTION_TREE_HOTKEY; 764 bool hotkey = button == ACTION_TREE_HOTKEY;
762 int onplay_result; 765 int onplay_result;
diff --git a/manual/appendix/config_file_options.tex b/manual/appendix/config_file_options.tex
index 2c5136d3b8..0dd2f83568 100644
--- a/manual/appendix/config_file_options.tex
+++ b/manual/appendix/config_file_options.tex
@@ -123,6 +123,12 @@
123 talk filetype & off, on & N/A\\ 123 talk filetype & off, on & N/A\\
124 talk menu & off, on & N/A\\ 124 talk menu & off, on & N/A\\
125 Announce Battery Level & off, on & N/A\\ 125 Announce Battery Level & off, on & N/A\\
126 \opt{hotkey}{
127 hotkey wps & off, view playlist, show track info,
128 pitchscreen, open with, delete & N/A\\
129 hotkey tree & off, open with, delete, insert
130 & N/A\\
131 }
126 sort files & alpha, oldest, newest, type & N/A\\ 132 sort files & alpha, oldest, newest, type & N/A\\
127 sort dirs & alpha, oldest, newest & N/A\\ 133 sort dirs & alpha, oldest, newest & N/A\\
128 sort interpret number & digits, numbers & N/A\\ 134 sort interpret number & digits, numbers & N/A\\
diff --git a/manual/configure_rockbox/hotkey_settings.tex b/manual/configure_rockbox/hotkey_settings.tex
index eac606716f..b38d72471d 100755
--- a/manual/configure_rockbox/hotkey_settings.tex
+++ b/manual/configure_rockbox/hotkey_settings.tex
@@ -3,14 +3,11 @@
3\section{\label{ref:HotkeySettings}Hotkey} 3\section{\label{ref:HotkeySettings}Hotkey}
4 4
5 \begin{description} 5 \begin{description}
6 \item[View Hotkey Settings.] 6 \item[WPS Hotkey.]
7 This option brings up a screen listing the current assignment associated 7 \item[File Browser Hotkey.]
8 with each hotkey. 8 These options set the hotkey function for their respective screens
9 9 (see \reference{ref:Hotkeys}). The default for the WPS screen is
10 \item[Reset Settings.] 10 \setting{View Playlist}. The File Browser default is \setting{Off}.
11 This option sets all hotkeys to their default assignments. The default
12 for the WPS screen is View Playlist. The File Browser hotkey has no
13 default assignment.
14 11
15 \end{description} 12 \end{description}
16 13
diff --git a/manual/rockbox_interface/browsing_and_playing.tex b/manual/rockbox_interface/browsing_and_playing.tex
index e7bbc5c585..c087036a6b 100644
--- a/manual/rockbox_interface/browsing_and_playing.tex
+++ b/manual/rockbox_interface/browsing_and_playing.tex
@@ -137,11 +137,6 @@ or directory and access the context menu with \ActionStdContext{}.\\
137for files. If the \setting{Context Menu} is invoked on a directory, 137for files. If the \setting{Context Menu} is invoked on a directory,
138it will display options for directories.\\} 138it will display options for directories.\\}
139 139
140\opt{hotkey}{
141Some of these options can be set to the \setting{Hotkey} (see \reference{ref:Hotkeys})
142for that context by pressing \ActionWpsHotkey.\\
143}
144
145The \setting{Context Menu} contains the following options (unless otherwise noted, 140The \setting{Context Menu} contains the following options (unless otherwise noted,
146each option pertains both to files and directories): 141each option pertains both to files and directories):
147 142
@@ -167,11 +162,10 @@ each option pertains both to files and directories):
167 not to directories. Rockbox will ask for confirmation before deleting a file. 162 not to directories. Rockbox will ask for confirmation before deleting a file.
168 Press \ActionYesNoAccept{} 163 Press \ActionYesNoAccept{}
169 to confirm deletion or any other key to cancel. 164 to confirm deletion or any other key to cancel.
170 \opt{hotkey}{\setting{Hotkey}able (see \reference{ref:Hotkeys}).}
171\item [Delete Directory.] 165\item [Delete Directory.]
172 Deletes the currently selected directory and all of the files and subdirectories 166 Deletes the currently selected directory and all of the files and subdirectories
173 it may contain. Deleted directories cannot be recovered. Use this feature with 167 it may contain. Deleted directories cannot be recovered. Use this feature with
174 caution! \opt{hotkey}{\setting{Hotkey}able (see \reference{ref:Hotkeys}).} 168 caution!
175\opt{lcd_non-mono}{ 169\opt{lcd_non-mono}{
176\item [Set As Backdrop.] 170\item [Set As Backdrop.]
177 Set the selected \fname{bmp} file as background image. The bitmaps need to meet the 171 Set the selected \fname{bmp} file as background image. The bitmaps need to meet the
@@ -185,7 +179,7 @@ each option pertains both to files and directories):
185 For example, this function can be used to view a text file 179 For example, this function can be used to view a text file
186 even if the file has a non-standard extension (i.e., the file has an extension 180 even if the file has a non-standard extension (i.e., the file has an extension
187 of something other than \fname{.txt}). See \reference{ref:Viewersplugins} 181 of something other than \fname{.txt}). See \reference{ref:Viewersplugins}
188 for more details on viewers. \opt{hotkey}{\setting{Hotkey}able (see \reference{ref:Hotkeys}).} 182 for more details on viewers.
189\item [Create Directory.] 183\item [Create Directory.]
190 Create a new directory in the current directory on the disk. 184 Create a new directory in the current directory on the disk.
191\item [Properties.] 185\item [Properties.]
diff --git a/manual/rockbox_interface/hotkeys.tex b/manual/rockbox_interface/hotkeys.tex
index b1d1f23f0d..56dafa9589 100644
--- a/manual/rockbox_interface/hotkeys.tex
+++ b/manual/rockbox_interface/hotkeys.tex
@@ -1,26 +1,18 @@
1% $Id$ % 1% $Id$ %
2\opt{hotkey}{ 2\opt{hotkey}{
3 \section{\label{ref:Hotkeys}Hotkeys} 3 \section{\label{ref:Hotkeys}Hotkeys}
4 Hotkeys are user-assignable shortcut keys to functions within the 4 Hotkeys are shortcut keys for use in the \setting{File Browser}
5 \setting{File Browser} and \setting{WPS} context menus. To use one, 5 and \setting{WPS} screens. To use one, press \ActionWpsHotkey{}
6 press \ActionWpsHotkey{} within the \setting{File Browser} or 6 within the \setting{File Browser} or \setting{WPS} screens.
7 \setting{WPS} screens. The assigned function will launch with 7 The assigned function will launch with reference to the current
8 reference to the current file or directory, if applicable. Each 8 file or directory, if applicable. Each screen has its own
9 screen has its own assignment. If there is no assignment for 9 assignment. If there is no assignment for a given screen,
10 a given screen, the message ``No Hotkey Set'' appears briefly. 10 the hotkey is ignored.
11 11
12 There is no default assignment for the File Browser hotkey, but the WPS 12 The default assignment for the File Browser hotkey is
13 hotkey defaults to ``View Playlist''. 13 \setting{Off}, but the WPS hotkey defaults to
14 \setting{View Playlist}.
14 15
15 To change the assignment of a hotkey, go into the associated 16 The hotkey assignments are changed in the Hotkey menu (see
16 context menu from the File Browser or WPS screen by pressing 17 \reference{ref:HotkeySettings}) under \setting{General Settings}.
17 \ActionWpsContext, then highlighting the function you wish to assign.
18 Press the hotkey (\ActionWpsHotkey) and if the function you've chosen
19 is assignable a confirmation dialog screen will appear. Press
20 \ActionYesNoAccept{} to confirm the assignment or anything else to reject
21 it. If accepted, you'll see a short message confirming your choice.
22
23 You can view the current assignments and reset to the default assignments
24 from the Hotkey menu under \setting{General Settings}. See
25 \reference{ref:HotkeySettings} for details.
26} 18}
diff --git a/manual/rockbox_interface/wps.tex b/manual/rockbox_interface/wps.tex
index 4f4e5cc626..824370b0ab 100644
--- a/manual/rockbox_interface/wps.tex
+++ b/manual/rockbox_interface/wps.tex
@@ -209,9 +209,7 @@ your WPS (While Playing Screen).
209} 209}
210\subsection{\label{sec:contextmenu}The WPS Context Menu} 210\subsection{\label{sec:contextmenu}The WPS Context Menu}
211Like the context menu for the \setting{File Browser}, the \setting{WPS Context Menu} 211Like the context menu for the \setting{File Browser}, the \setting{WPS Context Menu}
212allows you quick access to some often used functions. \opt{hotkey}{ 212allows you quick access to some often used functions.
213Some of these options can be set to the \setting{Hotkey} (see \reference{ref:Hotkeys})
214for that context by pressing \ActionWpsHotkey.}
215 213
216\subsubsection{Playlist} 214\subsubsection{Playlist}
217The \setting{Playlist} submenu allows you to view, save, search and 215The \setting{Playlist} submenu allows you to view, save, search and
@@ -268,8 +266,7 @@ This allows you to create a bookmark in the currently-playing track.
268This screen is accessible from the WPS screen, and provides a detailed view of 266This screen is accessible from the WPS screen, and provides a detailed view of
269all the identity information about the current track. This info is known as 267all the identity information about the current track. This info is known as
270meta data and is stored in audio file formats to keep information on artist, 268meta data and is stored in audio file formats to keep information on artist,
271album etc. \opt{hotkey}{\setting{Hotkey}able from the \setting{WPS Context 269album etc. To access this screen, %
272Menu} (see \reference{ref:Hotkeys}).} To access this screen, %
273\opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IRIVER_H10_PAD,% 270\opt{RECORDER_PAD,IRIVER_H100_PAD,IRIVER_H300_PAD,IRIVER_H10_PAD,%
274 SANSA_C200_PAD,SANSA_E200_PAD,SANSA_FUZE_PAD}{ 271 SANSA_C200_PAD,SANSA_E200_PAD,SANSA_FUZE_PAD}{
275 press \ActionWpsIdThreeScreen. }% 272 press \ActionWpsIdThreeScreen. }%
@@ -283,20 +280,19 @@ Menu} (see \reference{ref:Hotkeys}).} To access this screen, %
283\subsubsection{Open With...} 280\subsubsection{Open With...}
284This \setting{Open With} function is the same as the \setting{Open With} 281This \setting{Open With} function is the same as the \setting{Open With}
285function in the file browser's \setting{Context Menu}. 282function in the file browser's \setting{Context Menu}.
286\opt{hotkey}{\setting{Hotkey}able (see \reference{ref:Hotkeys}).}
287 283
288\subsubsection{Delete} 284\subsubsection{Delete}
289Delete the currently playing file. The file will be deleted but the playback 285Delete the currently playing file. The file will be deleted but the playback
290of the file will not stop immediately. Instead, the part of the file that 286of the file will not stop immediately. Instead, the part of the file that
291has already been buffered (i.e. read into the \daps\ memory) will be played. 287has already been buffered (i.e. read into the \daps\ memory) will be played.
292This may even be the whole track. \opt{hotkey}{\setting{Hotkey}able (see \reference{ref:Hotkeys}).} 288This may even be the whole track.
293 289
294\opt{pitchscreen}{ 290\opt{pitchscreen}{
295 \subsubsection{\label{sec:pitchscreen}Pitch} 291 \subsubsection{\label{sec:pitchscreen}Pitch}
296 292
297 The \setting{Pitch Screen} allows you to change the rate of playback 293 The \setting{Pitch Screen} allows you to change the rate of playback
298 (i.e. the playback speed and at the same time the pitch) of your 294 (i.e. the playback speed and at the same time the pitch) of your
299 \dap. \opt{hotkey}{\setting{Hotkey}able (see \reference{ref:Hotkeys}).} The rate value can be adjusted 295 \dap. The rate value can be adjusted
300 between 50\% and 200\%. 50\% means half the normal playback speed and a 296 between 50\% and 200\%. 50\% means half the normal playback speed and a
301 pitch that is an octave lower than the normal pitch. 200\% means double 297 pitch that is an octave lower than the normal pitch. 200\% means double
302 playback speed and a pitch that is an octave higher than the normal pitch. 298 playback speed and a pitch that is an octave higher than the normal pitch.
diff --git a/manual/working_with_playlists/main.tex b/manual/working_with_playlists/main.tex
index a45eb47b96..311aa86071 100644
--- a/manual/working_with_playlists/main.tex
+++ b/manual/working_with_playlists/main.tex
@@ -93,7 +93,6 @@ options:
93 \setting{Insert}, new tracks will be added immediately after the current 93 \setting{Insert}, new tracks will be added immediately after the current
94 playing track. If playback is stopped a new dynamic playlist will get 94 playing track. If playback is stopped a new dynamic playlist will get
95 created with the selected tracks. 95 created with the selected tracks.
96 \opt{hotkey}{\setting{Hotkey}able (see \reference{ref:Hotkeys}).}
97 96
98\item [Insert Next.] Add track(s) immediately after current playing 97\item [Insert Next.] Add track(s) immediately after current playing
99 track, no matter what else has been inserted. 98 track, no matter what else has been inserted.