From 934e3c8a7d7396e6a0429d948a8517736e06cff4 Mon Sep 17 00:00:00 2001 From: Hugo Beauzee-Luyssen Date: Wed, 27 May 2009 23:42:22 +0200 Subject: [PATCH] Plugged play button with the render workflow You can now play/pause the render preview --- src/gui/PreviewWidget.cpp | 35 ++++++++++++++++++++++++--------- src/gui/PreviewWidget.h | 7 +++++-- src/gui/RenderPreviewWidget.cpp | 19 +++++++++++++++--- src/gui/RenderPreviewWidget.h | 1 + 4 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/gui/PreviewWidget.cpp b/src/gui/PreviewWidget.cpp index 3a558dbf0..22675c41b 100644 --- a/src/gui/PreviewWidget.cpp +++ b/src/gui/PreviewWidget.cpp @@ -49,8 +49,8 @@ PreviewWidget::PreviewWidget( MainWorkflow* mainWorkflow, QWidget *parent ) : connect( m_ui->seekSlider, SIGNAL( sliderPosChanged(int) ), this, SLOT( seekSliderMoved(int) ) ); connect( m_ui->seekSlider, SIGNAL( sliderReleased() ), this, SLOT( seekSliderReleased() ) ); - m_clipPreview = new ClipPreviewWidget( m_ui->clipPreviewRenderWidget ); - m_renderPreview = new RenderPreviewWidget( mainWorkflow, m_ui->renderPreviewRenderWidget ); + initClipPreview(); + initRenderPreview( mainWorkflow ); m_currentMode = m_ui->tabWidget->currentIndex(); m_currentPreviewRenderer = m_renderPreview; @@ -64,7 +64,30 @@ PreviewWidget::~PreviewWidget() delete m_renderPreview; } -void PreviewWidget::changeEvent( QEvent *e ) +void PreviewWidget::initClipPreview() +{ + m_clipPreview = new ClipPreviewWidget( m_ui->clipPreviewRenderWidget ); + connectPreview( m_clipPreview ); +} + +void PreviewWidget::initRenderPreview( MainWorkflow* mainWorkflow ) +{ + m_renderPreview = new RenderPreviewWidget( mainWorkflow, m_ui->renderPreviewRenderWidget ); + connectPreview( m_renderPreview ); +} + +void PreviewWidget::connectPreview( GenericPreviewWidget* target ) +{ + //WARNING: the slots must NOT be virtual, since this is called from the constructor + // which would be unsafe... if not fatal... + connect( target, SIGNAL( stopped() ), this, SLOT( videoPaused() ) ); + connect( target, SIGNAL( paused() ), this, SLOT( videoPaused() ) ); + connect( target, SIGNAL( playing() ), this, SLOT( videoPlaying() ) ); + connect( target, SIGNAL( positionChanged(float) ), this, SLOT( positionChanged(float) ) ); + connect( target, SIGNAL( endReached() ), this, SLOT( endReached() ) ); +} + +void PreviewWidget::changeEvent( QEvent *e ) { switch ( e->type() ) { @@ -104,12 +127,6 @@ void PreviewWidget::dropEvent( QDropEvent* event ) if ( m_currentMode != PreviewWidget::clipPreviewMode ) m_ui->tabWidget->setCurrentIndex( PreviewWidget::clipPreviewMode ); - connect( m_clipPreview, SIGNAL( stopped() ), this, SLOT( videoPaused() ) ); - connect( m_clipPreview, SIGNAL( paused() ), this, SLOT( videoPaused() ) ); - connect( m_clipPreview, SIGNAL( playing() ), this, SLOT( videoPlaying() ) ); - connect( m_clipPreview, SIGNAL( positionChanged(float) ), this, SLOT( positionChanged(float) ) ); - connect( m_clipPreview, SIGNAL( endReached() ), this, SLOT( endReached() ) ); - m_clipPreview->startPreview( media ); event->acceptProposedAction(); m_previewStopped = false; diff --git a/src/gui/PreviewWidget.h b/src/gui/PreviewWidget.h index 5f0e2d3d8..a2a653b69 100644 --- a/src/gui/PreviewWidget.h +++ b/src/gui/PreviewWidget.h @@ -42,6 +42,11 @@ public: explicit PreviewWidget( MainWorkflow* mainWorkflow, QWidget* parent = NULL ); virtual ~PreviewWidget(); +private: + void initRenderPreview( MainWorkflow* ); + void initClipPreview(); + void connectPreview( GenericPreviewWidget* target ); + private: Ui::PreviewWidget* m_ui; GenericPreviewWidget* m_clipPreview; @@ -53,8 +58,6 @@ private: static const int renderPreviewMode = 0; static const int clipPreviewMode = 1; - -private: int m_sliderPosBackup; protected: diff --git a/src/gui/RenderPreviewWidget.cpp b/src/gui/RenderPreviewWidget.cpp index af592eeca..bfd87f3fc 100644 --- a/src/gui/RenderPreviewWidget.cpp +++ b/src/gui/RenderPreviewWidget.cpp @@ -47,6 +47,9 @@ RenderPreviewWidget::RenderPreviewWidget( MainWorkflow* mainWorkflow, QWidget* r sprintf( buffer, ":invmem-data=%lld", (qint64)this ); m_media->addOption( buffer ); m_mediaPlayer->setMedia( m_media ); + + connect( m_mediaPlayer, SIGNAL( playing() ), this, SLOT( __videoPlaying() ) ); + connect( m_mediaPlayer, SIGNAL( paused() ), this, SLOT( __videoPaused() ) ); } @@ -79,6 +82,7 @@ void RenderPreviewWidget::startPreview( Media* ) qDebug() << "Starting render preview"; m_mainWorkflow->startRender(); m_mediaPlayer->play(); + m_isRendering = true; } void RenderPreviewWidget::setPosition( float /*newPos*/ ) @@ -87,7 +91,16 @@ void RenderPreviewWidget::setPosition( float /*newPos*/ ) void RenderPreviewWidget::togglePlayPause( bool /*forcePause*/ ) { - startPreview( NULL ); + if ( m_isRendering == false ) + startPreview( NULL ); + else + { + qDebug() << m_mediaPlayer->isPlaying(); + if ( m_mediaPlayer->isPlaying() == false ) + m_mediaPlayer->play(); + else + m_mediaPlayer->pause(); + } } ///////////////////////////////////////////////////////////////////// @@ -106,10 +119,10 @@ void RenderPreviewWidget::__positionChanged() void RenderPreviewWidget::__videoPaused() { - qDebug() << "RenderPreviewWidget::__videoPaused: Unimplemented"; + emit paused(); } void RenderPreviewWidget::__videoPlaying() { - qDebug() << "RenderPreviewWidget::__videoPlaying: Unimplemented"; + emit playing(); } diff --git a/src/gui/RenderPreviewWidget.h b/src/gui/RenderPreviewWidget.h index a1a48b015..7a6f1f5cd 100644 --- a/src/gui/RenderPreviewWidget.h +++ b/src/gui/RenderPreviewWidget.h @@ -50,6 +50,7 @@ class RenderPreviewWidget : public GenericPreviewWidget private: MainWorkflow* m_mainWorkflow; LibVLCpp::Media* m_media; + bool m_isRendering; public slots: void __positionChanged(); -- GitLab