First benefits of QT ! A slider ! (Refs:#80)
authorClément Stenac <zorglub@videolan.org>
Wed, 31 May 2006 21:04:26 +0000 (21:04 +0000)
committerClément Stenac <zorglub@videolan.org>
Wed, 31 May 2006 21:04:26 +0000 (21:04 +0000)
modules/gui/qt4/input_manager.cpp
modules/gui/qt4/main_interface.cpp
modules/gui/qt4/main_interface.hpp
modules/gui/qt4/util/input_slider.cpp
modules/gui/qt4/util/input_slider.hpp

index 80b6b97..b4d272e 100644 (file)
@@ -65,4 +65,6 @@ void InputManager::update()
 
 void InputManager::sliderUpdate( float new_pos )
 {
+   fprintf( stderr, "Seek to %f\n", new_pos );
+   var_SetFloat( p_input, "position", new_pos );
 }
index 4a5c065..2d559fb 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "main_interface.hpp"
 #include "input_manager.hpp"
+#include "util/input_slider.hpp"
 #include "dialogs_provider.hpp"
 #include <QCloseEvent>
 #include <assert.h>
@@ -32,6 +33,7 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) :
     fprintf( stderr, "QT Main interface\n" );
 
     /* Init UI */
+    slider = new InputSlider( Qt::Horizontal, this ); slider->init();
 
     /* Init input manager */
     p_input = NULL;
@@ -48,7 +50,11 @@ void MainInterface::init()
                    main_input_manager, SLOT( setInput( input_thread_t * ) ) );
 
     /* Connect the slider and the input manager */
-    // both ways 
+    QObject::connect( main_input_manager, SIGNAL(positionUpdated(
+                      float, int, int ) ), slider, SLOT( setPosition( float,int,
+                      int ) ) );
+    QObject::connect( slider, SIGNAL( sliderDragged( float ) ),
+                      main_input_manager, SLOT( sliderUpdate( float ) ) );
 
     /* Connect the display and the input manager */
 }
index e609cf1..579e14c 100644 (file)
@@ -28,6 +28,7 @@
 
 class InputManager;
 class QCloseEvent;
+class InputSlider;
 
 class MainInterface : public QWidget
 {
@@ -40,6 +41,7 @@ protected:
     void closeEvent( QCloseEvent *);
 private:
     InputManager *main_input_manager;
+    InputSlider *slider;
     intf_thread_t *p_intf;
     /// Main input associated to the playlist
     input_thread_t *p_input;
index 09050dc..b23af1b 100644 (file)
 
 void InputSlider::init()
 {
+    mymove = false;
     setMinimum( 0 );
     setMaximum( 1000 );
     setSingleStep( 2 );
-    setPageStep( 100 );
+    setPageStep( 1000 );
     setTracking( true );
     QObject::connect( this, SIGNAL( valueChanged(int) ), this,
                       SLOT( userDrag( int ) ) );
@@ -36,11 +37,18 @@ void InputSlider::init()
 
 void InputSlider::setPosition( float pos, int a, int b )
 {
+    fprintf( stderr, "Set pos %f\n", pos );
+    mymove = true;
     setValue( (int)(pos * 1000.0 ) );
+    mymove = false;
 }
 
 void InputSlider::userDrag( int new_value )
 {
     float f_pos = (float)(new_value)/1000.0;
-    emit positionUpdated( f_pos );
+    if( !mymove )
+    {
+        fprintf( stderr, "Emitting %f\n", f_pos );
+        emit sliderDragged( f_pos );
+    }
 }
index b4618e6..04ed3b5 100644 (file)
@@ -34,11 +34,13 @@ public:
     {};
     virtual ~InputSlider()   {};
     void init();
+private:
+    bool mymove;
 public slots:
     void setPosition( float, int, int );
 private slots:
     void userDrag( int );
 signals:
-    void positionUpdated( float );
+    void sliderDragged( float );
 };
 #endif