diff --git a/effects/effect.cpp b/effects/effect.cpp index 95bfaf699..1e2cd9b02 100644 --- a/effects/effect.cpp +++ b/effects/effect.cpp @@ -136,8 +136,8 @@ bool Effect::is_enabled() { return container->enabled_check->isChecked(); } -void Effect::load(QXmlStreamReader* stream) { - stream->readNext(); +void Effect::load(QXmlStreamReader& stream) { + stream.readNext(); /*for (int i=0;iatEnd() && !(stream->name() == "effect" && stream->isEndElement())) { @@ -199,35 +199,41 @@ void Effect::load(QXmlStreamReader* stream) { }*/ } -void Effect::save(QXmlStreamWriter* stream) { +QString save_data(int type, const QVariant& data) { + switch (type) { + case EFFECT_FIELD_DOUBLE: return QString::number(data.toDouble()); break; + case EFFECT_FIELD_COLOR: return data.value().name(); break; + case EFFECT_FIELD_STRING: return data.toString(); break; + case EFFECT_FIELD_BOOL: return QString::number(data.toBool()); break; + case EFFECT_FIELD_COMBO: return QString::number(data.toInt()); break; + case EFFECT_FIELD_FONT: return data.toString(); break; + } + return QString(); +} + +void Effect::save(QXmlStreamWriter& stream) { for (int i=0;iwriteStartElement("row"); + stream.writeStartElement("row"); // row + stream.writeStartElement("keyframes"); // keyframes + stream.writeAttribute("enabled", QString::number(row->keyframing)); for (int j=0;jkeyframe_times.size();j++) { - stream->writeStartElement("key"); - stream->writeAttribute("frame", QString::number(row->keyframe_times.at(j))); - stream->writeAttribute("type", QString::number(row->keyframe_types.at(j))); - stream->writeEndElement(); // key + stream.writeStartElement("key"); // key + stream.writeAttribute("frame", QString::number(row->keyframe_times.at(j))); + stream.writeAttribute("type", QString::number(row->keyframe_types.at(j))); + stream.writeEndElement(); // key } + stream.writeEndElement(); // keyframes for (int j=0;jfieldCount();j++) { EffectField* field = row->field(j); - stream->writeStartElement("field"); + stream.writeStartElement("field"); // field + stream.writeAttribute("value", save_data(field->type, field->get_current_data())); for (int k=0;kkeyframe_data.size();k++) { - const QVariant& data = field->keyframe_data.at(k); - stream->writeStartElement("key"); - switch (field->type) { - case EFFECT_FIELD_DOUBLE: stream->writeAttribute("value", QString::number(data.toDouble())); break; - case EFFECT_FIELD_COLOR: stream->writeAttribute("value", data.value().name()); break; - case EFFECT_FIELD_STRING: stream->writeAttribute("value", data.toString()); break; - case EFFECT_FIELD_BOOL: stream->writeAttribute("value", QString::number(data.toBool())); break; - case EFFECT_FIELD_COMBO: stream->writeAttribute("value", QString::number(data.toInt())); break; - case EFFECT_FIELD_FONT: stream->writeAttribute("value", data.toString()); break; - } - stream->writeEndElement(); + stream.writeTextElement("key", save_data(field->type, field->keyframe_data.at(k))); } - stream->writeEndElement(); // field + stream.writeEndElement(); // field } - stream->writeEndElement(); // row + stream.writeEndElement(); // row } } diff --git a/effects/effect.h b/effects/effect.h index e90e29ba1..97bb8df09 100644 --- a/effects/effect.h +++ b/effects/effect.h @@ -155,8 +155,8 @@ public: Effect* copy(Clip* c); void copy_field_keyframes(Effect *e); - void load(QXmlStreamReader* stream); - void save(QXmlStreamWriter* stream); + void load(QXmlStreamReader& stream); + void save(QXmlStreamWriter& stream); bool enable_image; bool enable_opengl; diff --git a/io/config.h b/io/config.h index 72ba4de91..d444d305e 100644 --- a/io/config.h +++ b/io/config.h @@ -3,7 +3,7 @@ #include -#define SAVE_VERSION "180814" +#define SAVE_VERSION "180820" // YYMMDD struct Config { Config(); diff --git a/panels/project.cpp b/panels/project.cpp index 19aaf94c0..490a2d176 100644 --- a/panels/project.cpp +++ b/panels/project.cpp @@ -853,7 +853,7 @@ bool Project::load_worker(QFile& f, QXmlStreamReader& stream, int type) { } if (effect_id != -1) { Effect* e = create_effect(effect_id, c); - e->load(&stream); + e->load(stream); c->effects.append(e); } } @@ -1111,7 +1111,7 @@ void Project::save_folder(QXmlStreamWriter& stream, QTreeWidgetItem* parent, int stream.writeStartElement("effect"); // effect Effect* e = c->effects.at(k); stream.writeAttribute("id", QString::number(e->id)); - e->save(&stream); + e->save(stream); stream.writeEndElement(); // effect } stream.writeEndElement(); // effects