diff --git a/src/plugins/projectexplorer/kit.cpp b/src/plugins/projectexplorer/kit.cpp index 9929e8427ed582e9cfcbc3e21a5706e0f4caa96f..0ab29c274ff89d600c3987cf7d0c2ab9827b8e7d 100644 --- a/src/plugins/projectexplorer/kit.cpp +++ b/src/plugins/projectexplorer/kit.cpp @@ -87,6 +87,7 @@ public: m_id(id), m_autodetected(false), m_isValid(true), + m_hasWarning(false), m_nestedBlockingLevel(0), m_mustNotify(false) { @@ -98,6 +99,7 @@ public: Id m_id; bool m_autodetected; bool m_isValid; + bool m_hasWarning; QIcon m_icon; QString m_iconPath; int m_nestedBlockingLevel; @@ -176,16 +178,24 @@ bool Kit::isValid() const return d->m_id.isValid() && d->m_isValid; } +bool Kit::hasWarning() const +{ + return d->m_hasWarning; +} + QList<Task> Kit::validate() const { QList<Task> result; QList<KitInformation *> infoList = KitManager::instance()->kitInformation(); d->m_isValid = true; + d->m_hasWarning = false; foreach (KitInformation *i, infoList) { QList<Task> tmp = i->validate(this); foreach (const Task &t, tmp) { if (t.type == Task::Error) d->m_isValid = false; + if (t.type == Task::Warning) + d->m_hasWarning = true; } result.append(tmp); } @@ -411,7 +421,7 @@ QString Kit::toHtml() str << "<h3>" << displayName() << "</h3>"; str << "<table>"; - if (!isValid()) { + if (!isValid() || hasWarning()) { QList<Task> issues = validate(); str << "<p>"; foreach (const Task &t, issues) { diff --git a/src/plugins/projectexplorer/kit.h b/src/plugins/projectexplorer/kit.h index 78a1ba49919508ce12ba0bbcfeb06a78152fd059..c4b9a2dcb754097551dddf31a07e60b7050c1784 100644 --- a/src/plugins/projectexplorer/kit.h +++ b/src/plugins/projectexplorer/kit.h @@ -64,6 +64,7 @@ public: void unblockNotification(); bool isValid() const; + bool hasWarning() const; QList<Task> validate() const; void fix(); // Fix the individual kit information. void setup(); // Apply advanced magic(TM). Used only once on each kit during initial setup. diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp index 6fa48cf7d82ed6d56a1d6cd6b90283bd894b40fb..750b3fc479fb763c801d9a86521ec3146b952f70 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp @@ -157,6 +157,11 @@ bool KitManagerConfigWidget::isValid() const return m_modifiedKit->isValid(); } +bool KitManagerConfigWidget::hasWarning() const +{ + return m_modifiedKit->hasWarning(); +} + QString KitManagerConfigWidget::validityMessage() const { return m_modifiedKit->toHtml(); diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.h b/src/plugins/projectexplorer/kitmanagerconfigwidget.h index 9267034e0262c6a6c7311abe1ec9f36ddd073da1..9ea72406c510c195d63a74284ec28aaf6e5a6be3 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.h +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.h @@ -60,6 +60,7 @@ public: void discard(); bool isDirty() const; bool isValid() const; + bool hasWarning() const; QString validityMessage() const; void addConfigWidget(ProjectExplorer::KitConfigWidget *widget); void makeReadOnly(); diff --git a/src/plugins/projectexplorer/kitmodel.cpp b/src/plugins/projectexplorer/kitmodel.cpp index 3c6732f91f358968fa66c87652d5cd9c9fc42186..061ae49869c3afaeabf3ad749561158adf8494ec 100644 --- a/src/plugins/projectexplorer/kitmodel.cpp +++ b/src/plugins/projectexplorer/kitmodel.cpp @@ -154,6 +154,7 @@ int KitModel::columnCount(const QModelIndex &parent) const QVariant KitModel::data(const QModelIndex &index, int role) const { static QIcon warningIcon(QLatin1String(":/projectexplorer/images/compile_warning.png")); + static QIcon errorIcon(QLatin1String(":/projectexplorer/images/compile_error.png")); if (!index.isValid() || index.column() != 0) return QVariant(); @@ -179,7 +180,11 @@ QVariant KitModel::data(const QModelIndex &index, int role) const baseName = tr("%1 (default)").arg(baseName); return baseName; } else if (role == Qt::DecorationRole) { - return node->widget->isValid() ? QIcon() : warningIcon; + if (!node->widget->isValid()) + return errorIcon; + if (node->widget->hasWarning()) + return warningIcon; + return QIcon(); } else if (role == Qt::ToolTipRole) { return node->widget->validityMessage(); }