diff --git a/src/plugins/baremetal/gdbserverproviderssettingspage.cpp b/src/plugins/baremetal/gdbserverproviderssettingspage.cpp index c34a38f29af..3eb43c89118 100644 --- a/src/plugins/baremetal/gdbserverproviderssettingspage.cpp +++ b/src/plugins/baremetal/gdbserverproviderssettingspage.cpp @@ -61,19 +61,10 @@ public: GdbServerProviderNode(GdbServerProvider *provider, bool changed = false) : provider(provider), changed(changed) { - widget = provider ? provider->configurationWidget() : 0; - } - - Qt::ItemFlags flags(int) const override - { - return provider ? Qt::ItemIsEnabled|Qt::ItemIsSelectable : Qt::ItemIsEnabled; } QVariant data(int column, int role) const override { - if (!provider) - return QVariant(); - if (role == Qt::FontRole) { QFont f = QApplication::font(); if (changed) @@ -89,14 +80,12 @@ public: return QVariant(); } - GdbServerProvider *provider; - GdbServerProviderConfigWidget *widget; - bool changed; + GdbServerProvider *provider = nullptr; + GdbServerProviderConfigWidget *widget = nullptr; + bool changed = false; }; - -GdbServerProviderModel::GdbServerProviderModel(QObject *parent) - : TreeModel<>(parent) +GdbServerProviderModel::GdbServerProviderModel() { setHeader({tr("Name"), tr("Type")}); @@ -206,19 +195,13 @@ void GdbServerProviderModel::markForAddition(GdbServerProvider *provider) GdbServerProviderNode *GdbServerProviderModel::createNode( GdbServerProvider *provider, bool changed) { - auto n = new GdbServerProviderNode(provider, changed); - if (n->widget) { - connect(n->widget, &GdbServerProviderConfigWidget::dirty, this, [this, n] { - for (TreeItem *item : *rootItem()) { - auto nn = static_cast(item); - if (nn->widget == n->widget) { - nn->changed = true; - nn->update(); - } - } - }); - } - return n; + auto node = new GdbServerProviderNode(provider, changed); + node->widget = provider->configurationWidget(); + connect(node->widget, &GdbServerProviderConfigWidget::dirty, this, [node] { + node->changed = true; + node->update(); + }); + return node; } void GdbServerProviderModel::addProvider(GdbServerProvider *provider) diff --git a/src/plugins/baremetal/gdbserverproviderssettingspage.h b/src/plugins/baremetal/gdbserverproviderssettingspage.h index b8fa04cc4b3..28c5bc3b4c1 100644 --- a/src/plugins/baremetal/gdbserverproviderssettingspage.h +++ b/src/plugins/baremetal/gdbserverproviderssettingspage.h @@ -46,12 +46,13 @@ class GdbServerProviderFactory; class GdbServerProviderNode; class GdbServerProvidersSettingsWidget; -class GdbServerProviderModel : public Utils::TreeModel<> +class GdbServerProviderModel + : public Utils::TreeModel, GdbServerProviderNode> { Q_OBJECT public: - explicit GdbServerProviderModel(QObject *parent = 0); + GdbServerProviderModel(); GdbServerProvider *provider(const QModelIndex &) const; GdbServerProviderConfigWidget *widget(const QModelIndex &) const; @@ -82,14 +83,14 @@ class GdbServerProvidersSettingsPage : public Core::IOptionsPage Q_OBJECT public: - explicit GdbServerProvidersSettingsPage(QObject *parent = 0); + explicit GdbServerProvidersSettingsPage(QObject *parent = nullptr); private: QWidget *widget(); void apply(); void finish(); - GdbServerProvidersSettingsWidget *m_configWidget = 0; + GdbServerProvidersSettingsWidget *m_configWidget = nullptr; }; } // namespace Internal