From 3867325522f68e8a3e56eacf4e6ebd8cd968a5f7 Mon Sep 17 00:00:00 2001 From: ck <qt-info@nokia.com> Date: Mon, 3 May 2010 15:50:15 +0200 Subject: [PATCH] Maemo: Serialize package contents. Reviewed-by: kh1 --- .../qt-maemo/maemopackagecontents.cpp | 38 ++++++++++++++++++- .../qt-maemo/maemopackagecontents.h | 6 ++- .../qt-maemo/maemopackagecreationfactory.cpp | 8 +++- .../qt-maemo/maemopackagecreationstep.cpp | 12 ++++++ .../qt-maemo/maemopackagecreationstep.h | 2 + 5 files changed, 62 insertions(+), 4 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp index 99e4e4b6303..ccb8f868f70 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp @@ -31,13 +31,22 @@ #include "maemopackagecreationstep.h" +namespace { + const char * const MODIFIED_KEY = + "Qt4ProjectManager.BuildStep.MaemoPackage.Modified"; + const char * const LOCAL_FILES_KEY + = "Qt4ProjectManager.BuildStep.MaemoPackage.LocalFiles"; + const char * const REMOTE_FILES_KEY + = "Qt4ProjectManager.BuildStep.MaemoPackage.RemoteFiles"; +} + namespace Qt4ProjectManager { namespace Internal { MaemoPackageContents::MaemoPackageContents(MaemoPackageCreationStep *packageStep) : QAbstractTableModel(packageStep), m_packageStep(packageStep), - m_modified(true) // TODO: Has to come from settings + m_modified(true) { } @@ -99,5 +108,32 @@ QVariant MaemoPackageContents::headerData(int section, return section == 0 ? tr("Local File Path") : tr("Remote File Path"); } +QVariantMap MaemoPackageContents::toMap() const +{ + QVariantMap map; + map.insert(MODIFIED_KEY, m_modified); + QStringList localFiles; + QStringList remoteFiles; + foreach (const Deployable &p, m_deployables) { + localFiles << p.localFilePath; + remoteFiles << p.remoteFilePath; + } + map.insert(LOCAL_FILES_KEY, localFiles); + map.insert(REMOTE_FILES_KEY, remoteFiles); + return map; +} + +void MaemoPackageContents::fromMap(const QVariantMap &map) +{ + m_modified = map.value(MODIFIED_KEY).toBool(); + const QStringList localFiles = map.value(LOCAL_FILES_KEY).toStringList(); + const QStringList remoteFiles = map.value(REMOTE_FILES_KEY).toStringList(); + if (localFiles.count() != remoteFiles.count()) + qWarning("%s: serialized data inconsistent", Q_FUNC_INFO); + const int count = qMin(localFiles.count(), remoteFiles.count()); + for (int i = 0; i < count; ++i) + m_deployables << Deployable(localFiles.at(i), remoteFiles.at(i)); +} + } // namespace Qt4ProjectManager } // namespace Internal diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.h b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.h index 8dd0728e6ce..8708d3a8fd2 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.h @@ -33,6 +33,7 @@ #include <QtCore/QAbstractTableModel> #include <QtCore/QList> #include <QtCore/QString> +#include <QtCore/QVariantMap> namespace Qt4ProjectManager { namespace Internal { @@ -62,14 +63,15 @@ public: virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; + QVariantMap toMap() const; + void fromMap(const QVariantMap &map); + Deployable deployableAt(int row) const; bool addDeployable(const Deployable &deployable); void removeDeployableAt(int row); bool isModified() const { return m_modified; } void setUnModified() { m_modified = false; } - // TODO: to/from map - private: virtual int columnCount(const QModelIndex &parent = QModelIndex()) const; virtual QVariant data(const QModelIndex &index, diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationfactory.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationfactory.cpp index ab031f1b3f2..9969d79711d 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationfactory.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationfactory.cpp @@ -94,7 +94,13 @@ BuildStep *MaemoPackageCreationFactory::restore(BuildConfiguration *parent, StepType type, const QVariantMap &map) { Q_ASSERT(canRestore(parent, type, map)); - return new MaemoPackageCreationStep(parent); + MaemoPackageCreationStep * const step + = new MaemoPackageCreationStep(parent); + if (!step->fromMap(map)) { + delete step; + return 0; + } + return step; } bool MaemoPackageCreationFactory::canClone(BuildConfiguration *parent, diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp index e99a708e644..9916b4d2c0c 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.cpp @@ -87,6 +87,18 @@ bool MaemoPackageCreationStep::init() return true; } +QVariantMap MaemoPackageCreationStep::toMap() const +{ + QVariantMap map(ProjectExplorer::BuildStep::toMap()); + return map.unite(m_packageContents->toMap()); +} + +bool MaemoPackageCreationStep::fromMap(const QVariantMap &map) +{ + m_packageContents->fromMap(map); + return ProjectExplorer::BuildStep::fromMap(map); +} + void MaemoPackageCreationStep::run(QFutureInterface<bool> &fi) { fi.reportResult(createPackage()); diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h index 18b1cca983e..02f50c1a752 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecreationstep.h @@ -76,6 +76,8 @@ private: virtual void run(QFutureInterface<bool> &fi); virtual ProjectExplorer::BuildStepConfigWidget *createConfigWidget(); virtual bool immutable() const { return true; } + virtual QVariantMap toMap() const; + virtual bool fromMap(const QVariantMap &map); bool createPackage(); bool runCommand(QProcess &proc, const QString &command); -- GitLab