diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemopackagecontents.cpp index 99e4e4b630337bef4e6ea966db3025d2e9163f28..ccb8f868f70c5d644cfb2cd801c49f1e9b5f6312 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 8dd0728e6ceb7dc74ee425d84fdf68aebf934ffe..8708d3a8fd2daccf8fc2df4cfbe5bd509364e214 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 ab031f1b3f227d8d4ed99e6c08cff14b48412d99..9969d79711d7ffe149faaa9954e51820e9f91c08 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 e99a708e644f0a5d1676a67f4279673205829509..9916b4d2c0c5b30718e90452ade3d586051fcffa 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 18b1cca983e3926f05e931310c122bd7bd868024..02f50c1a75201e8605b8d7126d98a7e1a108294d 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);