diff --git a/connections/canconmanager.cpp b/connections/canconmanager.cpp index ef099c2..af37356 100644 --- a/connections/canconmanager.cpp +++ b/connections/canconmanager.cpp @@ -3,7 +3,6 @@ #include "canconmanager.h" - CANConManager* CANConManager::mInstance = NULL; CANConManager* CANConManager::getInstance() @@ -14,7 +13,6 @@ CANConManager* CANConManager::getInstance() return mInstance; } - CANConManager::CANConManager(QObject *parent): QObject(parent) { connect(&mTimer, SIGNAL(timeout()), this, SLOT(refreshCanList())); @@ -46,6 +44,13 @@ CANConManager::~CANConManager() mInstance = NULL; } +void CANConManager::stopAllConnections() +{ + foreach (CANConnection *conn, mConns) + { + conn->stop(); + } +} void CANConManager::add(CANConnection* pConn_p) { diff --git a/connections/canconmanager.h b/connections/canconmanager.h index 1056f5b..7d82bb2 100644 --- a/connections/canconmanager.h +++ b/connections/canconmanager.h @@ -17,6 +17,7 @@ public: void add(CANConnection* pConn_p); void remove(CANConnection* pConn_p); QList& getConnections(); + void stopAllConnections(); CANConnection* getByName(const QString& pName) const; diff --git a/connections/connectionwindow.cpp b/connections/connectionwindow.cpp index 0f99a37..ccaeaab 100644 --- a/connections/connectionwindow.cpp +++ b/connections/connectionwindow.cpp @@ -32,6 +32,9 @@ ConnectionWindow::ConnectionWindow(QWidget *parent) : ui->tableConnections->setColumnWidth(5, 75); ui->tableConnections->setColumnWidth(6, 75); ui->tableConnections->setColumnWidth(7, 75); + QHeaderView *HorzHdr = ui->tableConnections->horizontalHeader(); + HorzHdr->setStretchLastSection(true); //causes the data column to automatically fill the tableview + ui->ckSingleWire->setChecked(settings.value("Main/SingleWireMode", false).toBool()); ui->cbSpeed->addItem(tr("125000")); @@ -94,10 +97,37 @@ void ConnectionWindow::showEvent(QShowEvent* event) { QDialog::showEvent(event); qDebug() << "Show connectionwindow"; + readSettings(); ui->tableConnections->selectRow(0); currentRowChanged(ui->tableConnections->currentIndex(), ui->tableConnections->currentIndex()); } +void ConnectionWindow::closeEvent(QCloseEvent *event) +{ + Q_UNUSED(event); + writeSettings(); +} + +void ConnectionWindow::readSettings() +{ + QSettings settings; + if (settings.value("Main/SaveRestorePositions", false).toBool()) + { + resize(settings.value("ConnWindow/WindowSize", QSize(956, 665)).toSize()); + move(settings.value("ConnWindow/WindowPos", QPoint(100, 100)).toPoint()); + } +} + +void ConnectionWindow::writeSettings() +{ + QSettings settings; + + if (settings.value("Main/SaveRestorePositions", false).toBool()) + { + settings.setValue("ConnWindow/WindowSize", size()); + settings.setValue("ConnWindow/WindowPos", pos()); + } +} void ConnectionWindow::setSuspendAll(bool pSuspend) { diff --git a/connections/connectionwindow.h b/connections/connectionwindow.h index b3d6dfe..58e99b2 100644 --- a/connections/connectionwindow.h +++ b/connections/connectionwindow.h @@ -27,7 +27,6 @@ class ConnectionWindow : public QDialog public: explicit ConnectionWindow(QWidget *parent = 0); ~ConnectionWindow(); - void showEvent(QShowEvent *); CANCon::type getConnectionType(); bool getSWMode(); @@ -78,6 +77,10 @@ private: CANConnection* create(CANCon::type pTye, QString pPortName); void loadConnections(); void saveConnections(); + void showEvent(QShowEvent *); + void closeEvent(QCloseEvent *event); + void readSettings(); + void writeSettings(); }; #endif // CONNECTIONWINDOW_H diff --git a/mainwindow.cpp b/mainwindow.cpp index 4ad3c34..789173d 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -174,11 +174,13 @@ MainWindow::MainWindow(QWidget *parent) : MainWindow::~MainWindow() { - //killEmAll(); //Ride the lightning + updateTimer.stop(); + killEmAll(); //Ride the lightning + delete ui; delete model; delete elapsedTime; delete dbcHandler; - delete ui; + } //kill every sub window that could be open. At the moment a hard coded list @@ -194,7 +196,6 @@ void MainWindow::killEmAll() killWindow(dbcMainEditor); killWindow(settingsDialog); killWindow(discreteStateWindow); - killWindow(connectionWindow); killWindow(scriptingWindow); killWindow(rangeWindow); killWindow(dbcFileWindow); @@ -206,6 +207,7 @@ void MainWindow::killEmAll() killWindow(firmwareUploaderWindow); killWindow(motorctrlConfigWindow); killWindow(signalViewerWindow); + killWindow(connectionWindow); } //forcefully close the window, kill it, and salt the earth @@ -226,7 +228,6 @@ void MainWindow::killWindow(QDialog *win) void MainWindow::exitApp() { - killEmAll(); this->close(); }