Save and restore window geometry and state.
This commit is contained in:
@ -1,7 +1,10 @@
|
|||||||
#include "mainwindow.h"
|
#include "mainwindow.h"
|
||||||
#include "./ui_mainwindow.h"
|
#include "./ui_mainwindow.h"
|
||||||
|
|
||||||
#include "../../libs/GenericCore/genericcore.h"
|
#include <QCloseEvent>
|
||||||
|
|
||||||
|
#include "data/settingshandler.h"
|
||||||
|
#include "genericcore.h"
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget* parent)
|
MainWindow::MainWindow(QWidget* parent)
|
||||||
: QMainWindow(parent)
|
: QMainWindow(parent)
|
||||||
@ -21,6 +24,12 @@ MainWindow::MainWindow(QWidget* parent)
|
|||||||
#else
|
#else
|
||||||
setWindowIcon(QIcon(iconString));
|
setWindowIcon(QIcon(iconString));
|
||||||
#endif
|
#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(m_core, &GenericCore::displayStatusMessage, this, &MainWindow::displayStatusMessage);
|
||||||
connect(this, &MainWindow::displayStatusMessage, this, &MainWindow::showStatusMessage);
|
connect(this, &MainWindow::displayStatusMessage, this, &MainWindow::showStatusMessage);
|
||||||
}
|
}
|
||||||
@ -39,3 +48,41 @@ void MainWindow::showStatusMessage(const QString text) {
|
|||||||
qInfo() << text;
|
qInfo() << text;
|
||||||
ui->statusbar->showMessage(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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -21,6 +21,10 @@ class MainWindow : public QMainWindow {
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void displayStatusMessage(QString message);
|
void displayStatusMessage(QString message);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void closeEvent(QCloseEvent* event) override;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_pushButton_clicked();
|
void on_pushButton_clicked();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user