diff --git a/src/backend/core/Project.h b/src/backend/core/Project.h --- a/src/backend/core/Project.h +++ b/src/backend/core/Project.h @@ -73,7 +73,7 @@ bool hasChanged() const; void navigateTo(const QString& path); - void save(QXmlStreamWriter*) const override; + void save(const QPixmap&, QXmlStreamWriter*) const; bool load(XmlStreamReader*, bool preview) override; bool load(const QString&, bool preview = false); @@ -98,6 +98,7 @@ class Private; Private* d; bool readProjectAttributes(XmlStreamReader*); + void save(QXmlStreamWriter*) const override; }; #endif // ifndef PROJECT_H diff --git a/src/backend/core/Project.cpp b/src/backend/core/Project.cpp --- a/src/backend/core/Project.cpp +++ b/src/backend/core/Project.cpp @@ -53,6 +53,7 @@ #include #include #include +#include #include #include @@ -223,10 +224,8 @@ //############################################################################## //################## Serialization/Deserialization ########################### //############################################################################## -/** - * \brief Save as XML - */ -void Project::save(QXmlStreamWriter* writer) const { + +void Project::save(const QPixmap& thumbnail, QXmlStreamWriter* writer) const { //set the version and the modification time to the current values d->version = LVERSION; d->modificationTime = QDateTime::currentDateTime(); @@ -240,10 +239,26 @@ writer->writeAttribute("fileName", fileName()); writer->writeAttribute("modificationTime", modificationTime().toString("yyyy-dd-MM hh:mm:ss:zzz")); writer->writeAttribute("author", author()); + + QByteArray bArray; + QBuffer buffer(&bArray); + buffer.open(QIODevice::WriteOnly); + QPixmap scaledThumbnail = thumbnail.scaled(512,512); + scaledThumbnail.save(&buffer, "JPEG"); + QString image = QString::fromLatin1(bArray.toBase64().data()); + writer->writeAttribute("thumbnail", image); + writeBasicAttributes(writer); writeCommentElement(writer); + save(writer); +} + +/** + * \brief Save as XML + */ +void Project::save(QXmlStreamWriter* writer) const { //save all children for (auto* child : children(IncludeHidden)) { writer->writeStartElement("child_aspect"); diff --git a/src/kdefrontend/MainWin.cpp b/src/kdefrontend/MainWin.cpp --- a/src/kdefrontend/MainWin.cpp +++ b/src/kdefrontend/MainWin.cpp @@ -1097,8 +1097,10 @@ if (file->open(QIODevice::WriteOnly)) { m_project->setFileName(fileName); + QPixmap thumbnail = centralWidget()->grab(); + QXmlStreamWriter writer(file); - m_project->save(&writer); + m_project->save(thumbnail, &writer); m_project->undoStack()->clear(); m_project->setChanged(false); file->close();