diff options
author | Christiaan Janssen <christiaan.janssen@nokia.com> | 2011-07-05 13:14:37 +0200 |
---|---|---|
committer | hjk <qthjk@ovi.com> | 2011-07-05 13:20:38 +0200 |
commit | 8b964f96412346bd3c47eb9ceb6c2db9e8d6743a (patch) | |
tree | cd99684627bd96376a5097a5a47591b400a1e266 /src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp | |
parent | 45212d3c1a73d788ba49f6fd7923240105ad3136 (diff) | |
download | qt-creator-8b964f96412346bd3c47eb9ceb6c2db9e8d6743a.tar.gz |
QmlProfiler: renamed runcontrol factory
Change-Id: I1d857d5cf63c01d766874469e7edde6a2c591dca
Reviewed-on: http://codereview.qt.nokia.com/1162
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: hjk <qthjk@ovi.com>
Diffstat (limited to 'src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp')
-rw-r--r-- | src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp new file mode 100644 index 0000000000..90f4496b92 --- /dev/null +++ b/src/plugins/qmlprofiler/qmlprofilerruncontrolfactory.cpp @@ -0,0 +1,159 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (info@qt.nokia.com) +** +** 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 info@qt.nokia.com. +** +**************************************************************************/ + +#include "qmlprofilerruncontrolfactory.h" +#include "qmlprojectmanager/qmlprojectrunconfiguration.h" + +#include <analyzerbase/analyzerstartparameters.h> +#include <analyzerbase/analyzermanager.h> +#include <analyzerbase/analyzersettings.h> +#include <analyzerbase/analyzerrunconfigwidget.h> + +#include <projectexplorer/applicationrunconfiguration.h> +#include <projectexplorer/projectexplorer.h> + +#include <remotelinux/linuxdeviceconfiguration.h> +#include <remotelinux/remotelinuxrunconfiguration.h> +#include <qt4projectmanager/qt-s60/s60devicedebugruncontrol.h> +#include <qt4projectmanager/qt-s60/s60devicerunconfiguration.h> + +#include <utils/qtcassert.h> + +#include <QtGui/QAction> + +using namespace Analyzer; +using namespace ProjectExplorer; +using namespace QmlProfiler::Internal; +using namespace QmlProjectManager; + +QmlProfilerRunControlFactory::QmlProfilerRunControlFactory(QObject *parent) + : IRunControlFactory(parent) +{ + setObjectName(QLatin1String("QmlProfilerRunControlFactory")); +} + +bool QmlProfilerRunControlFactory::canRun(RunConfiguration *runConfiguration, const QString &mode) const +{ + // FIXME: Should this just accept all mode == QLatin1String("QmlProfiler"); ? + if (qobject_cast<QmlProjectRunConfiguration *>(runConfiguration)) + return mode == QLatin1String("QmlProfiler"); + if (qobject_cast<RemoteLinux::RemoteLinuxRunConfiguration *>(runConfiguration)) + return mode == QLatin1String("QmlProfiler"); + if (qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration)) + return mode == QLatin1String("QmlProfiler"); + if (qobject_cast<Qt4ProjectManager::S60DeviceRunConfiguration *>(runConfiguration)) + return mode == QLatin1String("QmlProfiler"); + return false; +} + +RunControl *QmlProfilerRunControlFactory::create(RunConfiguration *runConfiguration, const QString &mode) +{ + QTC_ASSERT(canRun(runConfiguration, mode), return 0); + AnalyzerStartParameters sp; + sp.toolId = "QmlProfiler"; + sp.startMode = StartQml; // FIXME: The parameter struct is not needed/not used. + + + // FIXME: This is only used to communicate the connParams settings. + if (QmlProjectRunConfiguration *rc1 = + qobject_cast<QmlProjectRunConfiguration *>(runConfiguration)) { + // This is a "plain" .qmlproject. + sp.environment = rc1->environment(); + sp.workingDirectory = rc1->workingDirectory(); + sp.debuggee = rc1->observerPath(); + sp.debuggeeArgs = rc1->viewerArguments(); + sp.displayName = rc1->displayName(); + sp.connParams.host = QLatin1String("localhost"); + sp.connParams.port = rc1->qmlDebugServerPort(); + } else if (LocalApplicationRunConfiguration *rc2 = + qobject_cast<LocalApplicationRunConfiguration *>(runConfiguration)) { + sp.environment = rc2->environment(); + sp.workingDirectory = rc2->workingDirectory(); + sp.debuggee = rc2->executable(); + sp.debuggeeArgs = rc2->commandLineArguments(); + sp.displayName = rc2->displayName(); + sp.connParams.host = QLatin1String("localhost"); + sp.connParams.port = rc2->qmlDebugServerPort(); + } else if (RemoteLinux::RemoteLinuxRunConfiguration *rc3 = + qobject_cast<RemoteLinux::RemoteLinuxRunConfiguration *>(runConfiguration)) { + sp.debuggee = rc3->remoteExecutableFilePath(); + sp.debuggeeArgs = rc3->arguments(); + sp.connParams = rc3->deviceConfig()->sshParameters(); + sp.analyzerCmdPrefix = rc3->commandPrefix(); + sp.displayName = rc3->displayName(); + } else if (Qt4ProjectManager::S60DeviceRunConfiguration *rc4 = + qobject_cast<Qt4ProjectManager::S60DeviceRunConfiguration *>(runConfiguration)) { + //sp.environment = rc4->environment(); + //sp.workingDirectory = rc4->workingDirectory(); + //sp.debuggee = rc4->executable(); + sp.debuggeeArgs = rc4->commandLineArguments(); + sp.displayName = rc4->displayName(); + sp.connParams.host = QLatin1String("localhost"); + sp.connParams.port = rc4->qmlDebugServerPort(); + } else { + // What could that be? + QTC_ASSERT(false, return 0); + } + + IAnalyzerTool *tool = AnalyzerManager::toolFromId(mode.toLatin1()); + AnalyzerRunControl *rc = new AnalyzerRunControl(tool, sp, runConfiguration); + QObject::connect(AnalyzerManager::stopAction(), SIGNAL(triggered()), rc, SLOT(stopIt())); + return rc; +} + +QString QmlProfilerRunControlFactory::displayName() const +{ + return tr("QML Profiler"); +} + +IRunConfigurationAspect *QmlProfilerRunControlFactory::createRunConfigurationAspect() +{ + return new AnalyzerProjectSettings; +} + +RunConfigWidget *QmlProfilerRunControlFactory::createConfigurationWidget(RunConfiguration *runConfiguration) +{ + QmlProjectManager::QmlProjectRunConfiguration *localRc = + qobject_cast<QmlProjectManager::QmlProjectRunConfiguration *>(runConfiguration); + if (!localRc) + return 0; + + AnalyzerProjectSettings *settings = runConfiguration->extraAspect<AnalyzerProjectSettings>(); + if (!settings) + return 0; + + Analyzer::AnalyzerRunConfigWidget *ret = new Analyzer::AnalyzerRunConfigWidget; + + ret->setRunConfiguration(runConfiguration); + return ret; +} |