diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 8b40053c..3d5c1195 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -598,7 +598,7 @@ bool MainWindow::fileOpen(const QString& fileName, bool openFromProject, bool re setCurrentFile(wFile); if(!openFromProject) { currentProjectFilename.clear(); - addToRecentFilesMenu(wFile); + addToRecentFilesMenu(wFile, readOnly); } openSqlTab(true); if(ui->mainTab->currentWidget() == ui->browser) @@ -1934,7 +1934,17 @@ void MainWindow::openRecentFile() { QAction *action = qobject_cast(sender()); if (action) - fileOpen(action->data().toString()); + { + QString file = action->data().toString(); + bool read_only = false; + if(file.startsWith("[ro]")) // Check if file is in read-only + { + file = file.mid(4); + read_only = true; + } + + fileOpen(file, false, read_only); + } } void MainWindow::updateRecentFileActions() @@ -1945,7 +1955,12 @@ void MainWindow::updateRecentFileActions() // Check if files still exist and remove any non-existent file for(int i=0;isetText(text); recentFileActs[i]->setData(files[i]); recentFileActs[i]->setVisible(true); @@ -1982,13 +2005,17 @@ void MainWindow::setCurrentFile(const QString &fileName) dbState(db.getDirty()); } -void MainWindow::addToRecentFilesMenu(const QString& filename) +void MainWindow::addToRecentFilesMenu(const QString& filename, bool read_only) { - QStringList files = Settings::getValue("General", "recentFileList").toStringList(); QFileInfo info(filename); + QString path = info.absoluteFilePath(); + if(read_only) + path = "[ro]" + path; - files.removeAll(info.absoluteFilePath()); - files.prepend(info.absoluteFilePath()); + QStringList files = Settings::getValue("General", "recentFileList").toStringList(); + + files.removeAll(path); + files.prepend(path); while (files.size() > MaxRecentFiles) files.removeLast(); @@ -2812,7 +2839,7 @@ bool MainWindow::loadProject(QString filename, bool readOnly) return false; isProjectModified = false; - addToRecentFilesMenu(filename); + addToRecentFilesMenu(filename, readOnly); while(!xml.atEnd() && !xml.hasError()) { diff --git a/src/MainWindow.h b/src/MainWindow.h index d4a0bbc8..b7c3a6db 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -174,7 +174,7 @@ private: void updateRecentFileActions(); void setCurrentFile(const QString& fileName); - void addToRecentFilesMenu(const QString& filename); + void addToRecentFilesMenu(const QString& filename, bool read_only = false); void activateFields(bool enable = true); void enableEditing(bool enable_edit); void saveAsView(QString query);