Commit 399ad59f authored by kh1's avatar kh1

Move the factories inside there own source files.

parent 55dc4a9a
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Creator.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
** contained in the Technology Preview License Agreement accompanying
** this package.
**
** 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.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef MAEMOCONSTANTS_H
#define MAEMOCONSTANTS_H
namespace Qt4ProjectManager {
namespace Internal {
#define PREFIX "Qt4ProjectManager.MaemoRunConfiguration"
static const QLatin1String MAEMO_RC_ID(PREFIX);
static const QLatin1String MAEMO_RC_ID_PREFIX(PREFIX ".");
static const QLatin1String ArgumentsKey(PREFIX ".Arguments");
static const QLatin1String SimulatorPathKey(PREFIX ".Simulator");
static const QLatin1String DeviceIdKey(PREFIX ".DeviceId");
static const QLatin1String LastDeployedKey(PREFIX ".LastDeployed");
static const QLatin1String DebuggingHelpersLastDeployedKey(PREFIX ".DebuggingHelpersLastDeployed");
static const QLatin1String ProFileKey(".ProFile");
} // namespace Internal
} // namespace Qt4ProjectManager
#endif // MAEMOCONSTANTS_H
......@@ -30,6 +30,7 @@
#include "maemomanager.h"
#include "maemodeviceconfigurations.h"
#include "maemorunfactories.h"
#include "maemosettingspage.h"
#include "maemotoolchain.h"
#include "maemorunconfiguration.h"
......
......@@ -28,58 +28,22 @@
**************************************************************************/
#include "maemorunconfiguration.h"
#include "maemodeviceconfigurations.h"
#include "maemoconstants.h"
#include "maemomanager.h"
#include "maemorunconfigurationwidget.h"
#include "maemoruncontrol.h"
#include "maemotoolchain.h"
#include "profilereader.h"
#include "qt4project.h"
#include "qt4target.h"
#include "qt4buildconfiguration.h"
#include <coreplugin/icore.h>
#include <coreplugin/messagemanager.h>
#include <extensionsystem/pluginmanager.h>
#include <utils/pathchooser.h>
#include <qt4projectmanager/qt4project.h>
#include <utils/qtcassert.h>
#include <projectexplorer/persistentsettings.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/session.h>
#include <QtCore/QDebug>
#include <QtCore/QProcess>
#include <QtCore/QStringBuilder>
namespace {
const char * const MAEMO_RC_ID("Qt4ProjectManager.MaemoRunConfiguration");
const char * const MAEMO_RC_ID_PREFIX("Qt4ProjectManager.MaemoRunConfiguration.");
QString targetFromId(const QString &id)
{
QString prefix(MAEMO_RC_ID_PREFIX);
if (!id.startsWith(prefix))
return QString();
return id.mid(prefix.size());
}
QString targetToId(const QString &target)
{
return QString::fromLatin1(MAEMO_RC_ID_PREFIX) + target;
}
} // namespace
static const QLatin1String ArgumentsKey("Qt4ProjectManager.MaemoRunConfiguration.Arguments");
static const QLatin1String SimulatorPathKey("Qt4ProjectManager.MaemoRunConfiguration.Simulator");
static const QLatin1String DeviceIdKey("Qt4ProjectManager.MaemoRunConfiguration.DeviceId");
static const QLatin1String LastDeployedKey("Qt4ProjectManager.MaemoRunConfiguration.LastDeployed");
static const QLatin1String DebuggingHelpersLastDeployedKey(
"Qt4ProjectManager.MaemoRunConfiguration.DebuggingHelpersLastDeployed");
static const QLatin1String ProFileKey("Qt4ProjectManager.MaemoRunConfiguration.ProFile");
namespace Qt4ProjectManager {
namespace Internal {
namespace Internal {
using namespace ProjectExplorer;
......@@ -541,226 +505,5 @@ void MaemoRunConfiguration::updateDeviceConfigurations()
emit deviceConfigurationsUpdated();
}
// #pragma mark -- MaemoRunConfigurationFactory
MaemoRunConfigurationFactory::MaemoRunConfigurationFactory(QObject *parent)
: IRunConfigurationFactory(parent)
{
ProjectExplorerPlugin *explorer = ProjectExplorerPlugin::instance();
connect(explorer->session(), SIGNAL(projectAdded(ProjectExplorer::Project*)),
this, SLOT(projectAdded(ProjectExplorer::Project*)));
connect(explorer->session(), SIGNAL(projectRemoved(ProjectExplorer::Project*)),
this, SLOT(projectRemoved(ProjectExplorer::Project*)));
connect(explorer, SIGNAL(currentProjectChanged(ProjectExplorer::Project*)),
this, SLOT(currentProjectChanged(ProjectExplorer::Project*)));
}
MaemoRunConfigurationFactory::~MaemoRunConfigurationFactory()
{
}
bool MaemoRunConfigurationFactory::canCreate(Target *parent,
const QString &id) const
{
Qt4Target *target = qobject_cast<Qt4Target *>(parent);
if (!target
|| (target->id() != QLatin1String(MAEMO_DEVICE_TARGET_ID)
&& target->id() != QLatin1String(MAEMO_EMULATOR_TARGET_ID))) {
return false;
}
return id == QLatin1String(MAEMO_RC_ID);
}
bool MaemoRunConfigurationFactory::canRestore(Target *parent,
const QVariantMap &map) const
{
return canCreate(parent, ProjectExplorer::idFromMap(map));
}
bool MaemoRunConfigurationFactory::canClone(Target *parent,
RunConfiguration *source) const
{
return canCreate(parent, source->id());
}
QStringList MaemoRunConfigurationFactory::availableCreationIds(Target *parent) const
{
if (Qt4Target *t = qobject_cast<Qt4Target *>(parent)) {
if (t->id() == QLatin1String(MAEMO_DEVICE_TARGET_ID)
|| t->id() == QLatin1String(MAEMO_EMULATOR_TARGET_ID)) {
return t->qt4Project()->
applicationProFilePathes(QLatin1String(MAEMO_RC_ID_PREFIX));
}
}
return QStringList();
}
QString MaemoRunConfigurationFactory::displayNameForId(const QString &id) const
{
QString target(targetFromId(id));
if (target.isEmpty())
return QString();
return tr("%1 on Maemo Device").arg(QFileInfo(target).completeBaseName());
}
RunConfiguration *MaemoRunConfigurationFactory::create(Target *parent,
const QString &id)
{
if (!canCreate(parent, id))
return 0;
Qt4Target *pqt4parent = static_cast<Qt4Target *>(parent);
MaemoRunConfiguration *rc = new MaemoRunConfiguration(pqt4parent,
targetFromId(id));
setupRunConfiguration(rc);
return rc;
}
RunConfiguration *MaemoRunConfigurationFactory::restore(Target *parent,
const QVariantMap &map)
{
if (!canRestore(parent, map))
return 0;
Qt4Target *t = static_cast<Qt4Target *>(parent);
MaemoRunConfiguration *rc = new MaemoRunConfiguration(t, QString());
if (!rc->fromMap(map)) {
delete rc;
return 0;
}
setupRunConfiguration(rc);
return rc;
}
RunConfiguration *MaemoRunConfigurationFactory::clone(Target *parent,
RunConfiguration *source)
{
if (!canClone(parent, source))
return 0;
Qt4Target *t = static_cast<Qt4Target *>(parent);
MaemoRunConfiguration *old = static_cast<MaemoRunConfiguration *>(source);
MaemoRunConfiguration *rc = new MaemoRunConfiguration(t, old);
setupRunConfiguration(rc);
return rc;
}
void MaemoRunConfigurationFactory::setupRunConfiguration(MaemoRunConfiguration *rc)
{
if (rc) {
connect(MaemoManager::instance(), SIGNAL(startStopQemu()), rc,
SLOT(startStopQemu()));
connect(rc, SIGNAL(qemuProcessStatus(bool)), MaemoManager::instance(),
SLOT(updateQemuSimulatorStarter(bool)));
}
}
void MaemoRunConfigurationFactory::projectAdded(
ProjectExplorer::Project *project)
{
connect(project, SIGNAL(addedTarget(ProjectExplorer::Target*)), this,
SLOT(targetAdded(ProjectExplorer::Target*)));
connect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)), this,
SLOT(targetRemoved(ProjectExplorer::Target*)));
foreach (Target *target, project->targets())
targetAdded(target);
}
void MaemoRunConfigurationFactory::projectRemoved(
ProjectExplorer::Project *project)
{
disconnect(project, SIGNAL(addedTarget(ProjectExplorer::Target*)), this,
SLOT(targetAdded(ProjectExplorer::Target*)));
disconnect(project, SIGNAL(removedTarget(ProjectExplorer::Target*)), this,
SLOT(targetRemoved(ProjectExplorer::Target*)));
foreach (Target *target, project->targets())
targetRemoved(target);
}
void MaemoRunConfigurationFactory::targetAdded(ProjectExplorer::Target *target)
{
if (target->id() != QLatin1String(MAEMO_EMULATOR_TARGET_ID)
&& target->id() != QLatin1String(MAEMO_DEVICE_TARGET_ID))
return;
MaemoManager::instance()->addQemuSimulatorStarter(target->project());
}
void MaemoRunConfigurationFactory::targetRemoved(ProjectExplorer::Target *target)
{
if (target->id() != QLatin1String(MAEMO_EMULATOR_TARGET_ID)
&& target->id() != QLatin1String(MAEMO_DEVICE_TARGET_ID))
return;
MaemoManager::instance()->removeQemuSimulatorStarter(target->project());
}
void MaemoRunConfigurationFactory::currentProjectChanged(
ProjectExplorer::Project *project)
{
if (!project)
return;
Target *maemoTarget(project->target(QLatin1String(MAEMO_EMULATOR_TARGET_ID)));
if (!maemoTarget)
maemoTarget = project->target(QLatin1String(MAEMO_DEVICE_TARGET_ID));
MaemoManager::instance()->setQemuSimulatorStarterEnabled(maemoTarget != 0);
bool isRunning = false;
if (maemoTarget
&& project->activeTarget() == maemoTarget
&& maemoTarget->activeRunConfiguration()) {
MaemoRunConfiguration *mrc = qobject_cast<MaemoRunConfiguration *>
(maemoTarget->activeRunConfiguration());
if (mrc)
isRunning = mrc->isQemuRunning();
}
MaemoManager::instance()->updateQemuSimulatorStarter(isRunning);
}
// #pragma mark -- MaemoRunControlFactory
MaemoRunControlFactory::MaemoRunControlFactory(QObject *parent)
: IRunControlFactory(parent)
{
}
bool MaemoRunControlFactory::canRun(RunConfiguration *runConfiguration,
const QString &mode) const
{
return qobject_cast<MaemoRunConfiguration *>(runConfiguration)
&& (mode == ProjectExplorer::Constants::RUNMODE
|| mode == ProjectExplorer::Constants::DEBUGMODE);
}
RunControl* MaemoRunControlFactory::create(RunConfiguration *runConfig,
const QString &mode)
{
MaemoRunConfiguration *rc = qobject_cast<MaemoRunConfiguration *>(runConfig);
Q_ASSERT(rc);
Q_ASSERT(mode == ProjectExplorer::Constants::RUNMODE
|| mode == ProjectExplorer::Constants::DEBUGMODE);
if (mode == ProjectExplorer::Constants::RUNMODE)
return new MaemoRunControl(rc);
return new MaemoDebugRunControl(rc);
}
QString MaemoRunControlFactory::displayName() const
{
return tr("Run on device");
}
QWidget* MaemoRunControlFactory::configurationWidget(RunConfiguration *config)
{
Q_UNUSED(config)
return 0;
}
} // namespace Internal
} // namespace Internal
} // namespace Qt4ProjectManager
......@@ -32,12 +32,13 @@
#include "maemodeviceconfigurations.h"
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/runconfiguration.h>
#include <QtCore/QDateTime>
#include <QtGui/QWidget>
#include <debugger/debuggermanager.h>
#include <projectexplorer/runconfiguration.h>
#include <projectexplorer/applicationlauncher.h>
QT_FORWARD_DECLARE_CLASS(QProcess)
QT_FORWARD_DECLARE_CLASS(QWidget)
namespace Qt4ProjectManager {
......@@ -59,8 +60,7 @@ class MaemoRunConfiguration : public ProjectExplorer::RunConfiguration
friend class MaemoRunConfigurationFactory;
public:
MaemoRunConfiguration(Qt4Target *parent,
const QString &proFilePath);
MaemoRunConfiguration(Qt4Target *parent, const QString &proFilePath);
virtual ~MaemoRunConfiguration();
bool isEnabled(ProjectExplorer::BuildConfiguration *config) const;
......@@ -107,8 +107,7 @@ signals:
void qemuProcessStatus(bool running);
protected:
MaemoRunConfiguration(Qt4Target *parent,
MaemoRunConfiguration *source);
MaemoRunConfiguration(Qt4Target *parent, MaemoRunConfiguration *source);
virtual bool fromMap(const QVariantMap &map);
private slots:
......@@ -151,56 +150,9 @@ private:
QDateTime m_debuggingHelpersLastDeployed;
QProcess *qemu;
ErrorDumper dumper;
};
class MaemoRunConfigurationFactory : public ProjectExplorer::IRunConfigurationFactory
{
Q_OBJECT
public:
explicit MaemoRunConfigurationFactory(QObject *parent = 0);
~MaemoRunConfigurationFactory();
QStringList availableCreationIds(ProjectExplorer::Target *parent) const;
QString displayNameForId(const QString &id) const;
bool canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const;
bool canClone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source) const;
bool canCreate(ProjectExplorer::Target *parent, const QString &id) const;
ProjectExplorer::RunConfiguration *restore(ProjectExplorer::Target *parent, const QVariantMap &map);
ProjectExplorer::RunConfiguration *clone(ProjectExplorer::Target *parent, ProjectExplorer::RunConfiguration *source);
ProjectExplorer::RunConfiguration *create(ProjectExplorer::Target *parent, const QString &id);
private slots:
void projectAdded(ProjectExplorer::Project *project);
void projectRemoved(ProjectExplorer::Project *project);
void targetAdded(ProjectExplorer::Target *target);
void targetRemoved(ProjectExplorer::Target *target);
void currentProjectChanged(ProjectExplorer::Project *project);
private:
void setupRunConfiguration(MaemoRunConfiguration *rc);
};
class MaemoRunControlFactory : public ProjectExplorer::IRunControlFactory
{
Q_OBJECT
public:
MaemoRunControlFactory(QObject *parent = 0);
bool canRun(ProjectExplorer::RunConfiguration *runConfiguration,
const QString &mode) const;
ProjectExplorer::RunControl* create(ProjectExplorer::RunConfiguration *runConfiguration,
const QString &mode);
QString displayName() const;
QWidget *configurationWidget(ProjectExplorer::RunConfiguration *runConfiguration);
};
} // namespace Internal
} // namespace Internal
} // namespace Qt4ProjectManager
#endif // MAEMORUNCONFIGURATION_H
/****************************************************************************
**
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the Qt Creator.
**
** $QT_BEGIN_LICENSE:LGPL$
** No Commercial Usage
** This file contains pre-release code and may not be distributed.
** You may use this file in accordance with the terms and conditions
** contained in the Technology Preview License Agreement accompanying
** this package.
**
** 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.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "maemorunfactories.h"
#include "maemoconstants.h"
#include "maemomanager.h"
#include "maemorunconfiguration.h"
#include "maemoruncontrol.h"
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/session.h>
#include <qt4projectmanager/qt4project.h>
namespace Qt4ProjectManager {
namespace Internal {
using namespace ProjectExplorer;
namespace {
QString targetFromId(const QString &id)
{
if (!id.startsWith(MAEMO_RC_ID_PREFIX))
return QString();
return id.mid(QString(MAEMO_RC_ID_PREFIX).size());
}
} // namespace
MaemoRunConfigurationFactory::MaemoRunConfigurationFactory(QObject *parent)
: IRunConfigurationFactory(parent)
{
ProjectExplorerPlugin *explorer = ProjectExplorerPlugin::instance();
connect(explorer->session(), SIGNAL(projectAdded(ProjectExplorer::Project*)),
this, SLOT(projectAdded(ProjectExplorer::Project*)));
connect(explorer->session(), SIGNAL(projectRemoved(ProjectExplorer::Project*)),
this, SLOT(projectRemoved(ProjectExplorer::Project*)));
connect(explorer, SIGNAL(currentProjectChanged(ProjectExplorer::Project*)),
this, SLOT(currentProjectChanged(ProjectExplorer::Project*)));
}
MaemoRunConfigurationFactory::~MaemoRunConfigurationFactory()
{
}
bool MaemoRunConfigurationFactory::canCreate(Target *parent,
const QString &id) const
{
Qt4Target *target = qobject_cast<Qt4Target *>(parent);
if (!target
|| (target->id() != QLatin1String(MAEMO_DEVICE_TARGET_ID)
&& target->id() != QLatin1String(MAEMO_EMULATOR_TARGET_ID))) {
return false;
}
return id == QLatin1String(MAEMO_RC_ID);
}
bool MaemoRunConfigurationFactory::canRestore(Target *parent,
const QVariantMap &map) const
{
return canCreate(parent, ProjectExplorer::idFromMap(map));
}
bool MaemoRunConfigurationFactory::canClone(Target *parent,
RunConfiguration *source) const
{
return canCreate(parent, source->id());
}
QStringList MaemoRunConfigurationFactory::availableCreationIds(Target *parent) const
{
if (Qt4Target *t = qobject_cast<Qt4Target *>(parent)) {
if (t->id() == QLatin1String(MAEMO_DEVICE_TARGET_ID)
|| t->id() == QLatin1String(MAEMO_EMULATOR_TARGET_ID)) {
return t->qt4Project()->
applicationProFilePathes(QLatin1String(MAEMO_RC_ID_PREFIX));
}
}
return QStringList();
}
QString MaemoRunConfigurationFactory::displayNameForId(const QString &id) const
{
QString target(targetFromId(id));
if (target.isEmpty())
return QString();
return tr("%1 on Maemo Device").arg(QFileInfo(target).completeBaseName());
}
RunConfiguration *MaemoRunConfigurationFactory::create(Target *parent,
const QString &id)
{
if (!canCreate(parent, id))
return 0;
Qt4Target *pqt4parent = static_cast<Qt4Target *>(parent);
MaemoRunConfiguration *rc = new MaemoRunConfiguration(pqt4parent,
targetFromId(id));
setupRunConfiguration(rc);
return rc;
}
RunConfiguration *MaemoRunConfigurationFactory::restore(Target *parent,
const QVariantMap &map)
{
if (!canRestore(parent, map))
return 0;
Qt4Target *t =