diff --git a/pglab/ConnectionConfigurationWidget.cpp b/pglab/ConnectionConfigurationWidget.cpp index d8cb329..cbbdb66 100644 --- a/pglab/ConnectionConfigurationWidget.cpp +++ b/pglab/ConnectionConfigurationWidget.cpp @@ -41,22 +41,21 @@ void ConnectionConfigurationWidget::editExistingInWindow(ConnectionController *c win->accept(); }); win->connect(btn_hbox, &QDialogButtonBox::rejected, [win] () - { + { win->reject(); - }); + }); win->show(); } ConnectionConfigurationWidget::ConnectionConfigurationWidget(ConnectionTreeModel *connection_model, QWidget *parent) : QWidget(parent) + , m_connectionModel(connection_model) { lblGroup = new QLabel; cmbbxGroup = new QComboBox; cmbbxGroup->setModel(connection_model); cmbbxGroup->setModelColumn(0); -// cmbbxGroup->setEditable(true); -// cmbbxGroup->setInsertPolicy(QComboBox::NoInsert); lblGroup->setBuddy(cmbbxGroup); lblName = new QLabel; @@ -158,6 +157,10 @@ void ConnectionConfigurationWidget::retranslateUi() void ConnectionConfigurationWidget::setData(const ConnectionConfig &cfg) { + auto group = cfg.parent(); + auto group_idx = m_connectionModel->findGroup(group->conngroup_id); + cmbbxGroup->setCurrentIndex(group_idx); + m_uuid = cfg.uuid(); edtName->setText(stdStrToQ(cfg.name())); edtHost->setText(stdStrToQ(cfg.host())); diff --git a/pglab/ConnectionConfigurationWidget.h b/pglab/ConnectionConfigurationWidget.h index 21849c1..e7b9ab2 100644 --- a/pglab/ConnectionConfigurationWidget.h +++ b/pglab/ConnectionConfigurationWidget.h @@ -30,6 +30,8 @@ public: signals: private: + ConnectionTreeModel *m_connectionModel; + QUuid m_uuid; QLabel *lblGroup; diff --git a/pglab/ConnectionListModel.cpp b/pglab/ConnectionListModel.cpp index 651fd75..bad449b 100644 --- a/pglab/ConnectionListModel.cpp +++ b/pglab/ConnectionListModel.cpp @@ -748,6 +748,14 @@ std::optional ConnectionTreeModel::removeGroup(int row) m_groups.remove(row); return {}; } + +int ConnectionTreeModel::findGroup(int conngroup_id) const +{ + auto find_res = std::find_if(m_groups.begin(), m_groups.end(), + [conngroup_id] (auto item) { return item->conngroup_id == conngroup_id; }); + if (find_res == m_groups.end()) + return -1; + return find_res - m_groups.begin(); } std::optional ConnectionTreeModel::saveToDb(const ConnectionConfig &cc) diff --git a/pglab/ConnectionListModel.h b/pglab/ConnectionListModel.h index d9daf17..ee80dc9 100644 --- a/pglab/ConnectionListModel.h +++ b/pglab/ConnectionListModel.h @@ -63,6 +63,7 @@ public: /// Create a new group in the DB and place in the tree std::variant addGroup(QString group_name); std::optional removeGroup(int row); + int findGroup(int conngroup_id) const; private: using Groups = QVector>;