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
+5 -12
View File
@@ -13,14 +13,6 @@ FootageViewerWidget::FootageViewerWidget(QWidget *parent) :
audio_node_ = new AudioInput();
viewer_node_ = new ViewerOutput();
waveform_view_ = new QWidget();
waveform_view_->setAutoFillBackground(true);
waveform_view_->setStyleSheet("background: black;");
stack()->addWidget(waveform_view_);
NodeParam::ConnectEdge(video_node_->output(), viewer_node_->texture_input());
NodeParam::ConnectEdge(audio_node_->output(), viewer_node_->samples_input());
connect(gl_widget_, &ViewerGLWidget::DragStarted, this, &FootageViewerWidget::StartFootageDrag);
}
@@ -33,6 +25,9 @@ void FootageViewerWidget::SetFootage(Footage *footage)
{
if (footage_) {
ConnectViewerNode(nullptr);
NodeParam::DisconnectEdge(video_node_->output(), viewer_node_->texture_input());
NodeParam::DisconnectEdge(audio_node_->output(), viewer_node_->samples_input());
}
footage_ = footage;
@@ -59,15 +54,13 @@ void FootageViewerWidget::SetFootage(Footage *footage)
if (video_stream) {
video_node_->SetFootage(video_stream);
viewer_node_->set_video_params(VideoParams(video_stream->width(), video_stream->height(), video_stream->frame_rate().flipped()));
stack()->setCurrentWidget(gl_widget_);
} else {
stack()->setCurrentWidget(waveform_view_);
NodeParam::ConnectEdge(video_node_->output(), viewer_node_->texture_input());
}
if (audio_stream) {
audio_node_->SetFootage(audio_stream);
viewer_node_->set_audio_params(AudioParams(audio_stream->sample_rate(), audio_stream->channel_layout()));
NodeParam::ConnectEdge(audio_node_->output(), viewer_node_->samples_input());
}
ConnectViewerNode(viewer_node_, footage->project()->color_manager());
-2
View File
@@ -27,8 +27,6 @@ private:
ViewerOutput* viewer_node_;
QWidget* waveform_view_;
private slots:
void StartFootageDrag();
+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()) {
+4 -2
View File
@@ -115,8 +115,6 @@ protected:
virtual void resizeEvent(QResizeEvent *event) override;
QStackedWidget* stack() const;
OpenGLBackend* video_renderer_;
AudioBackend* audio_renderer_;
@@ -156,6 +154,8 @@ private:
bool time_changed_from_timer_;
QWidget* waveform_view_;
private slots:
void PlaybackTimerUpdate();
@@ -188,6 +188,8 @@ private slots:
void InvalidateVisible();
void UpdateStack();
};
#endif // VIEWER_WIDGET_H