Commit 7def61c8 authored by Francois Cartegnie's avatar Francois Cartegnie

Qt: add chapters to SeekSlider

parent f2038037
...@@ -42,6 +42,8 @@ ...@@ -42,6 +42,8 @@
#include "util/input_slider.hpp" /* SeekSlider */ #include "util/input_slider.hpp" /* SeekSlider */
#include "util/customwidgets.hpp" /* qEventToKey */ #include "util/customwidgets.hpp" /* qEventToKey */
#include "adapters/seekpoints.hpp"
#include <QToolButton> #include <QToolButton>
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QRegion> #include <QRegion>
...@@ -340,6 +342,9 @@ QWidget *AbstractController::createWidget( buttonType_e button, int options ) ...@@ -340,6 +342,9 @@ QWidget *AbstractController::createWidget( buttonType_e button, int options )
break; break;
case INPUT_SLIDER: { case INPUT_SLIDER: {
SeekSlider *slider = new SeekSlider( Qt::Horizontal, NULL ); SeekSlider *slider = new SeekSlider( Qt::Horizontal, NULL );
SeekPoints *chapters = new SeekPoints( this, p_intf );
CONNECT( THEMIM->getIM(), titleChanged( bool ), chapters, update() );
slider->setChapters( chapters );
/* Update the position when the IM has changed */ /* Update the position when the IM has changed */
CONNECT( THEMIM->getIM(), positionUpdated( float, int64_t, int ), CONNECT( THEMIM->getIM(), positionUpdated( float, int64_t, int ),
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "qt4.hpp" #include "qt4.hpp"
#include "util/input_slider.hpp" #include "util/input_slider.hpp"
#include "adapters/seekpoints.hpp"
#include <QPaintEvent> #include <QPaintEvent>
#include <QPainter> #include <QPainter>
...@@ -52,6 +53,7 @@ SeekSlider::SeekSlider( Qt::Orientation q, QWidget *_parent ) ...@@ -52,6 +53,7 @@ SeekSlider::SeekSlider( Qt::Orientation q, QWidget *_parent )
{ {
b_isSliding = false; b_isSliding = false;
f_buffering = 1.0; f_buffering = 1.0;
chapters = NULL;
/* Timer used to fire intermediate updatePos() when sliding */ /* Timer used to fire intermediate updatePos() when sliding */
seekLimitTimer = new QTimer( this ); seekLimitTimer = new QTimer( this );
...@@ -78,6 +80,23 @@ SeekSlider::SeekSlider( Qt::Orientation q, QWidget *_parent ) ...@@ -78,6 +80,23 @@ SeekSlider::SeekSlider( Qt::Orientation q, QWidget *_parent )
mTimeTooltip->installEventFilter( this ); mTimeTooltip->installEventFilter( this );
} }
SeekSlider::~SeekSlider()
{
delete chapters;
}
/***
* \brief Sets the chapters seekpoints adapter
*
* \params SeekPoints initilized with current intf thread
***/
void SeekSlider::setChapters( SeekPoints *chapters_ )
{
delete chapters;
chapters = chapters_;
chapters->setParent( this );
}
/*** /***
* \brief Main public method, superseeding setValue. Disabling the slider when neeeded * \brief Main public method, superseeding setValue. Disabling the slider when neeeded
* *
...@@ -330,9 +349,26 @@ void SeekSlider::paintEvent( QPaintEvent *event ) ...@@ -330,9 +349,26 @@ void SeekSlider::paintEvent( QPaintEvent *event )
painter.drawRoundedRect( innerRect, barCorner, barCorner ); painter.drawRoundedRect( innerRect, barCorner, barCorner );
} }
// draw handle
if ( option.state & QStyle::State_MouseOver ) if ( option.state & QStyle::State_MouseOver )
{ {
/* draw chapters tickpoints */
if ( chapters && inputLength && size().width() )
{
if ( orientation() == Qt::Horizontal ) /* TODO: vertical */
{
QList<SeekPoint> points = chapters->getPoints();
foreach( SeekPoint point, points )
{
int x = point.time / 1000000.0 / inputLength * size().width();
painter.setPen( QColor( 80, 80, 80 ) );
painter.setBrush( Qt::NoBrush );
painter.drawLine( x, 0, x, 3 );
painter.drawLine( x, height(), x, height() - 3 );
}
}
}
// draw handle
if ( sliderPos != -1 ) if ( sliderPos != -1 )
{ {
const int margin = 0; const int margin = 0;
......
...@@ -36,6 +36,7 @@ class QMouseEvent; ...@@ -36,6 +36,7 @@ class QMouseEvent;
class QWheelEvent; class QWheelEvent;
class QHideEvent; class QHideEvent;
class QTimer; class QTimer;
class SeekPoints;
/* Input Slider derived from QSlider */ /* Input Slider derived from QSlider */
class SeekSlider : public QSlider class SeekSlider : public QSlider
...@@ -44,6 +45,8 @@ class SeekSlider : public QSlider ...@@ -44,6 +45,8 @@ class SeekSlider : public QSlider
public: public:
SeekSlider( QWidget *_parent ); SeekSlider( QWidget *_parent );
SeekSlider( Qt::Orientation q, QWidget *_parent ); SeekSlider( Qt::Orientation q, QWidget *_parent );
~SeekSlider();
void setChapters( SeekPoints * );
protected: protected:
virtual void mouseMoveEvent( QMouseEvent *event ); virtual void mouseMoveEvent( QMouseEvent *event );
...@@ -67,6 +70,7 @@ private: ...@@ -67,6 +70,7 @@ private:
QTimer *seekLimitTimer; QTimer *seekLimitTimer;
TimeTooltip *mTimeTooltip; TimeTooltip *mTimeTooltip;
float f_buffering; float f_buffering;
SeekPoints* chapters;
public slots: public slots:
void setPosition( float, int64_t, int ); void setPosition( float, int64_t, int );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment