From 9a7a542de2cac4293a7834ecaebaa4dd14206683 Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Tue, 15 Jun 2010 08:38:23 +0000 Subject: [PATCH] first step of making touch regions usable in all skins, not just the WPS.. no user viewable changes just yet git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26854 a1c6a512-1295-4272-9138-f99709370657 --- apps/action.h | 1 + apps/gui/skin_engine/skin_parser.c | 29 +++++++++++++++++++++-------- apps/gui/wps.c | 20 ++++++++++++++++++++ 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/apps/action.h b/apps/action.h index 8e93f30d2a..afaf73e1c9 100644 --- a/apps/action.h +++ b/apps/action.h @@ -106,6 +106,7 @@ enum { ACTION_STD_QUICKSCREEN, ACTION_STD_KEYLOCK, ACTION_STD_REC, + ACTION_STD_HOTKEY, ACTION_F3, /* just so everything works again, possibly change me */ /* code context actions */ diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index 365a1e6a26..d5a5f46cb0 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c @@ -1497,16 +1497,29 @@ static int parse_albumart_display(const char *wps_bufptr, struct touchaction {const char* s; int action;}; static const struct touchaction touchactions[] = { - {"play", ACTION_WPS_PLAY }, {"stop", ACTION_WPS_STOP }, - {"prev", ACTION_WPS_SKIPPREV }, {"next", ACTION_WPS_SKIPNEXT }, - {"ffwd", ACTION_WPS_SEEKFWD }, {"rwd", ACTION_WPS_SEEKBACK }, - {"menu", ACTION_WPS_MENU }, {"browse", ACTION_WPS_BROWSE }, + /* generic actions, convert to screen actions on use */ + {"prev", ACTION_STD_PREV }, {"next", ACTION_STD_NEXT }, + {"rwd", ACTION_STD_PREVREPEAT }, {"ffwd", ACTION_STD_PREVREPEAT }, + {"hotkey", ACTION_STD_HOTKEY}, {"select", ACTION_STD_OK }, + {"menu", ACTION_STD_MENU }, {"cancel", ACTION_STD_CANCEL }, + {"contextmenu", ACTION_STD_CONTEXT},{"quickscreen", ACTION_STD_QUICKSCREEN }, + /* not really WPS specific, but no equivilant ACTION_STD_* */ + {"voldown", ACTION_WPS_VOLDOWN}, {"volup", ACTION_WPS_VOLUP}, + + /* WPS specific actions */ + {"browse", ACTION_WPS_BROWSE }, + {"play", ACTION_WPS_PLAY }, {"stop", ACTION_WPS_STOP }, {"shuffle", ACTION_TOUCH_SHUFFLE }, {"repmode", ACTION_TOUCH_REPMODE }, - {"quickscreen", ACTION_WPS_QUICKSCREEN },{"contextmenu", ACTION_WPS_CONTEXT }, - {"playlist", ACTION_WPS_VIEW_PLAYLIST }, {"pitch", ACTION_WPS_PITCHSCREEN}, - {"voldown", ACTION_WPS_VOLDOWN}, {"volup", ACTION_WPS_VOLUP}, - {"hotkey", ACTION_WPS_HOTKEY} + {"pitch", ACTION_WPS_PITCHSCREEN}, {"playlist", ACTION_WPS_VIEW_PLAYLIST }, + +#if CONFIG_TUNER + /* FM screen actions */ + /* Also allow browse, play, stop from WPS codes */ + {"mode", ACTION_FM_MODE }, {"record", ACTION_FM_RECORD }, + {"presets", ACTION_FM_PRESET}, +#endif }; + static int parse_touchregion(const char *wps_bufptr, struct wps_token *token, struct wps_data *wps_data) { diff --git a/apps/gui/wps.c b/apps/gui/wps.c index 33e9b2167f..0c7975a01a 100644 --- a/apps/gui/wps.c +++ b/apps/gui/wps.c @@ -728,8 +728,28 @@ int wps_get_touchaction(struct wps_data *data) if (released) wps_disarm_touchregions(data); + /* Now we need to convert buttons to the WPS context */ + switch (returncode) + { + case ACTION_STD_PREV: + return ACTION_WPS_SKIPPREV; + case ACTION_STD_PREVREPEAT: + return ACTION_WPS_SEEKBACK; + case ACTION_STD_NEXT: + return ACTION_WPS_SKIPNEXT; + case ACTION_STD_NEXTREPEAT: + return ACTION_WPS_SEEKFWD; + case ACTION_STD_MENU: + return ACTION_WPS_MENU; + case ACTION_STD_CONTEXT: + return ACTION_WPS_CONTEXT; + case ACTION_STD_QUICKSCREEN: + return ACTION_WPS_QUICKSCREEN; + } + if (returncode != ACTION_NONE) return returncode; + if ((last_action == ACTION_WPS_SEEKBACK || last_action == ACTION_WPS_SEEKFWD)) return ACTION_WPS_STOPSEEK;