From aa7c7738015b640239c151e56851cad2689f9643 Mon Sep 17 00:00:00 2001 From: Lasse Holmstedt Date: Mon, 8 Mar 2010 14:36:44 +0100 Subject: QML project executable file to default to lowercase .qml file Use a lowercase .qml file found in project tree if no current file is selected. This way we don't have to disable run controls if there are some files to execute. Reviewed-by: kkoehne (cherry picked from commit 61ca001e67d06ebebdca38b5af9ed4c513dd2a53) --- src/plugins/qmlprojectmanager/qmlproject.cpp | 5 +++++ .../qmlprojectmanager/qmlprojectrunconfiguration.cpp | 15 +++++++++++++++ .../qmlprojectmanager/qmlprojectrunconfiguration.h | 7 ++++++- 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp index 0cf210c5df..4f11072894 100644 --- a/src/plugins/qmlprojectmanager/qmlproject.cpp +++ b/src/plugins/qmlprojectmanager/qmlproject.cpp @@ -31,6 +31,7 @@ #include "qmlprojectfile.h" #include "qmlprojectmanagerconstants.h" #include "fileformat/qmlprojectitem.h" +#include "qmlprojectrunconfiguration.h" #include #include @@ -255,6 +256,10 @@ bool QmlProject::fromMap(const QVariantMap &map) } refresh(Everything); + // FIXME workaround to guarantee that run/debug actions are enabled if a valid file exists + QmlProjectRunConfiguration *runConfig = static_cast(activeTarget()->activeRunConfiguration()); + runConfig->changeCurrentFile(0); + return true; } diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp index a8c21398b9..6efb6c9932 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp @@ -54,6 +54,7 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Internal::QmlProjectTarge ProjectExplorer::RunConfiguration(parent, QLatin1String(Constants::QML_RC_ID)), m_debugServerAddress("127.0.0.1"), m_debugServerPort(Constants::QML_DEFAULT_DEBUG_SERVER_PORT), + m_projectTarget(parent), m_usingCurrentFile(false), m_isEnabled(false) { @@ -291,6 +292,20 @@ void QmlProjectRunConfiguration::changeCurrentFile(Core::IEditor *editor) m_currentFileFilename = editor->file()->fileName(); if (Core::ICore::instance()->mimeDatabase()->findByFile(mainScript()).matchesType(QLatin1String("application/x-qml"))) enable = true; + } else { + // find a qml file with lowercase filename. This is slow but only done in initialization/other border cases. + foreach(const QString& filename, m_projectTarget->qmlProject()->files()) { + const QFileInfo fi(filename); + + if (!filename.isEmpty() && fi.baseName()[0].isLower() + && Core::ICore::instance()->mimeDatabase()->findByFile(fi).matchesType(QLatin1String("application/x-qml"))) + { + m_currentFileFilename = filename; + enable = true; + break; + } + + } } setEnabled(enable); diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h index 76efd3147e..12d61a071e 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h +++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h @@ -71,8 +71,11 @@ public: QVariantMap toMap() const; -private slots: +public slots: void changeCurrentFile(Core::IEditor*); + +private slots: + QString mainScript() const; void setMainScript(const QString &scriptFile); @@ -101,6 +104,8 @@ private: QString m_debugServerAddress; uint m_debugServerPort; + Internal::QmlProjectTarget *m_projectTarget; + bool m_usingCurrentFile; bool m_isEnabled; -- cgit v1.2.3