rc: add `random' command
authorRafaël Carré <funman@videolan.org>
Wed, 3 Oct 2007 23:26:01 +0000 (23:26 +0000)
committerRafaël Carré <funman@videolan.org>
Wed, 3 Oct 2007 23:26:01 +0000 (23:26 +0000)
modules/control/rc.c

index d09e1d2..230a8ab 100644 (file)
@@ -369,6 +369,7 @@ static void RegisterCallbacks( intf_thread_t *p_intf )
     ADD( "add", STRING, Playlist )
     ADD( "repeat", STRING, Playlist )
     ADD( "loop", STRING, Playlist )
+    ADD( "random", STRING, Playlist )
     ADD( "enqueue", STRING, Playlist )
     ADD( "playlist", VOID, Playlist )
     ADD( "sort", VOID, Playlist )
@@ -847,8 +848,9 @@ static void Help( intf_thread_t *p_intf, vlc_bool_t b_longhelp)
     msg_rc(_("| prev . . . . . . . . . . . .  previous playlist item"));
     msg_rc(_("| goto . . . . . . . . . . . . . .  goto item at index"));
     msg_rc(_("| repeat [on|off] . . . .  toggle playlist item repeat"));
-    msg_rc(_("| loop [on|off] . . . . . .  toggle playlist item loop"));
-    msg_rc(_("| clear . . . . . . . . . . . . .   clear the playlist"));
+    msg_rc(_("| loop [on|off] . . . . . . . . . toggle playlist loop"));
+    msg_rc(_("| random [on|off] . . . . . . .  toggle random jumping"));
+    msg_rc(_("| clear . . . . . . . . . . . . . . clear the playlist"));
     msg_rc(_("| status . . . . . . . . . . . current playlist status"));
     msg_rc(_("| title [X]  . . . . . . set/get title in current item"));
     msg_rc(_("| title_n  . . . . . . . .  next title in current item"));
@@ -1341,6 +1343,28 @@ static int Playlist( vlc_object_t *p_this, char const *psz_cmd,
         }
         msg_rc( "Setting loop to %d", val.b_bool );
     }
+    else if( !strcmp( psz_cmd, "random" ) )
+    {
+        vlc_bool_t b_update = VLC_TRUE;
+
+        var_Get( p_playlist, "random", &val );
+
+        if( strlen( newval.psz_string ) > 0 )
+        {
+            if ( ( !strncmp( newval.psz_string, "on", 2 ) && ( val.b_bool == VLC_TRUE ) ) ||
+                 ( !strncmp( newval.psz_string, "off", 3 ) && ( val.b_bool == VLC_FALSE ) ) )
+            {
+                b_update = VLC_FALSE;
+            }
+        }
+
+        if ( b_update )
+        {
+            val.b_bool = !val.b_bool;
+            var_Set( p_playlist, "random", val );
+        }
+        msg_rc( "Setting random to %d", val.b_bool );
+    }
     else if (!strcmp( psz_cmd, "goto" ) )
     {
         int i_pos = atoi( newval.psz_string );