Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/backend/core/Project.cpp b/src/backend/core/Project.cpp
- index 477d3124b..8b001fff5 100644
- --- a/src/backend/core/Project.cpp
- +++ b/src/backend/core/Project.cpp
- @@ -53,6 +53,7 @@
- #include <QMenu>
- #include <QThreadPool>
- #include <QUndoStack>
- +#include <QBuffer>
- #include <KConfig>
- #include <KConfigGroup>
- @@ -223,10 +224,8 @@ QString Project::supportedExtensions() {
- //##############################################################################
- //################## 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,25 @@ void Project::save(QXmlStreamWriter* writer) const {
- 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);
- + thumbnail.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<AbstractAspect>(IncludeHidden)) {
- writer->writeStartElement("child_aspect");
- diff --git a/src/backend/core/Project.h b/src/backend/core/Project.h
- index 2558c9cd4..8bd3aee86 100644
- --- a/src/backend/core/Project.h
- +++ b/src/backend/core/Project.h
- @@ -73,7 +73,7 @@ public:
- 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 @@ private:
- class Private;
- Private* d;
- bool readProjectAttributes(XmlStreamReader*);
- + void save(QXmlStreamWriter*) const override;
- };
- #endif // ifndef PROJECT_H
- diff --git a/src/kdefrontend/MainWin.cpp b/src/kdefrontend/MainWin.cpp
- index da62a398d..2dba76f64 100644
- --- a/src/kdefrontend/MainWin.cpp
- +++ b/src/kdefrontend/MainWin.cpp
- @@ -1097,8 +1097,10 @@ bool MainWin::save(const QString& fileName) {
- 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();
- +QVariant WelcomeScreenHelper::getProjectThumbnail(const QUrl& url) {
- + QString filename;
- + if (url.isLocalFile()) // fix for Windows
- + filename = url.toLocalFile();
- + else
- + filename = url.path();
- +
- + QIODevice* file;
- + // first try gzip compression, because projects can be gzipped and end with .lml
- + if (filename.endsWith(QLatin1String(".lml"), Qt::CaseInsensitive))
- + file = new KCompressionDevice(filename,KFilterDev::compressionTypeForMimeType("application/x-gzip"));
- + else // opens filename using file ending
- + file = new KFilterDev(filename);
- +
- + if (!file)
- + file = new QFile(filename);
- +
- + if (!file->open(QIODevice::ReadOnly)) {
- + qDebug() << "Could not open file for reading.";
- + return QVariant();
- + }
- +
- + char c;
- + bool rc = file->getChar(&c);
- + if (!rc) {
- + qDebug() << "The project file is empty.";
- + file->close();
- + delete file;
- + return false;
- + }
- + file->seek(0);
- +
- + //parse XML
- + XmlStreamReader reader(file);
- +
- + while (!(reader.isStartDocument() || reader.atEnd()))
- + reader.readNext();
- +
- + if (!(reader.atEnd())) {
- + if (!reader.skipToNextTag())
- + return false;
- +
- + if (reader.name() == "project") {
- + QString thumbnail = reader.attributes().value("thumbnail").toString();
- +
- + thumbnail.prepend("data:image/jpg;base64,");
- + qDebug() << "Return thumbnail " <<thumbnail;
- + return QVariant(thumbnail);
- + }
- + }
- +
- + return QVariant();
- +}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement