OGS
RecentFiles.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4// ** INCLUDES **
5#include "RecentFiles.h"
6
7#include <QFileInfo>
8#include <QSettings>
9#include <utility>
10
11RecentFiles::RecentFiles(QObject* parent, const char* slot,
12 QString settingsName)
13 : QObject(parent), _settingsName(std::move(settingsName))
14{
15 _filesMenu = new QMenu(tr("Recent files"));
16 for (auto& fileAction : _fileActions)
17 {
18 fileAction = new QAction(this);
19 fileAction->setVisible(false);
20 connect(fileAction, SIGNAL(triggered()), parent, slot);
21 _filesMenu->addAction(fileAction);
22 }
24}
25
30
32{
33 return _filesMenu;
34}
35void RecentFiles::setCurrentFile(const QString& filename)
36{
37 _currentFile = filename;
38
39 QSettings settings;
40 QStringList files = settings.value(_settingsName).toStringList();
41 files.removeAll(filename);
42 files.prepend(filename);
43 while (files.size() > _maxFiles)
44 {
45 files.removeLast();
46 }
47
48 settings.setValue("recentFileList", files);
49
51}
53{
54 QSettings settings;
55 QStringList files = settings.value(_settingsName).toStringList();
56
57 int numFiles = qMin(files.size(), static_cast<int>(_maxFiles));
58
59 for (int i = 0; i < numFiles; ++i)
60 {
61 QString text = tr("&%1 %2").arg(i + 1).arg(strippedName(files[i]));
62 _fileActions[i]->setText(text);
63 _fileActions[i]->setData(files[i]);
64 _fileActions[i]->setVisible(true);
65 }
66
67 for (int i = numFiles; i < _maxFiles; ++i)
68 {
69 _fileActions[i]->setVisible(false);
70 }
71}
72
73QString RecentFiles::strippedName(const QString& fullFileName)
74{
75 return QFileInfo(fullFileName).fileName();
76}
QAction * _fileActions[_maxFiles]
Definition RecentFiles.h:62
QString strippedName(const QString &fullFileName)
Returns the filename from a full file path.
void setCurrentFile(const QString &filename)
Should be called from the application when a file was used.
~RecentFiles() override
void updateRecentFileActions()
Updates the recent files list and writes it to the settings.
QMenu * menu()
Returns the created menu. Add this menu to your QMainWindow menu.
QString _currentFile
Definition RecentFiles.h:59
QString _settingsName
Definition RecentFiles.h:60
RecentFiles(QObject *parent, const char *slot, QString settingsName)
QMenu * _filesMenu
Definition RecentFiles.h:58