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();
- diff --git a/src/kdefrontend/WelcomeScreenHelper.cpp b/src/kdefrontend/WelcomeScreenHelper.cpp
- new file mode 100644
- index 000000000..394e115c1
- --- /dev/null
- +++ b/src/kdefrontend/WelcomeScreenHelper.cpp
- @@ -0,0 +1,116 @@
- +/***************************************************************************
- + File : WelcomeScreenHelper.cpp
- + Project : LabPlot
- + --------------------------------------------------------------------
- + Copyright : (C) 2019 Ferencz Kovacs (kferike98@gmail.com)
- + Description : Helper class for the welcome screen
- + ***************************************************************************/
- +
- +/***************************************************************************
- + * *
- + * This program is free software; you can redistribute it and/or modify *
- + * it under the terms of the GNU General Public License as published by *
- + * the Free Software Foundation; either version 2 of the License, or *
- + * (at your option) any later version. *
- + * *
- + * This program is distributed in the hope that it will be useful, *
- + * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- + * GNU General Public License for more details. *
- + * *
- + * You should have received a copy of the GNU General Public License *
- + * along with this program; if not, write to the Free Software *
- + * Foundation, Inc., 51 Franklin Street, Fifth Floor, *
- + * Boston, MA 02110-1301 USA *
- + * *
- + ***************************************************************************/
- +#include "WelcomeScreenHelper.h"
- +#include "DatasetModel.h"
- +#include "kdefrontend/datasources/ImportDatasetWidget.h"
- +#include "backend/datasources/DatasetHandler.h"
- +
- +#include <QVector>
- +#include <QTimer>
- +#include <QFile>
- +#include <QDebug>
- +#include <QUrl>
- +
- +#include <KFilterDev>
- +#include <KCompressionDevice>
- +
- +
- +/*!
- +\class WelcomeScreenHelper
- +\brief Helper class for the welcome screen
- +
- +\ingroup kdefrontend
- +*/
- +WelcomeScreenHelper::WelcomeScreenHelper() {
- + m_datasetWidget = new ImportDatasetWidget(0);
- + m_datasetWidget->hide();
- +
- + m_datasetModel = new DatasetModel(m_datasetWidget->getDatasetsMap());
- +
- +}
- +
- +WelcomeScreenHelper::~WelcomeScreenHelper() {
- +
- +}
- +/**
- + * @brief Returns the thumbnail image saved with the project.
- + * @param url the path to the saved project file.
- + */
- +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();
- +}
- diff --git a/src/kdefrontend/WelcomeScreenHelper.h b/src/kdefrontend/WelcomeScreenHelper.h
- new file mode 100644
- index 000000000..560a85df7
- --- /dev/null
- +++ b/src/kdefrontend/WelcomeScreenHelper.h
- @@ -0,0 +1,53 @@
- +/***************************************************************************
- + File : WelcomeScreenHelper.h
- + Project : LabPlot
- + --------------------------------------------------------------------
- + Copyright : (C) 2019 Ferencz Kovacs (kferike98@gmail.com)
- + Description : Helper class for the welcome screen
- + ***************************************************************************/
- +
- +/***************************************************************************
- + * *
- + * This program is free software; you can redistribute it and/or modify *
- + * it under the terms of the GNU General Public License as published by *
- + * the Free Software Foundation; either version 2 of the License, or *
- + * (at your option) any later version. *
- + * *
- + * This program is distributed in the hope that it will be useful, *
- + * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- + * GNU General Public License for more details. *
- + * *
- + * You should have received a copy of the GNU General Public License *
- + * along with this program; if not, write to the Free Software *
- + * Foundation, Inc., 51 Franklin Street, Fifth Floor, *
- + * Boston, MA 02110-1301 USA *
- + * *
- + ***************************************************************************/
- +#ifndef WELCOMESCREENHELPER_H
- +#define WELCOMESCREENHELPER_H
- +
- +#include <QObject>
- +#include <QMap>
- +#include <QVariant>
- +#include <memory>
- +
- +class ImportDatasetWidget;
- +class DatasetHandler;
- +class Spreadsheet;
- +class DatasetModel;
- +
- +class WelcomeScreenHelper: public QObject {
- + Q_OBJECT
- +
- +public:
- + WelcomeScreenHelper();
- + ~WelcomeScreenHelper();
- + Q_INVOKABLE QVariant getProjectThumbnail(const QUrl& url);
- +
- +private:
- + DatasetModel* m_datasetModel{nullptr};
- + ImportDatasetWidget* m_datasetWidget{nullptr};
- +
- +};
- +#endif //WELCOMESCREENHELPER_H
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement