From 0a02ce6ae23e15f7ddd394ec2edd4cbf03dd66a6 Mon Sep 17 00:00:00 2001 From: Daniel Teske <daniel.teske@digia.com> Date: Thu, 31 Jan 2013 14:13:24 +0100 Subject: [PATCH] KitManager: Enable KitInformations to be invisible for Kits This was only possible in theory but not in pratice. Change-Id: Ia5100569c371134e3cabacfcd76084c8763f5ecc Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> --- src/plugins/projectexplorer/kitconfigwidget.h | 1 + src/plugins/projectexplorer/kitmanager.cpp | 2 ++ src/plugins/projectexplorer/kitmanager.h | 1 - .../kitmanagerconfigwidget.cpp | 32 +++++++++++++++---- .../projectexplorer/kitmanagerconfigwidget.h | 5 ++- 5 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/plugins/projectexplorer/kitconfigwidget.h b/src/plugins/projectexplorer/kitconfigwidget.h index b1d518900e2..ccee9c32690 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 44c3c1910b8..b57869d1b26 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 bfe1b9ff380..41803785597 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 52421f30519..64af360bed0 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 8c969aa6cfe..0945e6dc368 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; -- GitLab