Save and restore window geometry and state.
This commit is contained in:
@ -1,7 +1,10 @@
|
||||
#include "mainwindow.h"
|
||||
#include "./ui_mainwindow.h"
|
||||
|
||||
#include "../../libs/GenericCore/genericcore.h"
|
||||
#include <QCloseEvent>
|
||||
|
||||
#include "data/settingshandler.h"
|
||||
#include "genericcore.h"
|
||||
|
||||
MainWindow::MainWindow(QWidget* parent)
|
||||
: QMainWindow(parent)
|
||||
@ -21,6 +24,12 @@ MainWindow::MainWindow(QWidget* parent)
|
||||
#else
|
||||
setWindowIcon(QIcon(iconString));
|
||||
#endif
|
||||
|
||||
/// TODO restore window geometry and state (& save it in closeEvent)
|
||||
const QVariantMap settings = SettingsHandler::getSettings("GUI");
|
||||
restoreGeometry(settings.value("geometry").toByteArray());
|
||||
restoreState(settings.value("windowState").toByteArray());
|
||||
|
||||
connect(m_core, &GenericCore::displayStatusMessage, this, &MainWindow::displayStatusMessage);
|
||||
connect(this, &MainWindow::displayStatusMessage, this, &MainWindow::showStatusMessage);
|
||||
}
|
||||
@ -39,3 +48,41 @@ void MainWindow::showStatusMessage(const QString text) {
|
||||
qInfo() << text;
|
||||
ui->statusbar->showMessage(text);
|
||||
}
|
||||
|
||||
void MainWindow::closeEvent(QCloseEvent* event) {
|
||||
if (isWindowModified()) {
|
||||
QMessageBox msgBox;
|
||||
msgBox.setWindowTitle(windowTitle() + " - Save dialog");
|
||||
msgBox.setText("The document has been modified.");
|
||||
msgBox.setInformativeText("Do you want to save your changes?");
|
||||
msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel);
|
||||
msgBox.setDefaultButton(QMessageBox::Save);
|
||||
int ret = msgBox.exec();
|
||||
|
||||
switch (ret) {
|
||||
case QMessageBox::Save:
|
||||
// TODO m_core->saveItems();
|
||||
event->accept();
|
||||
break;
|
||||
case QMessageBox::Discard:
|
||||
event->accept();
|
||||
break;
|
||||
case QMessageBox::Cancel:
|
||||
event->ignore();
|
||||
break;
|
||||
default:
|
||||
/// should never be reached
|
||||
qCritical() << "unexpected switch case in closeEvent:" << ret;
|
||||
event->ignore();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
event->accept();
|
||||
}
|
||||
|
||||
if (event->isAccepted()) {
|
||||
qInfo() << "Saving GUI settings...";
|
||||
SettingsHandler::saveSettings({{"geometry", saveGeometry()}, {"windowState", saveState()}},
|
||||
"GUI");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user