diff --git a/src/plugins/projectexplorer/kitconfigwidget.h b/src/plugins/projectexplorer/kitconfigwidget.h index b1d518900e2d17fe198746379bdb8c43f3cfb2ac..ccee9c32690a8bdc8359fc0959375f53e2e2993b 100644 --- a/src/plugins/projectexplorer/kitconfigwidget.h +++ b/src/plugins/projectexplorer/kitconfigwidget.h @@ -53,6 +53,7 @@ public: virtual QString toolTip() const { return QString(); } virtual void makeReadOnly() = 0; virtual void refresh() = 0; + virtual bool visibleInKit() { return true; } virtual QWidget *mainWidget() const = 0; virtual QWidget *buttonWidget() const { return 0; } diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp index 44c3c1910b80cefcb709c8c6753284c31caca7af..b57869d1b266ab10fc90151d27368bdf8e442f78 100644 --- a/src/plugins/projectexplorer/kitmanager.cpp +++ b/src/plugins/projectexplorer/kitmanager.cpp @@ -379,6 +379,8 @@ Internal::KitManagerConfigWidget *KitManager::createConfigWidget(Kit *k) const foreach (KitInformation *ki, d->m_informationList) result->addConfigWidget(ki->createConfigWidget(result->workingCopy())); + result->updateVisibility(); + return result; } diff --git a/src/plugins/projectexplorer/kitmanager.h b/src/plugins/projectexplorer/kitmanager.h index bfe1b9ff38060731b3245d8a23eb0f2c0384d0b8..418037855971c727cb4e406f8db075024c0af47b 100644 --- a/src/plugins/projectexplorer/kitmanager.h +++ b/src/plugins/projectexplorer/kitmanager.h @@ -72,7 +72,6 @@ public: virtual unsigned int priority() const = 0; // the higher the closer to the top. - virtual bool visibleIn(Kit *) { return true; } virtual QVariant defaultValue(Kit *) const = 0; // called to find issues with the kit diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp index 52421f30519833621945a4355f37f52b117a43f9..64af360bed0bf46f231f523076b1e1187a70edf4 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp @@ -75,8 +75,11 @@ KitManagerConfigWidget::KitManagerConfigWidget(Kit *k) : mainLayout->setMargin(1); mainLayout->addWidget(scroll, 0, 0); + static const Qt::Alignment alignment + = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_FormLayoutLabelAlignment)); QString toolTip = tr("Kit name and icon."); - setLabel(tr("Name:"), toolTip, 0); + QLabel *label = createLabel(tr("Name:"), toolTip); + m_layout->addWidget(label, 0, LabelColumn, alignment); m_iconButton->setToolTip(toolTip); discard(); @@ -171,9 +174,26 @@ void KitManagerConfigWidget::addConfigWidget(ProjectExplorer::KitConfigWidget *w m_layout->addWidget(widget->mainWidget(), row, WidgetColumn); if (QWidget *button = widget->buttonWidget()) m_layout->addWidget(button, row, ButtonColumn); - setLabel(name, toolTip, row); + static const Qt::Alignment alignment + = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_FormLayoutLabelAlignment)); + QLabel *label = createLabel(name, toolTip); + m_layout->addWidget(label, row, LabelColumn, alignment); m_widgets.append(widget); + m_labels.append(label); +} + +void KitManagerConfigWidget::updateVisibility() +{ + int count = m_widgets.count(); + for (int i = 0; i < count; ++i) { + KitConfigWidget *widget = m_widgets.at(i); + bool visible = widget->visibleInKit(); + widget->mainWidget()->setVisible(visible); + if (widget->buttonWidget()) + widget->buttonWidget()->setVisible(visible); + m_labels.at(i)->setVisible(visible); + } } void KitManagerConfigWidget::makeReadOnly() @@ -249,6 +269,7 @@ void KitManagerConfigWidget::workingCopyWasUpdated(Kit *k) w->refresh(); m_nameEdit->setText(k->displayName()); m_iconButton->setIcon(k->icon()); + updateVisibility(); emit dirty(); } @@ -256,15 +277,14 @@ void KitManagerConfigWidget::kitWasUpdated(Kit *k) { if (m_kit == k) discard(); + updateVisibility(); } -void KitManagerConfigWidget::setLabel(const QString &name, const QString &toolTip, int row) +QLabel *KitManagerConfigWidget::createLabel(const QString &name, const QString &toolTip) { - static const Qt::Alignment alignment - = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_FormLayoutLabelAlignment)); QLabel *label = new QLabel(name); label->setToolTip(toolTip); - m_layout->addWidget(label, row, LabelColumn, alignment); + return label; } void KitManagerConfigWidget::paintEvent(QPaintEvent *) diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.h b/src/plugins/projectexplorer/kitmanagerconfigwidget.h index 8c969aa6cfec817d079b348b8c0df5fd3a61aa04..0945e6dc368c28ad9117bb38bd886a02c9a811e2 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.h +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.h @@ -36,6 +36,7 @@ QT_BEGIN_NAMESPACE class QGridLayout; +class QLabel; class QLineEdit; class QToolButton; QT_END_NAMESPACE @@ -68,6 +69,7 @@ public: void setIsDefaultKit(bool d); bool isDefaultKit() const; void removeKit(); + void updateVisibility(); signals: void dirty(); @@ -85,13 +87,14 @@ private: ButtonColumn }; - void setLabel(const QString &name, const QString &toolTip, int row); + QLabel *createLabel(const QString &name, const QString &toolTip); void paintEvent(QPaintEvent *ev); QGridLayout *m_layout; QToolButton *m_iconButton; QLineEdit *m_nameEdit; QList<KitConfigWidget *> m_widgets; + QList<QLabel *> m_labels; Kit *m_kit; Kit *m_modifiedKit; bool m_isDefaultKit;