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
diff --git a/apps/action.h b/apps/action.h
index 8e93f30..afaf73e 100644
--- a/apps/action.h
+++ b/apps/action.h
@@ -106,6 +106,7 @@
     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 365a1e6..d5a5f46 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -1497,16 +1497,29 @@
 
 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 33e9b21..0c7975a 100644
--- a/apps/gui/wps.c
+++ b/apps/gui/wps.c
@@ -728,8 +728,28 @@
     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;