minor refactoring and signalling panel subtitle by node change

Fixes issue where Footage Viewer subtitle wouldn't update when
dropping footage in.
This commit is contained in:
itsmattkc
2021-04-08 10:42:13 +10:00
parent 2597eea08b
commit ea29ffef96
15 changed files with 57 additions and 49 deletions
+21 -20
View File
@@ -111,27 +111,7 @@ void TimeBasedPanel::ShuttleRight()
void TimeBasedPanel::ConnectViewerNode(ViewerOutput *node)
{
if (widget_->GetConnectedNode() == node) {
return;
}
if (widget_->GetConnectedNode()) {
disconnect(widget_->GetConnectedNode(), &ViewerOutput::LabelChanged, this, &TimeBasedPanel::SetSubtitle);
}
widget_->ConnectViewerNode(node);
if (node) {
connect(node, &ViewerOutput::LabelChanged, this, &TimeBasedPanel::SetSubtitle);
if (show_and_raise_on_connect_) {
this->show();
this->raise();
}
}
// Update strings
Retranslate();
}
void TimeBasedPanel::SetTimeBasedWidget(TimeBasedWidget *widget)
@@ -139,6 +119,7 @@ void TimeBasedPanel::SetTimeBasedWidget(TimeBasedWidget *widget)
if (widget_) {
disconnect(widget_, &TimeBasedWidget::TimeChanged, this, &TimeBasedPanel::TimeChanged);
disconnect(widget_, &TimeBasedWidget::TimebaseChanged, this, &TimeBasedPanel::TimebaseChanged);
disconnect(widget_, &TimeBasedWidget::ConnectedNodeChanged, this, &TimeBasedPanel::ConnectedNodeChanged);
}
widget_ = widget;
@@ -146,6 +127,7 @@ void TimeBasedPanel::SetTimeBasedWidget(TimeBasedWidget *widget)
if (widget_) {
connect(widget_, &TimeBasedWidget::TimeChanged, this, &TimeBasedPanel::TimeChanged);
connect(widget_, &TimeBasedWidget::TimebaseChanged, this, &TimeBasedPanel::TimebaseChanged);
connect(widget_, &TimeBasedWidget::ConnectedNodeChanged, this, &TimeBasedPanel::ConnectedNodeChanged);
}
SetWidgetWithPadding(widget_);
@@ -160,6 +142,25 @@ void TimeBasedPanel::Retranslate()
}
}
void TimeBasedPanel::ConnectedNodeChanged(ViewerOutput *old, ViewerOutput *now)
{
if (old) {
disconnect(old, &ViewerOutput::LabelChanged, this, &TimeBasedPanel::SetSubtitle);
}
if (now) {
connect(now, &ViewerOutput::LabelChanged, this, &TimeBasedPanel::SetSubtitle);
if (show_and_raise_on_connect_) {
this->show();
this->raise();
}
}
// Update strings
Retranslate();
}
void TimeBasedPanel::SetIn()
{
GetTimeBasedWidget()->SetInAtPlayhead();
+3
View File
@@ -135,6 +135,9 @@ private:
bool show_and_raise_on_connect_;
private slots:
void ConnectedNodeChanged(ViewerOutput* old, ViewerOutput* now);
};
}
+1 -1
View File
@@ -185,7 +185,7 @@ void CurveWidget::TimeTargetChangedEvent(Node *target)
view_->SetTimeTarget(target);
}
void CurveWidget::ConnectedNodeChanged(ViewerOutput *n)
void CurveWidget::ConnectedNodeChangeEvent(ViewerOutput *n)
{
SetTimeTarget(n);
}
+1 -1
View File
@@ -67,7 +67,7 @@ protected:
virtual void TimeTargetChangedEvent(Node* target) override;
virtual void ConnectedNodeChanged(ViewerOutput* n) override;
virtual void ConnectedNodeChangeEvent(ViewerOutput* n) override;
private:
void SetKeyframeButtonEnabled(bool enable);
+1 -1
View File
@@ -226,7 +226,7 @@ void NodeParamView::TimeChangedEvent(const int64_t &timestamp)
UpdateItemTime(timestamp);
}
void NodeParamView::ConnectedNodeChanged(ViewerOutput *n)
void NodeParamView::ConnectedNodeChangeEvent(ViewerOutput *n)
{
// Set viewer as a time target
keyframe_view_->SetTimeTarget(n);
+1 -1
View File
@@ -96,7 +96,7 @@ protected:
virtual void TimebaseChangedEvent(const rational&) override;
virtual void TimeChangedEvent(const int64_t &) override;
virtual void ConnectedNodeChanged(ViewerOutput* n) override;
virtual void ConnectedNodeChangeEvent(ViewerOutput* n) override;
private:
void UpdateItemTime(const int64_t &timestamp);
+5 -3
View File
@@ -81,7 +81,7 @@ void TimeBasedWidget::ConnectViewerNode(ViewerOutput *node)
if (viewer_node_) {
// Call potential derivative functions for disconnecting the viewer node
DisconnectNodeInternal(viewer_node_);
DisconnectNodeEvent(viewer_node_);
// Disconnect length changed signal
disconnect(viewer_node_, &ViewerOutput::LengthChanged, this, &TimeBasedWidget::UpdateMaximumScroll);
@@ -95,10 +95,12 @@ void TimeBasedWidget::ConnectViewerNode(ViewerOutput *node)
}
// Set viewer node
ViewerOutput* old = viewer_node_;
viewer_node_ = node;
emit ConnectedNodeChanged(old, node);
// Call derivatives
ConnectedNodeChanged(viewer_node_);
ConnectedNodeChangeEvent(viewer_node_);
if (viewer_node_) {
// Connect length changed signal
@@ -126,7 +128,7 @@ void TimeBasedWidget::ConnectViewerNode(ViewerOutput *node)
}
// Call derivatives
ConnectNodeInternal(viewer_node_);
ConnectNodeEvent(viewer_node_);
}
UpdateMaximumScroll();
+5 -3
View File
@@ -105,11 +105,11 @@ protected:
virtual void ScaleChangedEvent(const double &) override;
virtual void ConnectedNodeChanged(ViewerOutput*){}
virtual void ConnectedNodeChangeEvent(ViewerOutput*){}
virtual void ConnectNodeInternal(ViewerOutput*){}
virtual void ConnectNodeEvent(ViewerOutput*){}
virtual void DisconnectNodeInternal(ViewerOutput*){}
virtual void DisconnectNodeEvent(ViewerOutput*){}
void SetAutoMaxScrollBar(bool e);
@@ -138,6 +138,8 @@ signals:
void TimebaseChanged(const rational&);
void ConnectedNodeChanged(ViewerOutput* old, ViewerOutput* now);
private:
class MarkerAddCommand : public UndoCommand
{
+2 -2
View File
@@ -218,7 +218,7 @@ void TimelineWidget::ScaleChangedEvent(const double &scale)
}
}
void TimelineWidget::ConnectNodeInternal(ViewerOutput *n)
void TimelineWidget::ConnectNodeEvent(ViewerOutput *n)
{
Sequence* s = static_cast<Sequence*>(n);
@@ -246,7 +246,7 @@ void TimelineWidget::ConnectNodeInternal(ViewerOutput *n)
}
}
void TimelineWidget::DisconnectNodeInternal(ViewerOutput *n)
void TimelineWidget::DisconnectNodeEvent(ViewerOutput *n)
{
Sequence* s = static_cast<Sequence*>(n);
+2 -2
View File
@@ -245,8 +245,8 @@ protected:
virtual void TimeChangedEvent(const int64_t &) override;
virtual void ScaleChangedEvent(const double &) override;
virtual void ConnectNodeInternal(ViewerOutput* n) override;
virtual void DisconnectNodeInternal(ViewerOutput* n) override;
virtual void ConnectNodeEvent(ViewerOutput* n) override;
virtual void DisconnectNodeEvent(ViewerOutput* n) override;
virtual void CopyNodesToClipboardInternal(QXmlStreamWriter *writer, void* userdata) override;
virtual void PasteNodesFromClipboardInternal(QXmlStreamReader *reader, XMLNodeData &xml_node_data, void* userdata) override;
+4 -4
View File
@@ -40,20 +40,20 @@ FootageViewerWidget::FootageViewerWidget(QWidget *parent) :
connect(controls_, &PlaybackControls::AudioPressed, this, &FootageViewerWidget::StartAudioDrag);
}
void FootageViewerWidget::ConnectNodeInternal(ViewerOutput *n)
void FootageViewerWidget::ConnectNodeEvent(ViewerOutput *n)
{
super::ConnectNodeInternal(n);
super::ConnectNodeEvent(n);
SetTimestamp(cached_timestamps_.value(n, 0));
}
void FootageViewerWidget::DisconnectNodeInternal(ViewerOutput *n)
void FootageViewerWidget::DisconnectNodeEvent(ViewerOutput *n)
{
// Cache timestamp in case this footage is opened again later
cached_timestamps_.insert(n, GetTimestamp());
SetTimestamp(0);
super::DisconnectNodeInternal(n);
super::DisconnectNodeEvent(n);
}
void FootageViewerWidget::StartFootageDragInternal(bool enable_video, bool enable_audio)
+2 -2
View File
@@ -33,9 +33,9 @@ public:
FootageViewerWidget(QWidget* parent = nullptr);
protected:
virtual void ConnectNodeInternal(ViewerOutput *) override;
virtual void ConnectNodeEvent(ViewerOutput *) override;
virtual void DisconnectNodeInternal(ViewerOutput *) override;
virtual void DisconnectNodeEvent(ViewerOutput *) override;
private:
void StartFootageDragInternal(bool enable_video, bool enable_audio);
+3 -3
View File
@@ -175,7 +175,7 @@ void ViewerWidget::TimeChangedEvent(const int64_t &i)
last_time_ = i;
}
void ViewerWidget::ConnectNodeInternal(ViewerOutput *n)
void ViewerWidget::ConnectNodeEvent(ViewerOutput *n)
{
connect(n, &ViewerOutput::SizeChanged, this, &ViewerWidget::SetViewerResolution);
connect(n, &ViewerOutput::PixelAspectChanged, this, &ViewerWidget::SetViewerPixelAspect);
@@ -217,7 +217,7 @@ void ViewerWidget::ConnectNodeInternal(ViewerOutput *n)
ForceUpdate();
}
void ViewerWidget::DisconnectNodeInternal(ViewerOutput *n)
void ViewerWidget::DisconnectNodeEvent(ViewerOutput *n)
{
PauseInternal();
@@ -248,7 +248,7 @@ void ViewerWidget::DisconnectNodeInternal(ViewerOutput *n)
QMetaObject::invokeMethod(this, "UpdateStack", Qt::QueuedConnection);
}
void ViewerWidget::ConnectedNodeChanged(ViewerOutput *n)
void ViewerWidget::ConnectedNodeChangeEvent(ViewerOutput *n)
{
auto_cacher_.SetViewerNode(n);
}
+3 -3
View File
@@ -151,9 +151,9 @@ protected:
virtual void TimebaseChangedEvent(const rational &) override;
virtual void TimeChangedEvent(const int64_t &) override;
virtual void ConnectNodeInternal(ViewerOutput *) override;
virtual void DisconnectNodeInternal(ViewerOutput *) override;
virtual void ConnectedNodeChanged(ViewerOutput *) override;
virtual void ConnectNodeEvent(ViewerOutput *) override;
virtual void DisconnectNodeEvent(ViewerOutput *) override;
virtual void ConnectedNodeChangeEvent(ViewerOutput *) override;
virtual void ScaleChangedEvent(const double& s) override;
+3 -3
View File
@@ -101,9 +101,10 @@ void ViewerSizer::UpdateSize()
return;
}
// If the aspect ratio is 0, the widget is always hidden
// If the aspect ratio is 0, default to taking all space
if (!width_ || !height_) {
widget_->setVisible(false);
widget_->move(0, 0);
widget_->resize(width(), height());
return;
}
@@ -142,7 +143,6 @@ void ViewerSizer::UpdateSize()
}
// Size widget to the UI space we've calculated
widget_->setVisible(true);
widget_->resize(available_width, available_height);
// Adjust to aspect ratio