diff --git a/src/connectiontablemodel.cpp b/src/connectiontablemodel.cpp index 16ef3225..d7a0ef48 100644 --- a/src/connectiontablemodel.cpp +++ b/src/connectiontablemodel.cpp @@ -149,3 +149,15 @@ void ConnectionTableModel::onConnectionLatencyChanged() int row = items.indexOf(item); emit dataChanged(this->index(row, 3), this->index(row, 3)); } + +ConnectionItem* ConnectionTableModel::getRunningItem() const +{ + for (auto &i : items) { + Connection *conn = i->getConnection(); + if (conn && conn->isRunning()) { + return i; + } + } + + return NULL; +} diff --git a/src/connectiontablemodel.h b/src/connectiontablemodel.h index 374fd164..4bda033b 100644 --- a/src/connectiontablemodel.h +++ b/src/connectiontablemodel.h @@ -32,6 +32,7 @@ class ConnectionTableModel : public QAbstractTableModel ~ConnectionTableModel(); ConnectionItem *getItem(const int &row) const; + ConnectionItem* getRunningItem() const; int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index fbe3e811..f7086ad0 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -296,6 +296,12 @@ void MainWindow::onConnect() { int row = proxyModel->mapToSource(ui->connectionView->currentIndex()).row(); Connection *con = model->getItem(row)->getConnection(); + + ConnectionItem* item = model->getRunningItem(); + if (item && item != model->getItem(row)) { + item->getConnection()->stop(); + } + if (con->isValid()) { con->start(); } else {