]> git.sesse.net Git - vlc/blobdiff - modules/control/hotkeys.c
* modules/control/hotkeys.c: nawak.
[vlc] / modules / control / hotkeys.c
index 6903197afc2b0f23dcc04fed9294e2b03b515a3f..66cbf83190de2c92314de3cb93f23fda4fdebb7c 100644 (file)
@@ -339,15 +339,22 @@ static void Run( intf_thread_t *p_intf )
         {
             val.i_int = PLAYING_S;
             if( p_input )
-            {
-                var_Get( p_input, "state", &val );
-            }
-            if( p_input && val.i_int != PAUSE_S )
             {
                 ClearChannels( p_intf, p_vout );
-                vout_OSDIcon( VLC_OBJECT( p_intf ), DEFAULT_CHAN,
-                              OSD_PAUSE_ICON );
-                val.i_int = PAUSE_S;
+
+                var_Get( p_input, "state", &val );
+                if( val.i_int != PAUSE_S )
+                {
+                    vout_OSDIcon( VLC_OBJECT( p_intf ), DEFAULT_CHAN,
+                                  OSD_PAUSE_ICON );
+                    val.i_int = PAUSE_S;
+                }
+                else
+                {
+                    vout_OSDIcon( VLC_OBJECT( p_intf ), DEFAULT_CHAN,
+                                  OSD_PLAY_ICON );
+                    val.i_int = PLAYING_S;
+                }
                 var_Set( p_input, "state", val );
             }
             else
@@ -356,9 +363,6 @@ static void Run( intf_thread_t *p_intf )
                                               FIND_ANYWHERE );
                 if( p_playlist )
                 {
-                    ClearChannels( p_intf, p_vout );
-                    vout_OSDIcon( VLC_OBJECT( p_intf ), DEFAULT_CHAN,
-                                  OSD_PLAY_ICON );
                     playlist_Play( p_playlist );
                     vlc_object_release( p_playlist );
                 }
@@ -375,11 +379,15 @@ static void Run( intf_thread_t *p_intf )
 
             if( i_action == ACTIONID_PAUSE )
             {
-                ClearChannels( p_intf, p_vout );
-                vout_OSDIcon( VLC_OBJECT( p_intf ), DEFAULT_CHAN,
-                              OSD_PAUSE_ICON );
-                val.i_int = PAUSE_S;
-                var_Set( p_input, "state", val );
+                var_Get( p_input, "state", &val );
+                if( val.i_int != PAUSE_S )
+                {
+                    ClearChannels( p_intf, p_vout );
+                    vout_OSDIcon( VLC_OBJECT( p_intf ), DEFAULT_CHAN,
+                                  OSD_PAUSE_ICON );
+                    val.i_int = PAUSE_S;
+                    var_Set( p_input, "state", val );
+                }
             }
             else if( i_action == ACTIONID_JUMP_BACKWARD_EXTRASHORT
                      && b_seekable )
@@ -589,6 +597,79 @@ static void Run( intf_thread_t *p_intf )
                 }
                 free( val.psz_string );
             }
+            else if( ( i_action == ACTIONID_ZOOM || i_action == ACTIONID_UNZOOM ) && p_vout )
+            {
+                vlc_value_t val={0}, val_list, text_list;
+                var_Get( p_vout, "zoom", &val );
+                if( var_Change( p_vout, "zoom", VLC_VAR_GETLIST,
+                                &val_list, &text_list ) >= 0 )
+                {
+                    int i;
+                    for( i = 0; i < val_list.p_list->i_count; i++ )
+                    {
+                        if( val_list.p_list->p_values[i].f_float
+                           == val.f_float )
+                        {
+                            if( i_action == ACTIONID_ZOOM )
+                                i++;
+                            else /* ACTIONID_UNZOOM */
+                                i--;
+                            break;
+                        }
+                    }
+                    if( i == val_list.p_list->i_count ) i = 0;
+                    if( i == -1 ) i = val_list.p_list->i_count-1;
+                    var_SetFloat( p_vout, "zoom",
+                                  val_list.p_list->p_values[i].f_float );
+                    vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN,
+                                     _("Zoom mode: %s"),
+                                text_list.p_list->p_values[i].var.psz_name );
+                }
+            }
+            else if( i_action == ACTIONID_CROP_TOP && p_vout )
+            {
+                int i_val = var_GetInteger( p_vout, "crop-top" );
+                var_SetInteger( p_vout, "crop-top", i_val+1 );
+            }
+            else if( i_action == ACTIONID_UNCROP_TOP && p_vout )
+            {
+                int i_val = var_GetInteger( p_vout, "crop-top" );
+                if( i_val != 0 )
+                    var_SetInteger( p_vout, "crop-top", i_val-1 );
+            }
+            else if( i_action == ACTIONID_CROP_BOTTOM && p_vout )
+            {
+                int i_val = var_GetInteger( p_vout, "crop-bottom" );
+                var_SetInteger( p_vout, "crop-bottom", i_val+1 );
+            }
+            else if( i_action == ACTIONID_UNCROP_BOTTOM && p_vout )
+            {
+                int i_val = var_GetInteger( p_vout, "crop-bottom" );
+                if( i_val != 0 )
+                    var_SetInteger( p_vout, "crop-bottom", i_val-1 );
+            }
+            else if( i_action == ACTIONID_CROP_LEFT && p_vout )
+            {
+                int i_val = var_GetInteger( p_vout, "crop-left" );
+                var_SetInteger( p_vout, "crop-left", i_val+1 );
+            }
+            else if( i_action == ACTIONID_UNCROP_LEFT && p_vout )
+            {
+                int i_val = var_GetInteger( p_vout, "crop-left" );
+                if( i_val != 0 )
+                    var_SetInteger( p_vout, "crop-left", i_val-1 );
+            }
+            else if( i_action == ACTIONID_CROP_RIGHT && p_vout )
+            {
+                int i_val = var_GetInteger( p_vout, "crop-right" );
+                var_SetInteger( p_vout, "crop-right", i_val+1 );
+            }
+            else if( i_action == ACTIONID_UNCROP_RIGHT && p_vout )
+            {
+                int i_val = var_GetInteger( p_vout, "crop-right" );
+                if( i_val != 0 )
+                    var_SetInteger( p_vout, "crop-right", i_val-1 );
+            }
             else if( i_action == ACTIONID_NEXT )
             {
                 p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
@@ -741,7 +822,7 @@ static void Run( intf_thread_t *p_intf )
                     {
                         ClearChannels( p_intf, p_vout );
                         vout_OSDIcon( VLC_OBJECT( p_intf ), DEFAULT_CHAN,
-                                      OSD_PAUSE_ICON );
+                                      OSD_PLAY_ICON );
                         playlist_Play( p_playlist );
                     }
                     vlc_object_release( p_playlist );
@@ -827,7 +908,7 @@ static int ActionKeyCB( vlc_object_t *p_this, char const *psz_var,
 static void PlayBookmark( intf_thread_t *p_intf, int i_num )
 {
     vlc_value_t val;
-    int i_position;
+    int i;
     char psz_bookmark_name[11];
     playlist_t *p_playlist =
         vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
@@ -839,12 +920,13 @@ static void PlayBookmark( intf_thread_t *p_intf, int i_num )
     if( p_playlist )
     {
         char *psz_bookmark = strdup( val.psz_string );
-        for( i_position = 0; i_position < p_playlist->i_size; i_position++)
+        for( i = 0; i < p_playlist->i_size; i++)
         {
             if( !strcmp( psz_bookmark,
-                         p_playlist->pp_items[i_position]->input.psz_uri ) )
+                         p_playlist->pp_items[i]->p_input->psz_uri ) )
             {
-                playlist_Goto( p_playlist, i_position );
+                playlist_LockControl( p_playlist, PLAYLIST_VIEWPLAY, NULL,
+                                      p_playlist->pp_items[i] );
                 break;
             }
         }
@@ -865,9 +947,9 @@ static void SetBookmark( intf_thread_t *p_intf, int i_num )
         if( p_playlist->status.p_item )
         {
             config_PutPsz( p_intf, psz_bookmark_name,
-                           p_playlist->status.p_item->input.psz_uri);
+                           p_playlist->status.p_item->p_input->psz_uri);
             msg_Info( p_intf, "setting playlist bookmark %i to %s", i_num,
-                           p_playlist->status.p_item->input.psz_uri);
+                           p_playlist->status.p_item->p_input->psz_uri);
             config_SaveConfigFile( p_intf, "hotkeys" );
         }
         vlc_object_release( p_playlist );