Use then construct instead of future watcher for test connection.ConnectionConfigurationWidget
The QPointer is detect the window has been destroyed.
This commit is contained in:
parent
90851ef950
commit
521e5d7370
2 changed files with 18 additions and 24 deletions
|
|
@ -24,6 +24,7 @@
|
|||
#define SET_OBJECT_NAME(var) var->setObjectName(#var)
|
||||
|
||||
|
||||
|
||||
void ConnectionConfigurationWidget::editExistingInWindow(ConnectionController *connection_controller, const ConnectionConfig &cfg,
|
||||
std::function<void(ConnectionConfigurationWidget&)> save_func)
|
||||
{
|
||||
|
|
@ -43,9 +44,6 @@ void ConnectionConfigurationWidget::editExistingInWindow(ConnectionController *c
|
|||
win->setAttribute( Qt::WA_DeleteOnClose, true );
|
||||
|
||||
QObject::connect(btn_hbox, &QDialogButtonBox::accepted, [w, win, save_func] () {
|
||||
// auto cc = w->data();
|
||||
// auto grp = w->group();
|
||||
// connection_controller->getConnectionTreeModel()->save(grp, cc);
|
||||
save_func(*w);
|
||||
win->accept();
|
||||
});
|
||||
|
|
@ -61,7 +59,9 @@ void ConnectionConfigurationWidget::editExistingInWindow(ConnectionController *c
|
|||
}
|
||||
}
|
||||
|
||||
ConnectionConfigurationWidget::ConnectionConfigurationWidget(ConnectionController *connection_controller, QWidget *parent)
|
||||
ConnectionConfigurationWidget::ConnectionConfigurationWidget(
|
||||
ConnectionController *connection_controller,
|
||||
QWidget *parent)
|
||||
: QWidget(parent)
|
||||
, m_connectionController(connection_controller)
|
||||
, m_connectionModel(connection_controller->getConnectionTreeModel())
|
||||
|
|
@ -168,9 +168,6 @@ ConnectionConfigurationWidget::ConnectionConfigurationWidget(ConnectionControlle
|
|||
formLayout->addRow(btnTest, lblResult);
|
||||
setLayout(formLayout);
|
||||
|
||||
connect(&TestWatcher, &QFutureWatcher<TestConnectionResult>::finished, this,
|
||||
&ConnectionConfigurationWidget::handleTestResult);
|
||||
|
||||
retranslateUi();
|
||||
}
|
||||
|
||||
|
|
@ -255,15 +252,19 @@ void ConnectionConfigurationWidget::testConnection()
|
|||
|
||||
auto cc = data();
|
||||
cc.setPassword(password);
|
||||
QFuture<TestConnectionResult> result = QtConcurrent::run([cc] { return TestConnection(cc); });
|
||||
TestWatcher.setFuture(result);
|
||||
|
||||
auto qthis = QPointer(this);
|
||||
QFuture<void> result = QtConcurrent::run([cc] {
|
||||
return TestConnection(cc);
|
||||
}).then(qApp, [qthis](TestConnectionResult result) {
|
||||
if (qthis) {
|
||||
qthis.data()->handleTestResult(result);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void ConnectionConfigurationWidget::handleTestResult()
|
||||
void ConnectionConfigurationWidget::handleTestResult(TestConnectionResult result)
|
||||
{
|
||||
auto f = TestWatcher.future();
|
||||
auto result = f.result();
|
||||
|
||||
lblResult->setText(result.message());
|
||||
QString current = cmbDbname->currentText();
|
||||
cmbDbname->clear();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue