Commit d2235489 authored by Tobias Hunger's avatar Tobias Hunger
Browse files

Add accessor for (versioned) .user-file

 * Add version number to .user-file.
 * Upgrade it from old versions.

Reviewed-by: dt
parent 788b294a
......@@ -56,9 +56,9 @@ IBuildStepFactory *findRestoreFactory(BuildConfiguration *parent, const QVariant
}
const char * const BUILD_STEPS_COUNT_KEY("ProjectExplorer.BuildConfiguration.BuildStepsCount");
const char * const BUILD_STEPS_PREFIX("ProjectExplorer.BuildConfiguration.BuildSteps.");
const char * const BUILD_STEPS_PREFIX("ProjectExplorer.BuildConfiguration.BuildStep.");
const char * const CLEAN_STEPS_COUNT_KEY("ProjectExplorer.BuildConfiguration.CleanStepsCount");
const char * const CLEAN_STEPS_PREFIX("ProjectExplorer.BuildConfiguration.CleanSteps.");
const char * const CLEAN_STEPS_PREFIX("ProjectExplorer.BuildConfiguration.CleanStep.");
} // namespace
......
......@@ -29,13 +29,13 @@
#include "project.h"
#include "persistentsettings.h"
#include "buildconfiguration.h"
#include "environment.h"
#include "projectnodes.h"
#include "buildstep.h"
#include "projectexplorer.h"
#include "runconfiguration.h"
#include "userfileaccessor.h"
#include "editorconfiguration.h"
#include <coreplugin/ifile.h>
......@@ -49,8 +49,6 @@ using namespace ProjectExplorer;
using namespace ProjectExplorer::Internal;
namespace {
const char * const PROJECT_FILE_POSTFIX(".user");
const char * const ACTIVE_BC_KEY("ProjectExplorer.Project.ActiveBuildConfiguration");
const char * const BC_KEY_PREFIX("ProjectExplorer.Project.BuildConfiguration.");
const char * const BC_COUNT_KEY("ProjectExplorer.Project.BuildConfigurationCount");
......@@ -148,21 +146,14 @@ bool Project::hasBuildSettings() const
void Project::saveSettings()
{
PersistentSettingsWriter writer;
QVariantMap map(toMap());
for (QVariantMap::const_iterator i = map.constBegin(); i != map.constEnd(); ++i)
writer.saveValue(i.key(), i.value());
writer.save(file()->fileName() + QLatin1String(PROJECT_FILE_POSTFIX), "QtCreatorProject");
UserFileAccessor accessor;
accessor.saveSettings(this, toMap());
}
bool Project::restoreSettings()
{
PersistentSettingsReader reader;
reader.load(file()->fileName() + QLatin1String(PROJECT_FILE_POSTFIX));
QVariantMap map(reader.restoreValues());
UserFileAccessor accessor;
QVariantMap map(accessor.restoreSettings(this));
return fromMap(map);
}
......
......@@ -58,6 +58,7 @@ HEADERS += projectexplorer.h \
projectmodels.h \
currentprojectfind.h \
toolchain.h \
userfileaccessor.h \
cesdkhandler.h \
gccparser.h \
msvcparser.h \
......@@ -116,6 +117,7 @@ SOURCES += projectexplorer.cpp \
currentprojectfind.cpp \
toolchain.cpp \
cesdkhandler.cpp \
userfileaccessor.cpp \
gccparser.cpp \
msvcparser.cpp \
filewatcher.cpp \
......
This diff is collapsed.
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#ifndef PROJECTMANAGER_USERFILEACCESSOR_H
#define PROJECTMANAGER_USERFILEACCESSOR_H
#include <QtCore/QVariantMap>
namespace ProjectExplorer {
class Project;
class UserFileVersionHandler
{
public:
UserFileVersionHandler();
virtual ~UserFileVersionHandler();
// The user file version this handler accepts for input.
virtual int userFileVersion() const = 0;
virtual QString displayUserFileVersion() const = 0;
// Update from userFileVersion() to userFileVersion() + 1
virtual QVariantMap update(Project *project, const QVariantMap &map) = 0;
};
class UserFileAccessor
{
public:
UserFileAccessor();
~UserFileAccessor();
QVariantMap restoreSettings(Project * project);
bool saveSettings(Project * project, const QVariantMap &map);
int latestUserFileVersion() const;
QString mapIdTo(const QString &id, int version);
private:
// Takes ownership of the handler!
void addVersionHandler(UserFileVersionHandler *handler);
QMap<int, UserFileVersionHandler *> m_handlers;
int m_firstVersion;
int m_lastVersion;
};
} // namespace ProjectExplorer
#endif // PROJECTMANAGER_USERFILEACCESSOR_H
......@@ -733,12 +733,10 @@ void MaemoRunConfigurationFactory::removedRunConfiguration(ProjectExplorer::RunC
void MaemoRunConfigurationFactory::projectAdded(
ProjectExplorer::Project *project)
{
connect(project, SIGNAL(addedRunConfiguration(ProjectExplorer::Project*,
QString)),
this, SLOT(addedRunConfiguration(ProjectExplorer::Project*)));
connect(project, SIGNAL(removedRunConfiguration(ProjectExplorer::Project*,
QString)),
this, SLOT(removedRunConfiguration(ProjectExplorer::Project*)));
connect(project, SIGNAL(addedRunConfiguration(ProjectExplorer::RunConfiguration*)),
this, SLOT(addedRunConfiguration(ProjectExplorer::RunConfiguration*)));
connect(project, SIGNAL(removedRunConfiguration(ProjectExplorer::RunConfiguration*)),
this, SLOT(removedRunConfiguration(ProjectExplorer::RunConfiguration*)));
if (hasMaemoRunConfig(project))
MaemoManager::instance()->addQemuSimulatorStarter(project);
......@@ -747,12 +745,10 @@ void MaemoRunConfigurationFactory::projectAdded(
void MaemoRunConfigurationFactory::projectRemoved(
ProjectExplorer::Project *project)
{
disconnect(project, SIGNAL(addedRunConfiguration(ProjectExplorer::Project*,
QString)),
this, SLOT(addedRunConfiguration(ProjectExplorer::Project*)));
disconnect(project, SIGNAL(removedRunConfiguration(ProjectExplorer::Project*,
QString)),
this, SLOT(removedRunConfiguration(ProjectExplorer::Project*)));
disconnect(project, SIGNAL(addedRunConfiguration(ProjectExplorer::RunConfiguration*)),
this, SLOT(addedRunConfiguration(ProjectExplorer::RunConfiguration*)));
disconnect(project, SIGNAL(removedRunConfiguration(ProjectExplorer::RunConfiguration*)),
this, SLOT(removedRunConfiguration(ProjectExplorer::RunConfiguration*)));
if (hasMaemoRunConfig(project))
MaemoManager::instance()->removeQemuSimulatorStarter(project);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment