From 2ff9d533c336f2dc631d22528250dfde3e774c5b Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sat, 20 Dec 2025 16:09:21 +0100 Subject: [PATCH] Implement auto loading of recent opened file --- src/editor/dialogs/preferencesdialog.cpp | 4 +++- src/editor/dialogs/preferencesdialog.ui | 2 +- src/editor/editorsettings.cpp | 10 ++++++++++ src/editor/editorsettings.h | 3 +++ src/editor/mainwindow.cpp | 11 ++++++----- 5 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/editor/dialogs/preferencesdialog.cpp b/src/editor/dialogs/preferencesdialog.cpp index 814a93d..a1b7d09 100644 --- a/src/editor/dialogs/preferencesdialog.cpp +++ b/src/editor/dialogs/preferencesdialog.cpp @@ -20,6 +20,7 @@ PreferencesDialog::PreferencesDialog(const EditorSettings &settings, QWidget *pa improveButtonBox(m_ui->buttonBox); m_ui->checkBoxShowRecentFiles->setChecked(settings.showRecentFiles()); + m_ui->checkBoxAutoLoadLastFile->setChecked(settings.autoLoadLastFile()); m_ui->checkBoxHideWebsiteLogo->setChecked(settings.hideWebsiteImage()); } @@ -28,5 +29,6 @@ PreferencesDialog::~PreferencesDialog() = default; void PreferencesDialog::save(EditorSettings &settings) { settings.setShowRecentFiles(m_ui->checkBoxShowRecentFiles->isChecked()); - settings.setHideWebsiteImage(m_ui->checkBoxHideWebsiteLogo->isChecked()); + settings.setAutoLoadLastFile(m_ui->checkBoxAutoLoadLastFile->isChecked()); + settings.setShowRecentFiles(m_ui->checkBoxShowRecentFiles->isChecked()); } diff --git a/src/editor/dialogs/preferencesdialog.ui b/src/editor/dialogs/preferencesdialog.ui index 58904a4..9f4f0d1 100644 --- a/src/editor/dialogs/preferencesdialog.ui +++ b/src/editor/dialogs/preferencesdialog.ui @@ -34,7 +34,7 @@ - + &Load last openend file on startup diff --git a/src/editor/editorsettings.cpp b/src/editor/editorsettings.cpp index 5ae4e7c..c4db2c4 100644 --- a/src/editor/editorsettings.cpp +++ b/src/editor/editorsettings.cpp @@ -116,6 +116,16 @@ void EditorSettings::setShowRecentFiles(bool showRecentFiles) setValue("showRecentFiles", showRecentFiles); } +bool EditorSettings::autoLoadLastFile() const +{ + return value("autoLoadLastFile", false).toBool(); +} + +void EditorSettings::setAutoLoadLastFile(bool autoLoadLastFile) +{ + setValue("autoLoadLastFile", autoLoadLastFile); +} + bool EditorSettings::hideWebsiteImage() const { return value("hideWebsiteImage", false).toBool(); diff --git a/src/editor/editorsettings.h b/src/editor/editorsettings.h index 268baec..54a9679 100644 --- a/src/editor/editorsettings.h +++ b/src/editor/editorsettings.h @@ -42,6 +42,9 @@ public: bool showRecentFiles() const; void setShowRecentFiles(bool showRecentFiles); + bool autoLoadLastFile() const; + void setAutoLoadLastFile(bool autoLoadLastFile); + bool hideWebsiteImage() const; void setHideWebsiteImage(bool hideWebsiteImage); }; diff --git a/src/editor/mainwindow.cpp b/src/editor/mainwindow.cpp index ca4ddfa..663971a 100644 --- a/src/editor/mainwindow.cpp +++ b/src/editor/mainwindow.cpp @@ -52,7 +52,6 @@ MainWindow::MainWindow(const QString &filePath, EditorSettings &settings, QWidge QMainWindow{parent}, m_ui{std::make_unique()}, m_settings{settings}, - m_filePath{filePath}, m_projectTreeModel{std::make_unique(m_project, this)} { m_ui->setupUi(this); @@ -164,10 +163,12 @@ MainWindow::MainWindow(const QString &filePath, EditorSettings &settings, QWidge connect(m_projectTreeModel.get(), &QAbstractTableModel::dataChanged, this, &MainWindow::changed); - updateTitle(); - - if (!m_filePath.isEmpty()) - loadFile(m_filePath); + if (!filePath.isEmpty()) + loadFile(filePath); + else if (const auto &recentFiles = m_settings.recentFiles(); m_settings.autoLoadLastFile() && !recentFiles.isEmpty()) + loadFile(recentFiles.front()); + else + updateTitle(); updateVisibilities();