correctly update the panel subtitles based on the media connected

This commit is contained in:
itsmattkc
2020-01-16 14:57:16 +11:00
parent 6771a2f1cb
commit c6710b1359
17 changed files with 99 additions and 25 deletions
+12
View File
@@ -233,6 +233,18 @@ void ViewerOutput::Retranslate()
}
}
const QString &ViewerOutput::media_name() const
{
return media_name_;
}
void ViewerOutput::set_media_name(const QString &name)
{
media_name_ = name;
emit MediaNameChanged(media_name_);
}
const QVector<TrackOutput *>& ViewerOutput::Tracks() const
{
return track_cache_;
+7
View File
@@ -74,6 +74,9 @@ public:
virtual void Retranslate() override;
const QString& media_name() const;
void set_media_name(const QString& name);
protected:
virtual void DependentEdgeChanged(NodeInput* from) override;
@@ -100,6 +103,8 @@ signals:
void TrackHeightChanged(Timeline::TrackType type, int index, int height);
void MediaNameChanged(const QString& name);
private:
QUuid uuid_;
@@ -121,6 +126,8 @@ private:
rational timeline_length_;
QString media_name_;
private slots:
void UpdateTrackCache();
+10 -1
View File
@@ -41,6 +41,12 @@ FootageViewerPanel::FootageViewerPanel(QWidget *parent) :
void FootageViewerPanel::SetFootage(Footage *f)
{
static_cast<FootageViewerWidget*>(viewer_)->SetFootage(f);
if (f) {
SetSubtitle(f->name());
} else {
Retranslate();
}
}
void FootageViewerPanel::changeEvent(QEvent *e)
@@ -54,5 +60,8 @@ void FootageViewerPanel::changeEvent(QEvent *e)
void FootageViewerPanel::Retranslate()
{
SetTitle(tr("Footage Viewer"));
SetSubtitle(tr("(none)"));
if (!static_cast<FootageViewerWidget*>(viewer_)->GetFootage()) {
SetSubtitle(tr("(none)"));
}
}
+14 -1
View File
@@ -51,7 +51,17 @@ void TimelinePanel::SetTime(const int64_t &timestamp)
void TimelinePanel::ConnectTimelineNode(ViewerOutput *node)
{
if (timeline_widget_->GetConnectedNode()) {
disconnect(timeline_widget_->GetConnectedNode(), &ViewerOutput::MediaNameChanged, this, &TimelinePanel::SetSubtitle);
Retranslate();
}
timeline_widget_->ConnectTimelineNode(node);
if (node) {
connect(node, &ViewerOutput::MediaNameChanged, this, &TimelinePanel::SetSubtitle);
SetSubtitle(node->media_name());
}
}
void TimelinePanel::DisconnectTimelineNode()
@@ -140,5 +150,8 @@ void TimelinePanel::changeEvent(QEvent *e)
void TimelinePanel::Retranslate()
{
SetTitle(tr("Timeline"));
SetSubtitle(tr("(none)"));
if (!timeline_widget_->GetConnectedNode()) {
SetSubtitle(tr("(none)"));
}
}
+14 -6
View File
@@ -39,12 +39,17 @@ ViewerPanel::ViewerPanel(QWidget *parent) :
void ViewerPanel::ConnectViewerNode(ViewerOutput *node)
{
viewer_->ConnectViewerNode(node);
}
if (viewer_->GetConnectedViewer()) {
disconnect(viewer_->GetConnectedViewer(), &ViewerOutput::MediaNameChanged, this, &ViewerPanel::SetSubtitle);
Retranslate();
}
void ViewerPanel::DisconnectViewerNode()
{
viewer_->DisconnectViewerNode();
viewer_->ConnectViewerNode(node);
if (node) {
connect(node, &ViewerOutput::MediaNameChanged, this, &ViewerPanel::SetSubtitle);
SetSubtitle(node->media_name());
}
}
rational ViewerPanel::GetTime()
@@ -73,5 +78,8 @@ void ViewerPanel::changeEvent(QEvent *e)
void ViewerPanel::Retranslate()
{
SetTitle(tr("Viewer"));
SetSubtitle(tr("(none)"));
if (!viewer_->GetConnectedViewer()) {
SetSubtitle(tr("(none)"));
}
}
-2
View File
@@ -35,8 +35,6 @@ public:
void ConnectViewerNode(ViewerOutput* node);
void DisconnectViewerNode();
rational GetTime();
ViewerOutput* GetConnectedViewer() const;
+6
View File
@@ -95,6 +95,8 @@ const QString &Item::name() const
void Item::set_name(const QString &n)
{
name_ = n;
NameChangedEvent(n);
}
const QString &Item::tooltip() const
@@ -155,6 +157,10 @@ bool Item::ChildExistsWithName(const QString &name)
return ChildExistsWithNameInternal(name, this);
}
void Item::NameChangedEvent(const QString &name)
{
}
bool Item::ChildExistsWithNameInternal(const QString &name, Item *folder)
{
// Loop through all children
+4 -1
View File
@@ -44,7 +44,7 @@ using ItemPtr = std::shared_ptr<Item>;
* Project objects implement a parent-child hierarchy of Items that can be used throughout the Project. The Item class
* itself is abstract and will need to be subclassed to be used in a Project.
*/
class Item : public ThreadedObject
class Item
{
public:
enum Type {
@@ -101,6 +101,9 @@ public:
bool ChildExistsWithName(const QString& name);
protected:
virtual void NameChangedEvent(const QString& name);
private:
bool ChildExistsWithNameInternal(const QString& name, Item* folder);
+7 -1
View File
@@ -250,5 +250,11 @@ void Sequence::set_default_parameters()
Config::Current()["DefaultSequenceHeight"].toInt(),
Config::Current()["DefaultSequenceFrameRate"].value<rational>()));
set_audio_params(AudioParams(Config::Current()["DefaultSequenceAudioFrequency"].toInt(),
Config::Current()["DefaultSequenceAudioLayout"].toULongLong()));
Config::Current()["DefaultSequenceAudioLayout"].toULongLong()));
}
void Sequence::NameChangedEvent(const QString &name)
{
qDebug() << "Setting viewer output name to" << name;
viewer_output_->set_media_name(name);
}
+3
View File
@@ -71,6 +71,9 @@ public:
void set_default_parameters();
protected:
virtual void NameChangedEvent(const QString& name) override;
private:
ViewerOutput* viewer_output_;
+8 -5
View File
@@ -113,6 +113,14 @@ public:
virtual void DecreaseTrackHeight(){}
protected:
/**
* @brief paintEvent
* @param event
*/
void paintEvent(QPaintEvent *event) override;
protected slots:
/**
* @brief Set panel's title
*
@@ -141,11 +149,6 @@ protected:
*/
void SetSubtitle(const QString& t);
/**
* @brief paintEvent
* @param event
*/
void paintEvent(QPaintEvent *event) override;
private:
/**
* @brief Internal function that sets the QDockWidget's window title whenever the title/subtitle change.
@@ -525,6 +525,11 @@ QList<TimelineViewBlockItem *> TimelineWidget::GetSelectedBlocks()
return list;
}
ViewerOutput *TimelineWidget::GetConnectedNode() const
{
return timeline_node_;
}
void TimelineWidget::RippleEditTo(Timeline::MovementMode mode, bool insert_gaps)
{
rational playhead_time = Timecode::timestamp_to_time(playhead_, timebase());
@@ -63,6 +63,8 @@ public:
QList<TimelineViewBlockItem*> GetSelectedBlocks();
ViewerOutput* GetConnectedNode() const;
public slots:
void SetTimebase(const rational& timebase);
+6 -1
View File
@@ -15,10 +15,15 @@ FootageViewerWidget::FootageViewerWidget(QWidget *parent) :
NodeParam::ConnectEdge(video_node_->output(), viewer_node_->length_input());
}
Footage *FootageViewerWidget::GetFootage() const
{
return footage_;
}
void FootageViewerWidget::SetFootage(Footage *footage)
{
if (footage_) {
DisconnectViewerNode();
ConnectViewerNode(nullptr);
}
footage_ = footage;
+1
View File
@@ -12,6 +12,7 @@ class FootageViewerWidget : public ViewerWidget
public:
FootageViewerWidget(QWidget* parent = nullptr);
Footage* GetFootage() const;
void SetFootage(Footage* footage);
private:
-5
View File
@@ -186,11 +186,6 @@ void ViewerWidget::ConnectViewerNode(ViewerOutput *node, ColorManager* color_man
}
}
void ViewerWidget::DisconnectViewerNode()
{
ConnectViewerNode(nullptr);
}
ViewerOutput *ViewerWidget::GetConnectedViewer() const
{
return viewer_node_;
-2
View File
@@ -65,8 +65,6 @@ public:
void ConnectViewerNode(ViewerOutput* node, ColorManager *color_manager = nullptr);
void DisconnectViewerNode();
ViewerOutput* GetConnectedViewer() const;
void SetColorMenuEnabled(bool enabled);