diff --git a/mainwindow.cpp b/mainwindow.cpp index 8cd2ff6..46a2204 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -15,6 +15,20 @@ MainWindow::MainWindow(QWidget *parent) mDiskLumpCount = 0; mDiskLumpOrder = QVector(); mLumps = QMap(); + mRecentFiles = QQueue(); + mSettingsValid = false; + mRecentFileActions = QVector(); + + const QString appSettingsPath = QDir::currentPath() + "/appSettings.ini"; + QSettings appSettings(appSettingsPath, QSettings::IniFormat); + if (appSettings.contains("mRecentFiles")) { + mSettingsValid = true; + + QStringList recentFiles = appSettings.value("mRecentFiles").toStringList(); + foreach (QString recentFile, recentFiles) { + mRecentFiles.enqueue(recentFile); + } + } connect(ui->treeWidget_Scripts, &QTreeWidget::itemSelectionChanged, this, &MainWindow::ScriptSelected); connect(ui->comboBox_StringTable, &QComboBox::currentTextChanged, this, &MainWindow::StrTableSelected); @@ -114,6 +128,10 @@ MainWindow::MainWindow(QWidget *parent) } MainWindow::~MainWindow() { + const QString appSettingsPath = QDir::currentPath() + "/appSettings.ini"; + QSettings appSettings(appSettingsPath, QSettings::IniFormat); + appSettings.setValue("mRecentFiles", mRecentFiles.toList()); + delete ui; } @@ -193,6 +211,9 @@ void MainWindow::Reset() { mRawFileMap.clear(); mTreeMap.clear(); mStrTableMap.clear(); + + // Refresh recent files + RefreshRecentFileMenu(); } void MainWindow::StrTableSelected(QString aStrTableName) { diff --git a/mainwindow.h b/mainwindow.h index e1d1296..76ebd33 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -12,6 +12,8 @@ #include #include #include +#include +#include #include #include @@ -84,9 +86,16 @@ private slots: void on_pushButton_FastFile_clicked(); void on_pushButton_FastFile_2_clicked(); - QFile *OpenFastFile(); - QFile *OpenZoneFile(); - void ParseFFHeader(QFile *aFastFilePtr); + void LogOpenedFile(QString aFileName); + void RefreshRecentFileMenu(); + + QString GetFastFilePath(); + QString GetZoneFilePath(); + + QByteArray OpenFastFile(QString aFastFilePath); + QByteArray OpenZoneFile(QString aZoneFilePath); + + void ParseFFHeader(QByteArray aFastFileData); void ParseFFCompany(QDataStream *aFastFileStream); void ParseFFFileType(QDataStream *afastFileStream); void ParseFFSignage(QDataStream *afastFileStream); @@ -141,6 +150,10 @@ private: QMap mRawFileMap; QMap mTreeMap; QMap>> mStrTableMap; + QQueue mRecentFiles; + bool mSettingsValid; + + QVector mRecentFileActions; quint32 mBSPVersion; quint32 mDiskLumpCount;