Move marker load/save code to Serializer and fix build issues. Copy/paste not working

This commit is contained in:
Thomas Wilshaw
2022-01-30 13:36:11 +00:00
parent 02b9a38737
commit fed62246e6
6 changed files with 29 additions and 62 deletions
@@ -21,6 +21,7 @@
#include "serializer211228.h"
#include "node/factory.h"
#include "timeline/timelinemarker.h"
namespace olive {
@@ -913,16 +914,33 @@ void ProjectSerializer211228::SaveWorkArea(QXmlStreamWriter *writer, TimelineWor
writer->writeAttribute(QStringLiteral("out"), workarea->out().toString());
}
void ProjectSerializer211228::SaveMarker(QXmlStreamWriter* writer, TimelineMarker* marker) const
{
writer->writeStartElement(QStringLiteral("marker"));
writer->writeAttribute(QStringLiteral("name"), marker->name());
writer->writeAttribute(QStringLiteral("color"), QString::number(marker->color()));
writer->writeAttribute(QStringLiteral("in"), marker->time().in().toString());
writer->writeAttribute(QStringLiteral("out"), marker->time().out().toString());
writer->writeEndElement(); // marker
}
void ProjectSerializer211228::LoadMarkerList(QXmlStreamReader *reader, TimelineMarkerList *markers) const
{
while (XMLReadNextStartElement(reader)) {
while(XMLReadNextStartElement(reader)) {
if (reader->name() == QStringLiteral("marker")) {
QString name;
int color = -1;
rational in, out;
XMLAttributeLoop(reader, attr) {
if (attr.name() == QStringLiteral("name")) {
name = attr.value().toString();
} else if (attr.name() == QStringLiteral("color")) {
color = attr.value().toInt();
} else if (attr.name() == QStringLiteral("in")) {
in = rational::fromString(attr.value().toString());
} else if (attr.name() == QStringLiteral("out")) {
@@ -930,7 +948,7 @@ void ProjectSerializer211228::LoadMarkerList(QXmlStreamReader *reader, TimelineM
}
}
markers->AddMarker(TimeRange(in, out), name);
markers->AddMarker(TimeRange(in, out), name, color);
}
reader->skipCurrentElement();
@@ -940,14 +958,7 @@ void ProjectSerializer211228::LoadMarkerList(QXmlStreamReader *reader, TimelineM
void ProjectSerializer211228::SaveMarkerList(QXmlStreamWriter *writer, TimelineMarkerList *markers) const
{
foreach (TimelineMarker* marker, markers->list()) {
writer->writeStartElement(QStringLiteral("marker"));
writer->writeAttribute(QStringLiteral("name"), marker->name());
writer->writeAttribute(QStringLiteral("in"), marker->time().in().toString());
writer->writeAttribute(QStringLiteral("out"), marker->time().out().toString());
writer->writeEndElement(); // marker
SaveMarker(writer, marker);
}
}
@@ -97,6 +97,10 @@ private:
void SaveWorkArea(QXmlStreamWriter *writer, TimelineWorkArea *workarea) const;
void LoadMarker(QXmlStreamReader *reader);
void SaveMarker(QXmlStreamWriter *writer, TimelineMarker *marker) const;
void LoadMarkerList(QXmlStreamReader *reader, TimelineMarkerList *markers) const;
void SaveMarkerList(QXmlStreamWriter *writer, TimelineMarkerList *markers) const;
-48
View File
@@ -94,27 +94,6 @@ void TimelineMarker::set_active(bool active)
emit ActiveChanged(active_);
}
void TimelineMarker::Save(QXmlStreamWriter* writer) const
{
writer->writeStartElement(QStringLiteral("marker"));
writer->writeAttribute(QStringLiteral("name"), name_);
writer->writeAttribute(QStringLiteral("color"), QString::number(color_));
writer->writeAttribute(QStringLiteral("in"), time_.in().toString());
writer->writeAttribute(QStringLiteral("out"), time_.out().toString());
writer->writeEndElement(); // marker
}
void TimelineMarkerList::Save(QXmlStreamWriter *writer) const
{
foreach (TimelineMarker* marker, markers_) {
marker->Save(writer);
}
}
TimelineMarkerList::~TimelineMarkerList()
{
qDeleteAll(markers_);
@@ -150,31 +129,4 @@ const QList<TimelineMarker*> &TimelineMarkerList::list() const
return markers_;
}
void TimelineMarkerList::Load(QXmlStreamReader *reader)
{
while (XMLReadNextStartElement(reader)) {
if (reader->name() == QStringLiteral("marker")) {
QString name;
int color = -1;
rational in, out;
XMLAttributeLoop(reader, attr) {
if (attr.name() == QStringLiteral("name")) {
name = attr.value().toString();
}else if(attr.name() == QStringLiteral("color")){
color = attr.value().toInt();
} else if (attr.name() == QStringLiteral("in")) {
in = rational::fromString(attr.value().toString());
} else if (attr.name() == QStringLiteral("out")) {
out = rational::fromString(attr.value().toString());
}
}
AddMarker(TimeRange(in, out), name, color);
}
reader->skipCurrentElement();
}
}
}
+1 -2
View File
@@ -48,7 +48,6 @@ public:
void set_active(bool active);
void Load(QXmlStreamReader* reader);
void Save(QXmlStreamWriter* writer) const;
public slots:
void set_name_undo(QString name);
@@ -82,7 +81,7 @@ public:
virtual ~TimelineMarkerList() override;
TimelineMarker *AddMarker(const TimeRange& time = TimeRange(), const QString& name = QString(), int color = -1);
TimelineMarker* AddMarker(const TimeRange& time = TimeRange(), const QString& name = QString(), int color = -1);
void RemoveMarker(TimelineMarker* marker);
+2 -2
View File
@@ -33,7 +33,7 @@ void MarkerCopyPasteService::CopyMarkersToClipboard(const QVector<TimelineMarker
writer.writeStartDocument();
writer.writeStartElement(QStringLiteral("olive"));
writer.writeTextElement(QStringLiteral("version"), QString::number(Core::kProjectVersion));
//writer.writeTextElement(QStringLiteral("version"), QString::number(Core::kProjectVersion));
writer.writeStartElement(QStringLiteral("markers"));
@@ -52,7 +52,7 @@ void MarkerCopyPasteService::CopyMarkersToClipboard(const QVector<TimelineMarker
// Temporarily set in/out to be relative to the earliest selected marker
marker->set_time(TimeRange(in - min_start, marker->time().out() - min_start));
marker->Save(&writer);
//marker->Save(&writer);
// Reset in/out
marker->set_time(TimeRange(in, out));
+1
View File
@@ -20,6 +20,7 @@
#include <QUndoCommand>
#include "widget/marker/marker.h"
#include "node/project/serializer/serializer.h"
#include "timeline/timelinemarker.h"
#include "undo/undocommand.h"