diff --git a/src/plugins/qt4projectmanager/qmldumptool.cpp b/src/plugins/qt4projectmanager/qmldumptool.cpp index 0fc5411414fd3bf8498f32ab9afd096a94d27c62..e39956b8a1425dfb7a55a1e8fd98c3dd1e2b959b 100644 --- a/src/plugins/qt4projectmanager/qmldumptool.cpp +++ b/src/plugins/qt4projectmanager/qmldumptool.cpp @@ -126,7 +126,7 @@ static inline QStringList validBinaryFilenames() << QLatin1String("qmldump.app/Contents/MacOS/qmldump"); } -bool QmlDumpTool::canBuild(QtVersion *qtVersion) +bool QmlDumpTool::canBuild(const QtVersion *qtVersion) { const QString installHeaders = qtVersion->versionInfo().value("QT_INSTALL_HEADERS"); const QString header = installHeaders + QLatin1String("/QtDeclarative/private/qdeclarativemetatype_p.h"); diff --git a/src/plugins/qt4projectmanager/qmldumptool.h b/src/plugins/qt4projectmanager/qmldumptool.h index 3201f7ba3e6c764bd403c342b34ab7a83b525a30..6924690865b594b883d64d545b65942629deb60f 100644 --- a/src/plugins/qt4projectmanager/qmldumptool.h +++ b/src/plugins/qt4projectmanager/qmldumptool.h @@ -47,7 +47,7 @@ class QtVersion; class QT4PROJECTMANAGER_EXPORT QmlDumpTool : public Utils::BuildableHelperLibrary { public: - static bool canBuild(QtVersion *qtVersion); + static bool canBuild(const QtVersion *qtVersion); static QString toolForProject(ProjectExplorer::Project *project); static QString toolByInstallData(const QString &qtInstallData); static QStringList locationsByInstallData(const QString &qtInstallData); diff --git a/src/plugins/qt4projectmanager/qmlobservertool.cpp b/src/plugins/qt4projectmanager/qmlobservertool.cpp index 1a456062af0ed8b63994970d0572a82b9d0dab24..e444d89bbb6442716a09748711ab75de94d1ee1e 100644 --- a/src/plugins/qt4projectmanager/qmlobservertool.cpp +++ b/src/plugins/qt4projectmanager/qmlobservertool.cpp @@ -51,7 +51,7 @@ static inline QStringList validBinaryFilenames() << QLatin1String("QMLObserver.app/Contents/MacOS/QMLObserver"); } -bool QmlObserverTool::canBuild(QtVersion *qtVersion) +bool QmlObserverTool::canBuild(const QtVersion *qtVersion) { return checkMinimumQtVersion(qtVersion->qtVersionString(), 4, 7, 1); } diff --git a/src/plugins/qt4projectmanager/qmlobservertool.h b/src/plugins/qt4projectmanager/qmlobservertool.h index 89cbca67460e21d842346c92e2f70bdb58432a7a..78c8ffc5ae9f58c9dfaa009a67802ef0082809a0 100644 --- a/src/plugins/qt4projectmanager/qmlobservertool.h +++ b/src/plugins/qt4projectmanager/qmlobservertool.h @@ -48,7 +48,7 @@ class QtVersion; class QT4PROJECTMANAGER_EXPORT QmlObserverTool : public Utils::BuildableHelperLibrary { public: - static bool canBuild(QtVersion *qtVersion); + static bool canBuild(const QtVersion *qtVersion); static QString toolForProject(ProjectExplorer::Project *project); static QString toolByInstallData(const QString &qtInstallData); static QStringList locationsByInstallData(const QString &qtInstallData); diff --git a/src/plugins/qt4projectmanager/qtoptionspage.cpp b/src/plugins/qt4projectmanager/qtoptionspage.cpp index 01798677512f9b3acbb6d08117bf1f53fd394327..9c3d23dcd77b408e8cd6ac416cd5c9c49950c20b 100644 --- a/src/plugins/qt4projectmanager/qtoptionspage.cpp +++ b/src/plugins/qt4projectmanager/qtoptionspage.cpp @@ -33,6 +33,8 @@ #include "qt4projectmanagerconstants.h" #include "qt4target.h" #include "qtversionmanager.h" +#include "qmldumptool.h" +#include "qmlobservertool.h" #include <projectexplorer/debugginghelper.h> #include <coreplugin/coreconstants.h> @@ -238,7 +240,9 @@ QtOptionsPageWidget::QtOptionsPageWidget(QWidget *parent, QList<QtVersion *> ver QIcon QtOptionsPageWidget::debuggerHelperIconForQtVersion(const QtVersion *version) { - if (version->hasDebuggingHelper() && version->hasQmlDump() && version->hasQmlObserver()) { + if (version->hasDebuggingHelper() + && (!QmlDumpTool::canBuild(version) || version->hasQmlDump()) + && (!QmlObserverTool::canBuild(version) || version->hasQmlObserver())) { return m_debuggingHelperOkIcon; } else if (!version->hasDebuggingHelper() && !version->hasQmlDump() && !version->hasQmlObserver()) { return m_debuggingHelperErrorIcon; @@ -248,7 +252,9 @@ QIcon QtOptionsPageWidget::debuggerHelperIconForQtVersion(const QtVersion *versi QPixmap QtOptionsPageWidget::debuggerHelperPixmapForQtVersion(const QtVersion *version) { - if (version->hasDebuggingHelper() && version->hasQmlDump() && version->hasQmlObserver()) { + if (version->hasDebuggingHelper() + && (!QmlDumpTool::canBuild(version) || version->hasQmlDump()) + && (!QmlObserverTool::canBuild(version) || version->hasQmlObserver())) { return m_debuggingHelperOkPixmap; } else if (!version->hasDebuggingHelper() && !version->hasQmlDump() && !version->hasQmlObserver()) { return m_debuggingHelperErrorPixmap; @@ -311,7 +317,9 @@ void QtOptionsPageWidget::debuggingHelperBuildFinished(const QString &name, cons QTC_ASSERT(item, return) item->setData(2, Qt::UserRole, output); QSharedPointerQtVersion qtVersion = m_versions.at(index); - const bool success = qtVersion->hasDebuggingHelper() && qtVersion->hasQmlDump() && qtVersion->hasQmlObserver(); + const bool success = qtVersion->hasDebuggingHelper() + && (!QmlDumpTool::canBuild(qtVersion.data()) || qtVersion->hasQmlDump()) + && (!QmlObserverTool::canBuild(qtVersion.data()) || qtVersion->hasQmlObserver()); item->setData(2, Qt::DecorationRole, debuggerHelperIconForQtVersion(qtVersion.data())); // Update bottom control if the selection is still the same @@ -404,12 +412,16 @@ static inline QString msgHtmlHelperToolTip(const QString &gdbHelperPath, const Q QString notFound = QtOptionsPageWidget::tr("Binary not found"); //: Tooltip showing the debugging helper library file. - return QtOptionsPageWidget::tr("<html><body><table><tr><td>File:</td><td><pre>%1</pre></td></tr>" + return QtOptionsPageWidget::tr("<html><body><table>" + "<tr><td colspan=\"2\"><b>GDB debugging helpers</b></td></tr>" + "<tr><td>File:</td><td><pre>%1</pre></td></tr>" "<tr><td>Last modified:</td><td>%2</td></tr>" "<tr><td>Size:</td><td>%3 Bytes</td></tr>" + "<tr><td colspan=\"2\"><b>QML type dumper</b></td></tr>" "<tr><td>File:</td><td><pre>%4</pre></td></tr>" "<tr><td>Last modified:</td><td>%5</td></tr>" "<tr><td>Size:</td><td>%6 Bytes</td></tr>" + "<tr><td colspan=\"2\"><b>QML observer</b></td></tr>" "<tr><td>File:</td><td><pre>%7</pre></td></tr>" "<tr><td>Last modified:</td><td>%8</td></tr>" "<tr><td>Size:</td><td>%9 Bytes</td></tr>" @@ -432,12 +444,10 @@ void QtOptionsPageWidget::updateDebuggingHelperStateLabel(const QtVersion *versi { QString tooltip; if (version && version->isValid()) { - const bool hasHelpers = version->hasDebuggingHelper() && version->hasQmlDump() && version->hasQmlObserver(); m_ui->debuggingHelperStateLabel->setPixmap(debuggerHelperPixmapForQtVersion(version)); - if (hasHelpers) - tooltip = msgHtmlHelperToolTip(version->debuggingHelperLibrary(), - version->qmlDumpTool(), - version->qmlObserverTool()); + tooltip = msgHtmlHelperToolTip(version->debuggingHelperLibrary(), + version->qmlDumpTool(), + version->qmlObserverTool()); } else { m_ui->debuggingHelperStateLabel->setPixmap(QPixmap()); }