viewer: folded waveform view into base viewer widget class

This commit is contained in:
itsmattkc
2020-03-13 15:48:09 +11:00
parent 9e4c79699e
commit e2fe9ad548
4 changed files with 31 additions and 22 deletions
+22 -6
View File
@@ -51,7 +51,7 @@ ViewerWidget::ViewerWidget(QWidget *parent) :
stack_ = new QStackedWidget();
layout->addWidget(stack_);
// Create main OpenGL-based view
// Create main OpenGL-based view and sizer
sizer_ = new ViewerSizer();
stack_->addWidget(sizer_);
@@ -59,6 +59,12 @@ ViewerWidget::ViewerWidget(QWidget *parent) :
connect(gl_widget_, &ViewerGLWidget::customContextMenuRequested, this, &ViewerWidget::ShowContextMenu);
sizer_->SetWidget(gl_widget_);
// Create waveform view when audio is connected and video isn't
waveform_view_ = new QWidget();
waveform_view_->setAutoFillBackground(true);
waveform_view_->setStyleSheet("background: black;");
stack_->addWidget(waveform_view_);
// Create time ruler
layout->addWidget(ruler());
@@ -128,6 +134,8 @@ void ViewerWidget::ConnectNodeInternal(ViewerOutput *n)
connect(n, &ViewerOutput::LengthChanged, this, &ViewerWidget::LengthChangedSlot);
connect(n, &ViewerOutput::VideoParamsChanged, this, &ViewerWidget::UpdateRendererParameters);
connect(n, &ViewerOutput::VisibleInvalidated, this, &ViewerWidget::InvalidateVisible);
connect(n, &ViewerOutput::VideoGraphChanged, this, &ViewerWidget::UpdateStack);
connect(n, &ViewerOutput::AudioGraphChanged, this, &ViewerWidget::UpdateStack);
SizeChangedSlot(n->video_params().width(), n->video_params().height());
LengthChangedSlot(n->Length());
@@ -143,6 +151,8 @@ void ViewerWidget::ConnectNodeInternal(ViewerOutput *n)
divider_ = CalculateDivider();
UpdateRendererParameters();
UpdateStack();
}
void ViewerWidget::DisconnectNodeInternal(ViewerOutput *n)
@@ -156,6 +166,8 @@ void ViewerWidget::DisconnectNodeInternal(ViewerOutput *n)
disconnect(n, &ViewerOutput::LengthChanged, this, &ViewerWidget::LengthChangedSlot);
disconnect(n, &ViewerOutput::VideoParamsChanged, this, &ViewerWidget::UpdateRendererParameters);
disconnect(n, &ViewerOutput::VisibleInvalidated, this, &ViewerWidget::InvalidateVisible);
disconnect(n, &ViewerOutput::VideoGraphChanged, this, &ViewerWidget::UpdateStack);
disconnect(n, &ViewerOutput::AudioGraphChanged, this, &ViewerWidget::UpdateStack);
// Effectively disables the viewer and clears the state
SizeChangedSlot(0, 0);
@@ -181,11 +193,6 @@ void ViewerWidget::resizeEvent(QResizeEvent *event)
}
}
QStackedWidget *ViewerWidget::stack() const
{
return stack_;
}
void ViewerWidget::TogglePlayPause()
{
if (IsPlaying()) {
@@ -306,6 +313,15 @@ int ViewerWidget::CalculateDivider()
return divider_;
}
void ViewerWidget::UpdateStack()
{
if (!GetConnectedNode() || GetConnectedNode()->texture_input()->IsConnected()) {
stack_->setCurrentWidget(gl_widget_);
} else {
stack_->setCurrentWidget(waveform_view_);
}
}
void ViewerWidget::UpdateRendererParameters()
{
if (!GetConnectedNode()) {