]> git.sesse.net Git - vlc/commitdiff
Manage navigation buttons, status and text
authorClément Stenac <zorglub@videolan.org>
Thu, 1 Jun 2006 14:46:26 +0000 (14:46 +0000)
committerClément Stenac <zorglub@videolan.org>
Thu, 1 Jun 2006 14:46:26 +0000 (14:46 +0000)
modules/gui/qt4/input_manager.cpp
modules/gui/qt4/input_manager.hpp
modules/gui/qt4/util/input_slider.cpp

index 96075a4ea6b45f9aa86785dbcbcfffcae1772a57..1ff6f17460b3391300a04e76ff809bce32cb9be8 100644 (file)
@@ -46,19 +46,57 @@ void InputManager::setInput( input_thread_t *_p_input )
 
 void InputManager::update()
 {
+    /// \todo Emit the signals only if it changed
     if( !p_input || p_input->b_die ) return;
 
     if( p_input->b_dead )
     {
         emit positionUpdated( 0.0, 0, 0 );
+       emit navigationChanged( 0 );
+       emit statusChanged( 0 ); // 0 = STOPPED, 1 = PAUSE, 2 = PLAY
     }
+
+    /* Update position */
     mtime_t i_length, i_time;
     float f_pos;
     i_length = var_GetTime( p_input, "length" ) / 1000000;
     i_time = var_GetTime( p_input, "time") / 1000000;
     f_pos = var_GetFloat( p_input, "position" );
-
     emit positionUpdated( f_pos, i_time, i_length );
+
+    /* Update disc status */
+    vlc_value_t val;
+    var_Change( p_input, "title", VLC_VAR_CHOICESCOUNT, &val, NULL );
+    if( val.i_int > 0 )
+    {
+        vlc_value_t val;
+        var_Change( p_input, "chapter", VLC_VAR_CHOICESCOUNT, &val, NULL );
+       if( val.i_int > 0 )
+           emit navigationChanged( 1 ); // 1 = chapter, 2 = title, 3 = NO
+       else
+           emit navigationChanged( 2 );
+    }
+    else
+    {
+       emit navigationChanged( 0 );
+    }
+
+    /* Update text */
+    QString text;
+    if( p_input->input.p_item->p_meta &&
+        p_input->input.p_item->p_meta->psz_nowplaying &&
+        *p_input->input.p_item->p_meta->psz_nowplaying )
+    {
+       text.sprintf( "%s - %s", 
+                     p_input->input.p_item->p_meta->psz_nowplaying,
+                     p_input->input.p_item->psz_name );
+    }
+    else
+    {
+       text.sprintf( "%s", p_input->input.p_item->psz_name );
+    }
+    emit nameChanged( text );
+
 }
 
 void InputManager::sliderUpdate( float new_pos )
index c5e0cc49e10783f9c1e5bfb5832fa58beae4beff..a1307b7b847f5fcd0e5e98bd1597929cf3503004 100644 (file)
@@ -45,6 +45,9 @@ public slots:
 signals:
     /// Send new position, new time and new length
     void positionUpdated( float , int, int );
+    void nameChanged( QString );
+    void navigationChanged( int );
+    void statusChanged( int );
 };
 
 
index 4a740677dd0bb2ecce1fe2f624e61e9e4d359178..a474381105dddbbab627190eec1f770854bfb264 100644 (file)
@@ -43,9 +43,17 @@ InputSlider::InputSlider( Qt::Orientation q,QWidget *_parent ) :
 
 void InputSlider::setPosition( float pos, int a, int b )
 {
-    mymove = true;
-    setValue( (int)(pos * 1000.0 ) );
-    mymove = false;
+    if( pos == 0.0 )
+    {
+       setEnabled( false );
+    }
+    else
+    {
+       setEnabled( true );
+       mymove = true;
+       setValue( (int)(pos * 1000.0 ) );
+       mymove = false;
+    }
 }
 
 void InputSlider::userDrag( int new_value )