diff --git a/src/plugins/projectexplorer/kitconfigwidget.h b/src/plugins/projectexplorer/kitconfigwidget.h index e8e141c86713bf06922c6f2147e44c9b47a6fa53..4a02ef22002b2d181069b87c707517d89777b0ba 100644 --- a/src/plugins/projectexplorer/kitconfigwidget.h +++ b/src/plugins/projectexplorer/kitconfigwidget.h @@ -48,12 +48,6 @@ class PROJECTEXPLORER_EXPORT KitConfigWidget : public QWidget Q_OBJECT public: - enum LayoutColumns { - LabelColumn, - WidgetColumn, - ButtonColumn - }; - KitConfigWidget(QWidget *parent = 0) : QWidget(parent) { } @@ -66,14 +60,8 @@ public: virtual QWidget *buttonWidget() const { return 0; } - virtual void addToLayout(QGridLayout *layout, int row); - signals: void dirty(); - -protected: - void addLabel(QGridLayout *layout, int row); - void addButtonWidget(QGridLayout *layout, int row); }; } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp index 8d312e3e0cb9285b52cb716851456f9cdee4b348..d1aa4b0880aa76155074d98fcc9c2a25165f333a 100644 --- a/src/plugins/projectexplorer/kitmanager.cpp +++ b/src/plugins/projectexplorer/kitmanager.cpp @@ -367,7 +367,7 @@ QList<KitInformation *> KitManager::kitInformation() const return d->m_informationList; } -KitConfigWidget *KitManager::createConfigWidget(Kit *k) const +Internal::KitManagerConfigWidget *KitManager::createConfigWidget(Kit *k) const { if (!k) return 0; diff --git a/src/plugins/projectexplorer/kitmanager.h b/src/plugins/projectexplorer/kitmanager.h index d36ff8eec2626b8837d1ce39177cf5c7ad01b2cb..73248e5181d2b4f7cf77322ae89b6c4a465d71f5 100644 --- a/src/plugins/projectexplorer/kitmanager.h +++ b/src/plugins/projectexplorer/kitmanager.h @@ -48,6 +48,7 @@ class Kit; class KitConfigWidget; namespace Internal { +class KitManagerConfigWidget; class KitManagerPrivate; class KitModel; } // namespace Internal @@ -110,7 +111,7 @@ public: QList<KitInformation *> kitInformation() const; - KitConfigWidget *createConfigWidget(Kit *k) const; + Internal::KitManagerConfigWidget *createConfigWidget(Kit *k) const; public slots: bool registerKit(ProjectExplorer::Kit *k); diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp index 66dd2845b3aeca9034930301891a6676ca3f3835..ac5982389b2d0168722349622a9c4a89cd50085f 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp @@ -38,6 +38,7 @@ #include <QFileDialog> #include <QGridLayout> #include <QLabel> +#include <QLineEdit> #include <QToolButton> #include <QScrollArea> #include <QSizePolicy> @@ -45,43 +46,15 @@ namespace ProjectExplorer { -void KitConfigWidget::addToLayout(QGridLayout *layout, int row) -{ - addLabel(layout, row); - layout->addWidget(this, row, WidgetColumn); - addButtonWidget(layout, row); -} - -void KitConfigWidget::addLabel(QGridLayout *layout, int row) -{ - static const Qt::Alignment alignment - = static_cast<Qt::Alignment>(style()->styleHint(QStyle::SH_FormLayoutLabelAlignment)); - QLabel *label = new QLabel(displayName()); - label->setToolTip(toolTip()); - layout->addWidget(label, row, LabelColumn, alignment); -} - -void KitConfigWidget::addButtonWidget(QGridLayout *layout, int row) -{ - if (QWidget *button = buttonWidget()) { - if (button->toolTip().isEmpty()) - button->setToolTip(toolTip()); - layout->addWidget(button, row, ButtonColumn); - } -} - namespace Internal { KitManagerConfigWidget::KitManagerConfigWidget(Kit *k, QWidget *parent) : KitConfigWidget(parent), m_layout(new QGridLayout), m_iconButton(new QToolButton), + m_nameEdit(new QLineEdit), m_kit(k) { - m_layout->setMargin(0); - m_layout->setSpacing(6); - m_layout->setContentsMargins(0, 0, 0, 0); - QVBoxLayout *top = new QVBoxLayout(this); top->setMargin(0); @@ -96,27 +69,25 @@ KitManagerConfigWidget::KitManagerConfigWidget(Kit *k, QWidget *parent) : scroll->setWidget(details); QWidget *widget = new QWidget; - details->setWidget(widget); - QVBoxLayout *iconLayout = new QVBoxLayout; - iconLayout->addWidget(m_iconButton); - iconLayout->addStretch(); + m_layout->setMargin(0); + m_layout->setSpacing(6); + m_layout->setContentsMargins(6, 0, 6, 0); + m_layout->setRowStretch(1, 1); + widget->setLayout(m_layout); - QGridLayout *masterLayout = new QGridLayout(widget); - masterLayout->setMargin(0); - masterLayout->setContentsMargins(6, 0, 6, 0); - masterLayout->addLayout(iconLayout, 0, 0); - masterLayout->addLayout(m_layout, 0, 1); - masterLayout->setRowStretch(1, 1); + details->setWidget(widget); + addToLayout(tr("Name:"), tr("Kit name and icon."), m_nameEdit, m_iconButton); discard(); connect(m_iconButton, SIGNAL(clicked()), this, SLOT(setIcon())); + connect(m_nameEdit, SIGNAL(textChanged(QString)), this, SIGNAL(dirty())); } QString KitManagerConfigWidget::displayName() const { - return tr("Kits"); + return m_nameEdit->text(); } void KitManagerConfigWidget::apply() @@ -124,6 +95,7 @@ void KitManagerConfigWidget::apply() foreach (KitConfigWidget *w, m_widgets) w->apply(); m_kit->setIconPath(m_iconPath); + m_kit->setDisplayName(m_nameEdit->text()); } void KitManagerConfigWidget::discard() @@ -132,6 +104,7 @@ void KitManagerConfigWidget::discard() w->discard(); m_iconButton->setIcon(m_kit->icon()); m_iconPath = m_kit->iconPath(); + m_nameEdit->setText(m_kit->displayName()); } bool KitManagerConfigWidget::isDirty() const @@ -139,7 +112,7 @@ bool KitManagerConfigWidget::isDirty() const foreach (KitConfigWidget *w, m_widgets) if (w->isDirty()) return true; - return m_kit->iconPath() != m_iconPath; + return (m_kit->iconPath() != m_iconPath) || (m_kit->displayName() != m_nameEdit->text()); } void KitManagerConfigWidget::addConfigWidget(ProjectExplorer::KitConfigWidget *widget) @@ -148,7 +121,8 @@ void KitManagerConfigWidget::addConfigWidget(ProjectExplorer::KitConfigWidget *w Q_ASSERT(!m_widgets.contains(widget)); connect(widget, SIGNAL(dirty()), this, SIGNAL(dirty())); - widget->addToLayout(m_layout, m_layout->rowCount()); + + addToLayout(widget->displayName(), widget->toolTip(), widget, widget->buttonWidget()); m_widgets.append(widget); } @@ -157,11 +131,12 @@ void KitManagerConfigWidget::makeReadOnly() foreach (KitConfigWidget *w, m_widgets) w->makeReadOnly(); m_iconButton->setEnabled(false); + m_nameEdit->setEnabled(false); } void KitManagerConfigWidget::setIcon() { - const QString path = QFileDialog::getOpenFileName(0, tr("Select Icon"), m_iconPath, tr("Images (*.png *.xpm *.jpg)")); + const QString path = QFileDialog::getOpenFileName(this, tr("Select Icon"), m_iconPath, tr("Images (*.png *.xpm *.jpg)")); if (path.isEmpty()) return; @@ -174,5 +149,32 @@ void KitManagerConfigWidget::setIcon() emit dirty(); } +void KitManagerConfigWidget::addToLayout(const QString &name, const QString &toolTip, + QWidget *widget, QWidget *button) +{ + int row = m_layout->rowCount(); + addLabel(name, toolTip, row); + m_layout->addWidget(widget, row, WidgetColumn); + addButtonWidget(button, toolTip, row); +} + +void KitManagerConfigWidget::addLabel(const QString &name, const QString &toolTip, int row) +{ + 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); +} + +void KitManagerConfigWidget::addButtonWidget(QWidget *button, const QString &toolTip, int row) +{ + if (!button) + return; + if (button->toolTip().isEmpty()) + button->setToolTip(toolTip); + m_layout->addWidget(button, row, ButtonColumn); +} + } // namespace Internal } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.h b/src/plugins/projectexplorer/kitmanagerconfigwidget.h index afcf9b18e714a1f71b52320f1684f133e2863817..af433c9ed5b33ee4ce239674af5cc89998e129e4 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.h +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.h @@ -36,6 +36,7 @@ QT_BEGIN_NAMESPACE class QHBoxLayout; class QGridLayout; +class QLineEdit; class QToolButton; QT_END_NAMESPACE @@ -63,8 +64,21 @@ private slots: void setIcon(); private: + enum LayoutColumns { + LabelColumn, + WidgetColumn, + ButtonColumn + }; + + void addToLayout(const QString &name, const QString &toolTip, QWidget *widget, QWidget *button = 0); + + + void addLabel(const QString &name, const QString &toolTip, int row); + void addButtonWidget(QWidget *button, const QString &toolTip, int row); + QGridLayout *m_layout; QToolButton *m_iconButton; + QLineEdit *m_nameEdit; QList<KitConfigWidget *> m_widgets; Kit *m_kit; QString m_iconPath; diff --git a/src/plugins/projectexplorer/kitmodel.cpp b/src/plugins/projectexplorer/kitmodel.cpp index c13e52179e4adc45a9958f5729fa55b5842154be..9e79e4b2ef1b6f0b7b2da2d9c13ba9be9c483a6a 100644 --- a/src/plugins/projectexplorer/kitmodel.cpp +++ b/src/plugins/projectexplorer/kitmodel.cpp @@ -31,7 +31,7 @@ #include "kitmodel.h" #include "kit.h" -#include "kitconfigwidget.h" +#include "kitmanagerconfigwidget.h" #include "kitmanager.h" #include <utils/qtcassert.h> @@ -72,10 +72,9 @@ public: } KitNode *parent; - QString newName; QList<KitNode *> childNodes; Kit *kit; - KitConfigWidget *widget; + KitManagerConfigWidget *widget; bool changed; }; @@ -173,13 +172,11 @@ QVariant KitModel::data(const QModelIndex &index, int role) const f.setItalic(f.style() != QFont::StyleItalic); return f; } else if (role == Qt::DisplayRole) { - QString baseName = node->newName.isEmpty() ? node->kit->displayName() : node->newName; + QString baseName = node->widget->displayName(); if (node == m_defaultNode) //: Mark up a kit as the default one. baseName = tr("%1 (default)").arg(baseName); return baseName; - } else if (role == Qt::EditRole) { - return node->newName.isEmpty() ? node->kit->displayName() : node->newName; } else if (role == Qt::DecorationRole) { return node->kit->isValid() ? QIcon() : warningIcon; } else if (role == Qt::ToolTipRole) { @@ -189,21 +186,6 @@ QVariant KitModel::data(const QModelIndex &index, int role) const return QVariant(); } -bool KitModel::setData(const QModelIndex &index, const QVariant &value, int role) -{ - if (!index.isValid()) - return false; - - KitNode *node = static_cast<KitNode *>(index.internalPointer()); - Q_ASSERT(node); - if (index.column() != 0 || !node->kit || role != Qt::EditRole) - return false; - node->newName = value.toString(); - if (!node->newName.isEmpty() && node->newName != node->kit->displayName()) - node->changed = true; - return true; -} - Qt::ItemFlags KitModel::flags(const QModelIndex &index) const { if (!index.isValid()) @@ -214,10 +196,7 @@ Qt::ItemFlags KitModel::flags(const QModelIndex &index) const if (!node->kit) return Qt::ItemIsEnabled; - if (node->kit->isAutoDetected()) - return Qt::ItemIsEnabled | Qt::ItemIsSelectable; - - return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable; + return Qt::ItemIsEnabled | Qt::ItemIsSelectable; } QVariant KitModel::headerData(int section, Qt::Orientation orientation, int role) const @@ -309,10 +288,6 @@ void KitModel::apply() Q_ASSERT(n->kit); if (n->changed) { KitManager::instance()->blockSignals(true); - if (!n->newName.isEmpty()) { - n->kit->setDisplayName(n->newName); - n->newName.clear(); - } if (n->widget) n->widget->apply(); n->changed = false; diff --git a/src/plugins/projectexplorer/kitmodel.h b/src/plugins/projectexplorer/kitmodel.h index 8de127766febc27a3d751d0efef67093aeacf7e6..bd591db144460fa7ea45ea5d387f71245061b430 100644 --- a/src/plugins/projectexplorer/kitmodel.h +++ b/src/plugins/projectexplorer/kitmodel.h @@ -69,7 +69,6 @@ public: int columnCount(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; - bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); Qt::ItemFlags flags(const QModelIndex &index) const; QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;