diff --git a/app/node/project/serializer/serializer211228.cpp b/app/node/project/serializer/serializer211228.cpp index a10d34bae..fbdcd780d 100644 --- a/app/node/project/serializer/serializer211228.cpp +++ b/app/node/project/serializer/serializer211228.cpp @@ -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); } } diff --git a/app/node/project/serializer/serializer211228.h b/app/node/project/serializer/serializer211228.h index 543a45498..10512ab46 100644 --- a/app/node/project/serializer/serializer211228.h +++ b/app/node/project/serializer/serializer211228.h @@ -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; diff --git a/app/timeline/timelinemarker.cpp b/app/timeline/timelinemarker.cpp index e60b40947..e75a625ba 100644 --- a/app/timeline/timelinemarker.cpp +++ b/app/timeline/timelinemarker.cpp @@ -93,27 +93,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() { @@ -150,31 +129,4 @@ const QList &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(); - } -} - } diff --git a/app/timeline/timelinemarker.h b/app/timeline/timelinemarker.h index f1bb60c7e..e33afce04 100644 --- a/app/timeline/timelinemarker.h +++ b/app/timeline/timelinemarker.h @@ -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); diff --git a/app/widget/marker/markercopypaste.cpp b/app/widget/marker/markercopypaste.cpp index 92a15d575..f5352907e 100644 --- a/app/widget/marker/markercopypaste.cpp +++ b/app/widget/marker/markercopypaste.cpp @@ -33,7 +33,7 @@ void MarkerCopyPasteService::CopyMarkersToClipboard(const QVectorset_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)); diff --git a/app/widget/marker/markercopypaste.h b/app/widget/marker/markercopypaste.h index 36ca175a7..e0715fb40 100644 --- a/app/widget/marker/markercopypaste.h +++ b/app/widget/marker/markercopypaste.h @@ -20,6 +20,7 @@ #include #include "widget/marker/marker.h" +#include "node/project/serializer/serializer.h" #include "timeline/timelinemarker.h" #include "undo/undocommand.h"