diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h index 0da0279603cbe9035df0944474046b2f2d9decc9..a9b98a7ee26f45dfea297cfbc215b1a0f0b580f7 100644 --- a/src/plugins/projectexplorer/buildstep.h +++ b/src/plugins/projectexplorer/buildstep.h @@ -136,9 +136,12 @@ public: : QWidget() {} virtual QString summaryText() const = 0; + virtual QString additionalSummaryText() const { return QString(); } virtual QString displayName() const = 0; + signals: void updateSummary(); + void updateAdditionalSummary(); }; } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/buildstepspage.cpp b/src/plugins/projectexplorer/buildstepspage.cpp index 52e742fcd647f9bda32ac5efa94224150144ee35..27f7016761352ac38de2b398b8c750e6229482be 100644 --- a/src/plugins/projectexplorer/buildstepspage.cpp +++ b/src/plugins/projectexplorer/buildstepspage.cpp @@ -140,6 +140,19 @@ void BuildStepListWidget::updateSummary() } } +void BuildStepListWidget::updateAdditionalSummary() +{ + BuildStepConfigWidget *widget = qobject_cast<BuildStepConfigWidget *>(sender()); + if (widget) { + foreach (const BuildStepsWidgetData *s, m_buildStepsData) { + if (s->widget == widget) { + s->detailsWidget->setAdditionalSummaryText(widget->additionalSummaryText()); + break; + } + } + } +} + void BuildStepListWidget::init(BuildStepList *bsl) { Q_ASSERT(bsl); @@ -222,6 +235,8 @@ void BuildStepListWidget::addBuildStepWidget(int pos, BuildStep *step) connect(s->widget, SIGNAL(updateSummary()), this, SLOT(updateSummary())); + connect(s->widget, SIGNAL(updateAdditionalSummary()), + this, SLOT(updateAdditionalSummary())); connect(s->upButton, SIGNAL(clicked()), m_upMapper, SLOT(map())); diff --git a/src/plugins/projectexplorer/buildstepspage.h b/src/plugins/projectexplorer/buildstepspage.h index e770fb8c8425f5a20daa77aedc48c65f43052fc5..56ddb6874becb8159789938f402e3aa1289fb7c9 100644 --- a/src/plugins/projectexplorer/buildstepspage.h +++ b/src/plugins/projectexplorer/buildstepspage.h @@ -85,6 +85,7 @@ private slots: void triggerAddBuildStep(); void addBuildStep(int pos); void updateSummary(); + void updateAdditionalSummary(); void triggerStepMoveUp(int pos); void stepMoved(int from, int to); void triggerStepMoveDown(int pos); diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index abecb0d5cb89f91d21c83ed786ebe754416669e3..f1f8ed0fe88a136f967b32f3ff1cfa2c9378ba37 100644 --- a/src/plugins/qt4projectmanager/qmakestep.cpp +++ b/src/plugins/qt4projectmanager/qmakestep.cpp @@ -537,6 +537,11 @@ QString QMakeStepConfigWidget::summaryText() const return m_summaryText; } +QString QMakeStepConfigWidget::additionalSummaryText() const +{ + return m_additionalSummaryText; +} + QString QMakeStepConfigWidget::displayName() const { return m_step->displayName(); @@ -664,18 +669,24 @@ void QMakeStepConfigWidget::updateSummaryLabel() Qt4BuildConfiguration *qt4bc = m_step->qt4BuildConfiguration(); QtSupport::BaseQtVersion *qtVersion = qt4bc->qtVersion(); if (!qtVersion) { - m_summaryText = tr("<b>qmake:</b> No Qt version set. Cannot run qmake."); - emit updateSummary(); + setSummaryText(tr("<b>qmake:</b> No Qt version set. Cannot run qmake.")); return; } - // We don't want the full path to the .pro file QString args = m_step->allArguments(true); // And we only use the .pro filename not the full path QString program = QFileInfo(qtVersion->qmakeCommand()).fileName(); - m_summaryText = tr("<b>qmake:</b> %1 %2").arg(program, args); - emit updateSummary(); + setSummaryText(tr("<b>qmake:</b> %1 %2").arg(program, args)); + ToolChain *tc = qt4bc->toolChain(); + if (!tc) + return; + + QString tcSpec = tc->mkspec(); + if (!tcSpec.isEmpty() && tcSpec != m_step->mkspec()) + setAdditionalSummaryText(tr("<b>Warning:</b> The tool chain suggested \"%1\" as mkspec.").arg(tcSpec)); + else + setAdditionalSummaryText(QString()); } void QMakeStepConfigWidget::updateQmlDebuggingOption() @@ -723,6 +734,22 @@ void QMakeStepConfigWidget::recompileMessageBoxFinished(int button) } } +void QMakeStepConfigWidget::setSummaryText(const QString &text) +{ + if (text == m_summaryText) + return; + m_summaryText = text; + emit updateSummary(); +} + +void QMakeStepConfigWidget::setAdditionalSummaryText(const QString &text) +{ + if (text == m_additionalSummaryText) + return; + m_additionalSummaryText = text; + emit updateAdditionalSummary(); +} + //// // QMakeStepFactory //// diff --git a/src/plugins/qt4projectmanager/qmakestep.h b/src/plugins/qt4projectmanager/qmakestep.h index 2a23acbb2e7cc8f7abf53cbab87bf43a1b76936a..0a779fb3d09f9e3ae64d9768339f7e77687745bf 100644 --- a/src/plugins/qt4projectmanager/qmakestep.h +++ b/src/plugins/qt4projectmanager/qmakestep.h @@ -143,6 +143,7 @@ public: QMakeStepConfigWidget(QMakeStep *step); ~QMakeStepConfigWidget(); QString summaryText() const; + QString additionalSummaryText() const; QString displayName() const; private slots: // slots for handling buildconfiguration/step signals @@ -167,9 +168,14 @@ private: void updateSummaryLabel(); void updateQmlDebuggingOption(); void updateEffectiveQMakeCall(); + + void setSummaryText(const QString &); + void setAdditionalSummaryText(const QString &); + Ui::QMakeStep *m_ui; QMakeStep *m_step; QString m_summaryText; + QString m_additionalSummaryText; bool m_ignoreChange; };