diff options
-rw-r--r-- | src/plugins/projectexplorer/kit.cpp | 6 | ||||
-rw-r--r-- | src/plugins/projectexplorer/kitmanagerconfigwidget.cpp | 5 | ||||
-rw-r--r-- | src/plugins/projectexplorer/kitmanagerconfigwidget.h | 1 | ||||
-rw-r--r-- | src/plugins/projectexplorer/kitmodel.cpp | 28 | ||||
-rw-r--r-- | src/plugins/projectexplorer/kitmodel.h | 1 |
5 files changed, 40 insertions, 1 deletions
diff --git a/src/plugins/projectexplorer/kit.cpp b/src/plugins/projectexplorer/kit.cpp index 7fae069f369..b1247fd2eb4 100644 --- a/src/plugins/projectexplorer/kit.cpp +++ b/src/plugins/projectexplorer/kit.cpp @@ -582,16 +582,19 @@ QString Kit::toHtml(const QList<Task> &additional) const void Kit::setAutoDetected(bool detected) { d->m_autodetected = detected; + kitUpdated(); } void Kit::setAutoDetectionSource(const QString &autoDetectionSource) { d->m_autoDetectionSource = autoDetectionSource; + kitUpdated(); } void Kit::setSdkProvided(bool sdkProvided) { d->m_sdkProvided = sdkProvided; + kitUpdated(); } void Kit::makeSticky() @@ -608,11 +611,13 @@ void Kit::setSticky(Core::Id id, bool b) d->m_sticky.insert(id); else d->m_sticky.remove(id); + kitUpdated(); } void Kit::makeUnSticky() { d->m_sticky.clear(); + kitUpdated(); } void Kit::setMutable(Id id, bool b) @@ -621,6 +626,7 @@ void Kit::setMutable(Id id, bool b) d->m_mutable.insert(id); else d->m_mutable.remove(id); + kitUpdated(); } bool Kit::isMutable(Id id) const diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp index 408a567aa7d..375b0fb3933 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.cpp @@ -354,8 +354,11 @@ void KitManagerConfigWidget::workingCopyWasUpdated(Kit *k) void KitManagerConfigWidget::kitWasUpdated(Kit *k) { - if (m_kit == k) + if (m_kit == k) { + bool emitSignal = m_kit->isAutoDetected() != m_modifiedKit->isAutoDetected(); discard(); + emit isAutoDetectedChanged(); + } updateVisibility(); } diff --git a/src/plugins/projectexplorer/kitmanagerconfigwidget.h b/src/plugins/projectexplorer/kitmanagerconfigwidget.h index 28879d97672..750ed14eab4 100644 --- a/src/plugins/projectexplorer/kitmanagerconfigwidget.h +++ b/src/plugins/projectexplorer/kitmanagerconfigwidget.h @@ -77,6 +77,7 @@ public: signals: void dirty(); + void isAutoDetectedChanged(); private slots: void setIcon(); diff --git a/src/plugins/projectexplorer/kitmodel.cpp b/src/plugins/projectexplorer/kitmodel.cpp index f484be85589..69df6f362e8 100644 --- a/src/plugins/projectexplorer/kitmodel.cpp +++ b/src/plugins/projectexplorer/kitmodel.cpp @@ -279,6 +279,31 @@ void KitModel::setDirty() } } +void KitModel::isAutoDetectedChanged() +{ + KitManagerConfigWidget *w = qobject_cast<KitManagerConfigWidget *>(sender()); + int idx = -1; + idx = Utils::indexOf(m_manualRoot->childNodes, [w](KitNode *node) { return node->widget == w; }); + KitNode *oldParent = 0; + KitNode *newParent = w->workingCopy()->isAutoDetected() ? m_autoRoot : m_manualRoot; + if (idx != -1) { + oldParent = m_manualRoot; + } else { + idx = Utils::indexOf(m_autoRoot->childNodes, [w](KitNode *node) { return node->widget == w; }); + if (idx != -1) { + oldParent = m_autoRoot; + } + } + + if (oldParent && oldParent != newParent) { + beginMoveRows(index(oldParent), idx, idx, index(newParent), newParent->childNodes.size()); + KitNode *n = oldParent->childNodes.takeAt(idx); + n->parent = newParent; + newParent->childNodes.append(n); + endMoveRows(); + } +} + void KitModel::validateKitNames() { QList<KitNode *> nodes = m_manualRoot->childNodes; @@ -395,6 +420,9 @@ KitNode *KitModel::createNode(KitNode *parent, Kit *k) KitNode *node = new KitNode(parent, k); m_parentLayout->addWidget(node->widget); connect(node->widget, SIGNAL(dirty()), this, SLOT(setDirty())); + connect(node->widget, SIGNAL(isAutoDetectedChanged()), + this, SLOT(isAutoDetectedChanged())); + return node; } diff --git a/src/plugins/projectexplorer/kitmodel.h b/src/plugins/projectexplorer/kitmodel.h index 2cde469b3f2..772a5ed3835 100644 --- a/src/plugins/projectexplorer/kitmodel.h +++ b/src/plugins/projectexplorer/kitmodel.h @@ -97,6 +97,7 @@ private slots: void changeDefaultKit(); void setDirty(); void validateKitNames(); + void isAutoDetectedChanged(); private: QModelIndex index(KitNode *, int column = 0) const; |