QmlProjectRunConfiguration: update enabled state on adding to a project

Task-number: QTCREATORBUG-7980

Change-Id: I63fa4809772ce2f7169baf3270fe753b22ea4a04
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
This commit is contained in:
Daniel Teske
2012-10-09 16:20:26 +02:00
parent f9c718c196
commit 558a4e4c97
3 changed files with 26 additions and 10 deletions

View File

@@ -74,6 +74,9 @@ QmlProject::QmlProject(Internal::Manager *manager, const QString &fileName)
Core::DocumentManager::addDocument(m_file, true); Core::DocumentManager::addDocument(m_file, true);
m_manager->registerProject(this); m_manager->registerProject(this);
connect(this, SIGNAL(addedTarget(ProjectExplorer::Target*)),
this, SLOT(addedTarget(ProjectExplorer::Target*)));
} }
QmlProject::~QmlProject() QmlProject::~QmlProject()
@@ -86,6 +89,23 @@ QmlProject::~QmlProject()
delete m_rootNode; delete m_rootNode;
} }
void QmlProject::addedTarget(ProjectExplorer::Target *target)
{
connect(target, SIGNAL(addedRunConfiguration(ProjectExplorer::RunConfiguration*)),
this, SLOT(addedRunConfiguration(ProjectExplorer::RunConfiguration*)));
foreach (ProjectExplorer::RunConfiguration *rc, target->runConfigurations())
addedRunConfiguration(rc);
}
void QmlProject::addedRunConfiguration(ProjectExplorer::RunConfiguration *rc)
{
// The enabled state of qml runconfigurations can only be decided after
// they have been added to a project
QmlProjectRunConfiguration *qmlrc = qobject_cast<QmlProjectRunConfiguration *>(rc);
if (qmlrc)
qmlrc->updateEnabled();
}
QDir QmlProject::projectDir() const QDir QmlProject::projectDir() const
{ {
return QFileInfo(document()->fileName()).dir(); return QFileInfo(document()->fileName()).dir();
@@ -309,13 +329,6 @@ bool QmlProject::fromMap(const QVariantMap &map)
addTarget(createTarget(defaultKit)); addTarget(createTarget(defaultKit));
refresh(Everything); refresh(Everything);
// FIXME workaround to guarantee that run/debug actions are enabled if a valid file exists
if (activeTarget()) {
QmlProjectRunConfiguration *runConfig = qobject_cast<QmlProjectRunConfiguration*>(activeTarget()->activeRunConfiguration());
if (runConfig)
runConfig->changeCurrentFile(0);
}
return true; return true;
} }

View File

@@ -36,6 +36,7 @@
#include <QDeclarativeEngine> #include <QDeclarativeEngine>
namespace ProjectExplorer { class RunConfiguration; }
namespace QmlJS { class ModelManagerInterface; } namespace QmlJS { class ModelManagerInterface; }
namespace Utils { class FileSystemWatcher; } namespace Utils { class FileSystemWatcher; }
@@ -94,6 +95,8 @@ public:
private slots: private slots:
void refreshFiles(const QSet<QString> &added, const QSet<QString> &removed); void refreshFiles(const QSet<QString> &added, const QSet<QString> &removed);
void addedTarget(ProjectExplorer::Target *target);
void addedRunConfiguration(ProjectExplorer::RunConfiguration *);
protected: protected:
bool fromMap(const QVariantMap &map); bool fromMap(const QVariantMap &map);

View File

@@ -50,6 +50,7 @@ namespace Utils {
namespace QtSupport { class BaseQtVersion; } namespace QtSupport { class BaseQtVersion; }
namespace QmlProjectManager { namespace QmlProjectManager {
class QmlProject;
namespace Internal { namespace Internal {
class QmlProjectRunConfigurationFactory; class QmlProjectRunConfigurationFactory;
@@ -61,6 +62,7 @@ class QMLPROJECTMANAGER_EXPORT QmlProjectRunConfiguration : public ProjectExplor
Q_OBJECT Q_OBJECT
friend class Internal::QmlProjectRunConfigurationFactory; friend class Internal::QmlProjectRunConfigurationFactory;
friend class Internal::QmlProjectRunConfigurationWidget; friend class Internal::QmlProjectRunConfigurationWidget;
friend class QmlProject; // to call updateEnabled()
public: public:
QmlProjectRunConfiguration(ProjectExplorer::Target *parent, Core::Id id); QmlProjectRunConfiguration(ProjectExplorer::Target *parent, Core::Id id);
@@ -93,10 +95,8 @@ public:
ProjectExplorer::Abi abi() const; ProjectExplorer::Abi abi() const;
public slots:
void changeCurrentFile(Core::IEditor*);
private slots: private slots:
void changeCurrentFile(Core::IEditor*);
void updateEnabled(); void updateEnabled();
protected: protected: