timeline/project: block serializations to and from xml now include links

Fixes issue where blocks would become unlinked after copy/paste or save/load.
This commit is contained in:
itsmattkc
2020-03-31 02:38:14 +11:00
parent 53955e9632
commit a855dea8de
8 changed files with 73 additions and 9 deletions
+16
View File
@@ -198,6 +198,22 @@ rational Block::MediaToSequenceTime(const rational &media_time) const
return (media_time - media_in()) / speed() + in();
}
void Block::LoadInternal(QXmlStreamReader *reader, XMLNodeData &xml_node_data)
{
if (reader->name() == QStringLiteral("link")) {
xml_node_data.block_links.append({this, reader->readElementText().toULongLong()});
} else {
Node::LoadInternal(reader, xml_node_data);
}
}
void Block::SaveInternal(QXmlStreamWriter *writer) const
{
foreach (Block* link, linked_clips_) {
writer->writeTextElement(QStringLiteral("link"), QString::number(reinterpret_cast<quintptr>(link)));
}
}
void Block::LengthInputChanged()
{
emit LengthChanged(length());
+4
View File
@@ -113,6 +113,10 @@ protected:
rational MediaToSequenceTime(const rational& media_time) const;
virtual void LoadInternal(QXmlStreamReader* reader, XMLNodeData& xml_node_data) override;
virtual void SaveInternal(QXmlStreamWriter* writer) const override;
Block* previous_;
Block* next_;
+12 -1
View File
@@ -82,7 +82,7 @@ void Node::Load(QXmlStreamReader *reader, XMLNodeData& xml_node_data, const QAto
param->Load(reader, xml_node_data, cancelled);
} else {
reader->skipCurrentElement();
LoadInternal(reader, xml_node_data);
}
}
}
@@ -99,6 +99,8 @@ void Node::Save(QXmlStreamWriter *writer, const QString &custom_name) const
param->Save(writer);
}
SaveInternal(writer);
writer->writeEndElement(); // node
}
@@ -219,6 +221,15 @@ void Node::DependentEdgeChanged(NodeInput *from)
}
}
void Node::LoadInternal(QXmlStreamReader *reader, XMLNodeData &)
{
reader->skipCurrentElement();
}
void Node::SaveInternal(QXmlStreamWriter *) const
{
}
QString Node::ReadFileAsString(const QString &filename)
{
QFile f(filename);
+4
View File
@@ -345,6 +345,10 @@ protected:
virtual void DependentEdgeChanged(NodeInput* from);
virtual void LoadInternal(QXmlStreamReader* reader, XMLNodeData& xml_node_data);
virtual void SaveInternal(QXmlStreamWriter* writer) const;
public slots:
signals: