From 399ad59faa00808634e629bae3e401be932d33df Mon Sep 17 00:00:00 2001 From: kh1 <qt-info@nokia.com> Date: Tue, 23 Feb 2010 16:17:04 +0100 Subject: [PATCH] Move the factories inside there own source files. --- .../qt-maemo/maemoconstants.h | 55 ++++ .../qt-maemo/maemomanager.cpp | 1 + .../qt-maemo/maemorunconfiguration.cpp | 265 +--------------- .../qt-maemo/maemorunconfiguration.h | 64 +--- .../qt-maemo/maemorunfactories.cpp | 284 ++++++++++++++++++ .../qt-maemo/maemorunfactories.h | 95 ++++++ .../qt4projectmanager/qt-maemo/qt-maemo.pri | 9 +- 7 files changed, 454 insertions(+), 319 deletions(-) create mode 100644 src/plugins/qt4projectmanager/qt-maemo/maemoconstants.h create mode 100644 src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp create mode 100644 src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.h diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoconstants.h b/src/plugins/qt4projectmanager/qt-maemo/maemoconstants.h new file mode 100644 index 00000000000..c2d920ad9c9 --- /dev/null +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoconstants.h @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** 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 diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp index 879f9b9ad31..826f5634c98 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp @@ -30,6 +30,7 @@ #include "maemomanager.h" #include "maemodeviceconfigurations.h" +#include "maemorunfactories.h" #include "maemosettingspage.h" #include "maemotoolchain.h" #include "maemorunconfiguration.h" diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp index ae2b5766bc0..65034d0359e 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.cpp @@ -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 diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h index 9719b472f68..ad0c9796ce8 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfiguration.h @@ -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 diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp new file mode 100644 index 00000000000..5f270a13b02 --- /dev/null +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.cpp @@ -0,0 +1,284 @@ +/**************************************************************************** +** +** 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 = 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) +{ +} + +MaemoRunControlFactory::~MaemoRunControlFactory() +{ +} + +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 Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.h new file mode 100644 index 00000000000..ae99dedf94e --- /dev/null +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunfactories.h @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** 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 MAEMORUNFACTORIES_H +#define MAEMORUNFACTORIES_H + +#include <projectexplorer/runconfiguration.h> + +namespace Qt4ProjectManager { + namespace Internal { + +class MaemoRunConfiguration; +using namespace ProjectExplorer; + +class MaemoRunConfigurationFactory : public IRunConfigurationFactory +{ + Q_OBJECT + +public: + explicit MaemoRunConfigurationFactory(QObject *parent = 0); + ~MaemoRunConfigurationFactory(); + + QString displayNameForId(const QString &id) const; + QStringList availableCreationIds(Target *parent) const; + + bool canCreate(Target *parent, const QString &id) const; + RunConfiguration *create(Target *parent, const QString &id); + + bool canRestore(Target *parent, const QVariantMap &map) const; + RunConfiguration *restore(Target *parent, const QVariantMap &map); + + bool canClone(Target *parent, RunConfiguration *source) const; + RunConfiguration *clone(Target *parent, RunConfiguration *source); + +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 IRunControlFactory +{ + Q_OBJECT +public: + explicit MaemoRunControlFactory(QObject *parent = 0); + ~MaemoRunControlFactory(); + + QString displayName() const; + QWidget *configurationWidget(RunConfiguration *runConfiguration); + + bool canRun(RunConfiguration *runConfiguration, const QString &mode) const; + RunControl* create(RunConfiguration *runConfiguration, const QString &mode); +}; + + } // namespace Internal +} // namespace Qt4ProjectManager + +#endif // MAEMORUNFACTORIES_H diff --git a/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri b/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri index 79abb2f613d..46c13a3fd63 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri +++ b/src/plugins/qt4projectmanager/qt-maemo/qt-maemo.pri @@ -10,7 +10,10 @@ HEADERS += $$PWD/maemorunconfiguration.h \ $$PWD/maemosshconnection.h \ $$PWD/maemosshthread.h \ $$PWD/maemoruncontrol.h \ - $$PWD/maemorunconfigurationwidget.h + $$PWD/maemorunconfigurationwidget.h \ + $$PWD/maemorunfactories.h \ + $$PWD/maemoconstants.h + SOURCES += $$PWD/maemorunconfiguration.cpp \ $$PWD/maemomanager.cpp \ $$PWD/maemotoolchain.cpp \ @@ -20,6 +23,8 @@ SOURCES += $$PWD/maemorunconfiguration.cpp \ $$PWD/maemosshconnection.cpp \ $$PWD/maemosshthread.cpp \ $$PWD/maemoruncontrol.cpp \ - $$PWD/maemorunconfigurationwidget.cpp + $$PWD/maemorunconfigurationwidget.cpp \ + $$PWD/maemorunfactories.cpp + FORMS += $$PWD/maemosettingswidget.ui RESOURCES += $$PWD/qt-maemo.qrc -- GitLab