vlc | branch: master | Francois Cartegnie <[email protected]> | Wed Dec 28 13:38:18 2016 +0100| [b2ebaf3c4a063ba0d9647d5302720d0390015f9e] | committer: Francois Cartegnie
Qt: EPG: change program using epg events > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b2ebaf3c4a063ba0d9647d5302720d0390015f9e --- modules/gui/qt/components/epg/EPGItem.cpp | 7 ++++++- modules/gui/qt/components/epg/EPGItem.hpp | 5 +++-- modules/gui/qt/components/epg/EPGProgram.cpp | 5 +++++ modules/gui/qt/components/epg/EPGProgram.hpp | 1 + modules/gui/qt/components/epg/EPGView.cpp | 5 +++++ modules/gui/qt/components/epg/EPGView.hpp | 2 ++ modules/gui/qt/components/epg/EPGWidget.cpp | 5 +++++ modules/gui/qt/components/epg/EPGWidget.hpp | 2 ++ modules/gui/qt/dialogs/epg.cpp | 1 + modules/gui/qt/input_manager.cpp | 8 ++++++++ modules/gui/qt/input_manager.hpp | 2 ++ 11 files changed, 40 insertions(+), 3 deletions(-) diff --git a/modules/gui/qt/components/epg/EPGItem.cpp b/modules/gui/qt/components/epg/EPGItem.cpp index c3ec4c2..b3bc737 100644 --- a/modules/gui/qt/components/epg/EPGItem.cpp +++ b/modules/gui/qt/components/epg/EPGItem.cpp @@ -35,7 +35,7 @@ #include "qt.hpp" -EPGItem::EPGItem( const vlc_epg_event_t *data, EPGView *view, const EPGProgram *prog ) +EPGItem::EPGItem( const vlc_epg_event_t *data, EPGView *view, EPGProgram *prog ) : QGraphicsItem() { m_view = view; @@ -230,6 +230,11 @@ void EPGItem::hoverLeaveEvent ( QGraphicsSceneHoverEvent * event ) hoverEnterEvent( event ); } +void EPGItem::mouseDoubleClickEvent( QGraphicsSceneMouseEvent * ) +{ + program->activate(); +} + void EPGItem::focusInEvent( QFocusEvent * event ) { event->accept(); diff --git a/modules/gui/qt/components/epg/EPGItem.hpp b/modules/gui/qt/components/epg/EPGItem.hpp index 92d0c8c..1cee117 100644 --- a/modules/gui/qt/components/epg/EPGItem.hpp +++ b/modules/gui/qt/components/epg/EPGItem.hpp @@ -38,7 +38,7 @@ class EPGProgram; class EPGItem : public QGraphicsItem { public: - EPGItem( const vlc_epg_event_t *data, EPGView *view, const EPGProgram * ); + EPGItem( const vlc_epg_event_t *data, EPGView *view, EPGProgram * ); QRectF boundingRect() const Q_DECL_OVERRIDE; void paint( QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0 ) Q_DECL_OVERRIDE; @@ -60,11 +60,12 @@ public: protected: void focusInEvent( QFocusEvent * event ) Q_DECL_OVERRIDE; + void mouseDoubleClickEvent(QGraphicsSceneMouseEvent * ) Q_DECL_OVERRIDE; void hoverEnterEvent ( QGraphicsSceneHoverEvent * ) Q_DECL_OVERRIDE; void hoverLeaveEvent ( QGraphicsSceneHoverEvent * ) Q_DECL_OVERRIDE; private: - const EPGProgram *program; + EPGProgram *program; EPGView *m_view; QRectF m_boundingRect; diff --git a/modules/gui/qt/components/epg/EPGProgram.cpp b/modules/gui/qt/components/epg/EPGProgram.cpp index 3309cc0..c65f2ee 100644 --- a/modules/gui/qt/components/epg/EPGProgram.cpp +++ b/modules/gui/qt/components/epg/EPGProgram.cpp @@ -64,6 +64,11 @@ void EPGProgram::setPosition( size_t i ) pos = i; } +void EPGProgram::activate() +{ + view->programActivated( sourceid ); +} + void EPGProgram::pruneEvents( const QDateTime &date ) { QMap<QDateTime, const EPGItem *>::iterator it = eventsbytime.begin(); diff --git a/modules/gui/qt/components/epg/EPGProgram.hpp b/modules/gui/qt/components/epg/EPGProgram.hpp index 9e7aa1d..8265877 100644 --- a/modules/gui/qt/components/epg/EPGProgram.hpp +++ b/modules/gui/qt/components/epg/EPGProgram.hpp @@ -45,6 +45,7 @@ class EPGProgram : public QObject void updateEventPos(); size_t getPosition() const; void setPosition( size_t ); + void activate(); const EPGItem * getCurrent() const; const QString & getName() const; static bool lessThan( const EPGProgram *, const EPGProgram * ); diff --git a/modules/gui/qt/components/epg/EPGView.cpp b/modules/gui/qt/components/epg/EPGView.cpp index f6d82a2..16bc016 100644 --- a/modules/gui/qt/components/epg/EPGView.cpp +++ b/modules/gui/qt/components/epg/EPGView.cpp @@ -214,3 +214,8 @@ void EPGView::focusItem( EPGItem *epgItem ) { emit itemFocused( epgItem ); } + +void EPGView::activateProgram( int id ) +{ + emit programActivated( id ); +} diff --git a/modules/gui/qt/components/epg/EPGView.hpp b/modules/gui/qt/components/epg/EPGView.hpp index 89737c1..2f04eff 100644 --- a/modules/gui/qt/components/epg/EPGView.hpp +++ b/modules/gui/qt/components/epg/EPGView.hpp @@ -67,11 +67,13 @@ public: void reset(); void cleanup(); bool hasValidData() const; + void activateProgram( int ); signals: void rangeChanged( const QDateTime&, const QDateTime& ); void itemFocused( EPGItem * ); void programAdded( const EPGProgram * ); + void programActivated( int ); protected: void walkItems( bool ); diff --git a/modules/gui/qt/components/epg/EPGWidget.cpp b/modules/gui/qt/components/epg/EPGWidget.cpp index 4482835..f6c0c4a 100644 --- a/modules/gui/qt/components/epg/EPGWidget.cpp +++ b/modules/gui/qt/components/epg/EPGWidget.cpp @@ -80,6 +80,7 @@ EPGWidget::EPGWidget( QWidget *parent ) : QWidget( parent ) connect( m_epgView, SIGNAL( itemFocused(EPGItem*)), this, SIGNAL(itemSelectionChanged(EPGItem*)) ); CONNECT( m_epgView, programAdded(const EPGProgram *), m_channelsWidget, addProgram(const EPGProgram *) ); + CONNECT( m_epgView, programActivated(int), this, activateProgram(int) ); } void EPGWidget::reset() @@ -120,3 +121,7 @@ void EPGWidget::updateEPG( input_item_t *p_input_item ) m_epgView->cleanup(); } +void EPGWidget::activateProgram( int id ) +{ + emit programActivated( id ); +} diff --git a/modules/gui/qt/components/epg/EPGWidget.hpp b/modules/gui/qt/components/epg/EPGWidget.hpp index 14f1a36..ba5f497 100644 --- a/modules/gui/qt/components/epg/EPGWidget.hpp +++ b/modules/gui/qt/components/epg/EPGWidget.hpp @@ -51,6 +51,7 @@ public: public slots: void setZoom( int level ); void updateEPG( input_item_t * ); + void activateProgram( int ); private: EPGRuler* m_rulerWidget; @@ -63,6 +64,7 @@ private: signals: void itemSelectionChanged( EPGItem * ); + void programActivated( int ); }; #endif // EPGWIDGET_H diff --git a/modules/gui/qt/dialogs/epg.cpp b/modules/gui/qt/dialogs/epg.cpp index 67f0950..76354c8 100644 --- a/modules/gui/qt/dialogs/epg.cpp +++ b/modules/gui/qt/dialogs/epg.cpp @@ -76,6 +76,7 @@ EpgDialog::EpgDialog( intf_thread_t *_p_intf ): QVLCFrame( _p_intf ) layout->addWidget( descBox ); CONNECT( epg, itemSelectionChanged( EPGItem *), this, displayEvent( EPGItem *) ); + CONNECT( epg, programActivated(int), THEMIM->getIM(), changeProgram(int) ); CONNECT( THEMIM->getIM(), epgChanged(), this, scheduleUpdate() ); CONNECT( THEMIM, inputChanged( bool ), this, inputChanged() ); diff --git a/modules/gui/qt/input_manager.cpp b/modules/gui/qt/input_manager.cpp index 0f01f95..55e0553 100644 --- a/modules/gui/qt/input_manager.cpp +++ b/modules/gui/qt/input_manager.cpp @@ -831,6 +831,14 @@ void InputManager::sectionMenu() * Teletext Functions */ +void InputManager::changeProgram( int program ) +{ + if( hasInput() ) + { + var_SetInteger( p_input, "program", program ); + } +} + /* Set a new Teletext Page */ void InputManager::telexSetPage( int page ) { diff --git a/modules/gui/qt/input_manager.hpp b/modules/gui/qt/input_manager.hpp index e9339c1..078a82c 100644 --- a/modules/gui/qt/input_manager.hpp +++ b/modules/gui/qt/input_manager.hpp @@ -202,6 +202,8 @@ public slots: void sectionNext(); void sectionPrev(); void sectionMenu(); + /* Program */ + void changeProgram( int ); /* Teletext */ void telexSetPage( int ); ///< Goto teletext page void telexSetTransparency( bool ); ///< Transparency on teletext background _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
