[vlc-commits] commit: ncurses: densify HandleKey() ( Rafaël Carré )

git at videolan.org git at videolan.org
Wed Oct 27 12:45:35 CEST 2010


vlc | branch: master | Rafaël Carré <rafael.carre at gmail.com> | Tue Oct 26 22:46:36 2010 +0200| [890ebe4a974cee5544bfa016ff1da6d7a07c5417] | committer: Rafaël Carré 

ncurses: densify HandleKey()

Use one line per switch label when it improves readability
Also explicit the sign of position increment even when positive so +x and -x are aligned

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=890ebe4a974cee5544bfa016ff1da6d7a07c5417
---

 modules/gui/ncurses.c |  213 +++++++++++++++----------------------------------
 1 files changed, 66 insertions(+), 147 deletions(-)

diff --git a/modules/gui/ncurses.c b/modules/gui/ncurses.c
index 176e320..66f88eb 100644
--- a/modules/gui/ncurses.c
+++ b/modules/gui/ncurses.c
@@ -1638,6 +1638,12 @@ static bool HandleBrowseKey(intf_thread_t *p_intf, int key)
     return true;
 }
 
+static void InputNavigate(input_thread_t* p_input, const char *var)
+{
+    if (p_input)
+        var_TriggerCallback(p_input, var);
+}
+
 static int HandleKey(intf_thread_t *p_intf)
 {
     intf_sys_t *p_sys = p_intf->p_sys;
@@ -1661,31 +1667,28 @@ static int HandleKey(intf_thread_t *p_intf)
              p_sys->i_box_type == BOX_META || p_sys->i_box_type == BOX_STATS ||
              p_sys->i_box_type == BOX_OBJECTS)
     {
+        bool ret = true;
         switch(i_key)
         {
-        case KEY_HOME:
-            p_sys->i_box_start = 0;
-            return 1;
 #ifdef __FreeBSD__
         case KEY_SELECT:
 #endif
-        case KEY_END:
-            p_sys->i_box_start = p_sys->i_box_lines_total - 1;
-            return 1;
-        case KEY_UP:
-            if (p_sys->i_box_start > 0) p_sys->i_box_start--;
-            return 1;
-        case KEY_DOWN:
-            if (p_sys->i_box_start < p_sys->i_box_lines_total - 1)
-                p_sys->i_box_start++;
-            return 1;
-        case KEY_PPAGE:
-            p_sys->i_box_start -= p_sys->i_box_lines;
-            if (p_sys->i_box_start < 0) p_sys->i_box_start = 0;
-            return 1;
-        case KEY_NPAGE:
-            p_sys->i_box_start += p_sys->i_box_lines;
-            if (p_sys->i_box_start >= p_sys->i_box_lines_total)
+        case KEY_END:  p_sys->i_box_start = p_sys->i_box_lines_total - 1; break;
+        case KEY_HOME: p_sys->i_box_start = 0;                            break;
+        case KEY_UP:   p_sys->i_box_start--;                              break;
+        case KEY_DOWN: p_sys->i_box_start++;                              break;
+        case KEY_PPAGE:p_sys->i_box_start -= p_sys->i_box_lines;          break;
+        case KEY_NPAGE:p_sys->i_box_start += p_sys->i_box_lines;          break;
+
+        default:
+            ret = false;
+            break;
+        }
+        if (ret)
+        {
+            if (p_sys->i_box_start < 0)
+                p_sys->i_box_start = 0;
+            if (p_sys->i_box_start > p_sys->i_box_lines_total - 1)
                 p_sys->i_box_start = p_sys->i_box_lines_total - 1;
             return 1;
         }
@@ -1694,21 +1697,13 @@ static int HandleKey(intf_thread_t *p_intf)
     {
         switch(i_key)
         {
-        case KEY_HOME:
-            ChangePosition(p_intf, -1.0);
-            return 1;
 #ifdef __FreeBSD__
         case KEY_SELECT:
 #endif
-        case KEY_END:
-            ChangePosition(p_intf, .99);
-            return 1;
-        case KEY_UP:
-            ChangePosition(p_intf, 0.05);
-            return 1;
-        case KEY_DOWN:
-            ChangePosition(p_intf, -0.05);
-            return 1;
+        case KEY_END:   ChangePosition(p_intf, +.99);   return 1;
+        case KEY_HOME:  ChangePosition(p_intf, -1.0);   return 1;
+        case KEY_UP:    ChangePosition(p_intf, +0.05);  return 1;
+        case KEY_DOWN:  ChangePosition(p_intf, -0.05);  return 1;
         }
     }
     else if (p_sys->i_box_type == BOX_SEARCH)
@@ -1821,7 +1816,6 @@ static int HandleKey(intf_thread_t *p_intf)
         return 1;
     }
 
-
     /* Common keys */
     switch(i_key)
     {
@@ -1835,68 +1829,37 @@ static int HandleKey(intf_thread_t *p_intf)
         libvlc_Quit(p_intf->p_libvlc);
         return 0;
 
-    /* Box switching */
-    case 'i':
-        BoxSwitch(p_sys, BOX_INFO);
-        p_sys->i_box_lines_total = 0;
-        break;
-    case 'm':
-        BoxSwitch(p_sys, BOX_META);
-        p_sys->i_box_lines_total = 0;
-        break;
-#if 0
-    case 'L':
-        BoxSwitch(p_sys, BOX_LOG)
-        break;
-#endif
-    case 'P':
-        BoxSwitch(p_sys, BOX_PLAYLIST);
-        break;
-    case 'B':
-        BoxSwitch(p_sys, BOX_BROWSE);
-        break;
-    case 'x':
-        BoxSwitch(p_sys, BOX_OBJECTS);
-        break;
-    case 'S':
-        BoxSwitch(p_sys, BOX_STATS);
-        break;
     case 'h':
-    case 'H':
-        BoxSwitch(p_sys, BOX_HELP);
-        p_sys->i_box_lines_total = 0;
-        break;
-    case '/':
-        if (p_sys->i_box_type != BOX_SEARCH && p_sys->psz_search_chain)
-        {
-            p_sys->psz_search_chain[0] = '\0';
-            p_sys->b_box_plidx_follow = false;
-            p_sys->i_before_search = p_sys->i_box_plidx;
-            p_sys->i_box_type = BOX_SEARCH;
-        }
-        break;
+    case 'H': BoxSwitch(p_sys, BOX_HELP);       return 1;
+    case 'i': BoxSwitch(p_sys, BOX_INFO);       return 1;
+    case 'm': BoxSwitch(p_sys, BOX_META);       return 1;
+//  case 'L': BoxSwitch(p_sys, BOX_LOG)         return 1;
+    case 'P': BoxSwitch(p_sys, BOX_PLAYLIST);   return 1;
+    case 'B': BoxSwitch(p_sys, BOX_BROWSE);     return 1;
+    case 'x': BoxSwitch(p_sys, BOX_OBJECTS);    return 1;
+    case 'S': BoxSwitch(p_sys, BOX_STATS);      return 1;
+
+    case '/': /* Search */
+        p_sys->psz_search_chain[0] = '\0';
+        p_sys->b_box_plidx_follow = false;
+        p_sys->i_before_search = p_sys->i_box_plidx;
+        p_sys->i_box_type = BOX_SEARCH;
+        return 1;
+
     case 'A': /* Open */
-        if (p_sys->i_box_type != BOX_OPEN)
-        {
-            p_sys->psz_open_chain[0] = '\0';
-            p_sys->i_box_type = BOX_OPEN;
-        }
-        break;
+        p_sys->psz_open_chain[0] = '\0';
+        p_sys->i_box_type = BOX_OPEN;
+        return 1;
 
     /* Navigation */
-    case KEY_RIGHT:
-        ChangePosition(p_intf, 0.01);
-        break;
-
-    case KEY_LEFT:
-        ChangePosition(p_intf, -0.01);
-        break;
+    case KEY_RIGHT: ChangePosition(p_intf, +0.01); return 1;
+    case KEY_LEFT:  ChangePosition(p_intf, -0.01); return 1;
 
     /* Common control */
     case 'f':
-        if (p_intf->p_sys->p_input)
+        if (p_sys->p_input)
         {
-            vout_thread_t *p_vout = input_GetVout(p_intf->p_sys->p_input);
+            vout_thread_t *p_vout = input_GetVout(p_sys->p_input);
             if (p_vout)
             {
                 bool fs = var_ToggleBool(p_playlist, "fullscreen");
@@ -1906,71 +1869,27 @@ static int HandleKey(intf_thread_t *p_intf)
         }
         return 0;
 
-    case ' ':
-        PlayPause(p_intf);
-        break;
-
-    case 's':
-        playlist_Stop(p_playlist);
-        break;
-
-    case 'e':
-        Eject(p_intf);
-        break;
-
-    case '[':
-        if (p_sys->p_input)
-            var_TriggerCallback(p_sys->p_input, "prev-title");
-        break;
-
-    case ']':
-        if (p_sys->p_input)
-            var_TriggerCallback(p_sys->p_input, "next-title");
-        break;
-
-    case '<':
-        if (p_sys->p_input)
-            var_TriggerCallback(p_sys->p_input, "prev-chapter");
-        break;
-
-    case '>':
-        if (p_sys->p_input)
-            var_TriggerCallback(p_sys->p_input, "next-chapter");
-        break;
-
-    case 'p':
-        playlist_Prev(p_playlist);
-        clear();
-        break;
+    case ' ': PlayPause(p_intf);            return 1;
+    case 's': playlist_Stop(p_playlist);    return 1;
+    case 'e': Eject(p_intf);                return 1;
 
-    case 'n':
-        playlist_Next(p_playlist);
-        clear();
-        break;
+    case '[': InputNavigate(p_sys->p_input, "prev-title");      return 1;
+    case ']': InputNavigate(p_sys->p_input, "next-title");      return 1;
+    case '<': InputNavigate(p_sys->p_input, "prev-chapter");    return 1;
+    case '>': InputNavigate(p_sys->p_input, "next-chapter");    return 1;
 
-    case 'a':
-        aout_VolumeUp(p_playlist, 1, NULL);
-        clear();
-        break;
-
-    case 'z':
-        aout_VolumeDown(p_playlist, 1, NULL);
-        clear();
-        break;
+    case 'p': playlist_Prev(p_playlist);            goto lclear;
+    case 'n': playlist_Next(p_playlist);            goto lclear;
+    case 'a': aout_VolumeUp(p_playlist, 1, NULL);   goto lclear;
+    case 'z': aout_VolumeDown(p_playlist, 1, NULL); goto lclear;
 
-    /*
-     * ^l should clear and redraw the screen
-     */
-    case KEY_CLEAR:
-    case 0x0c:          /* ^l */
-        clear();
-        break;
-
-    default:
-        return 0;
+lclear:
+    case 0x0c:  /* ^l */
+    case KEY_CLEAR:     clear(); return 1;
     }
 
-    return 1;
+    /* key not handled */
+    return 0;
 }
 
 /*****************************************************************************



More information about the vlc-commits mailing list