OGS
RecentFiles Class Reference

Detailed Description

The RecentFiles class provides functionality to store information about recently used files (e.g. loaded or saved files). Example Usage:

RecentFiles* recentFiles = new RecentFiles(this, SLOT(openRecentFile()), "recentFileList", "OpenGeoSys");
connect(this, SIGNAL(fileUsed(QString)), recentFiles, SLOT(setCurrentFile(QString)));
menu_File->addMenu( recentFiles->menu() );
void setCurrentFile(const QString &filename)
Should be called from the application when a file was used.
QMenu * menu()
Returns the created menu. Add this menu to your QMainWindow menu.
RecentFiles(QObject *parent, const char *slot, QString settingsName)

with:

{
QAction* action = qobject_cast<QAction*>(sender());
if (action)
loadFile(action->data().toString());
}
void openRecentFile()

Definition at line 28 of file RecentFiles.h.

#include <RecentFiles.h>

Inheritance diagram for RecentFiles:
[legend]
Collaboration diagram for RecentFiles:
[legend]

Public Slots

void setCurrentFile (const QString &filename)
 Should be called from the application when a file was used.

Public Member Functions

 RecentFiles (QObject *parent, const char *slot, QString settingsName)
 ~RecentFiles () override
QMenu * menu ()
 Returns the created menu. Add this menu to your QMainWindow menu.

Private Types

enum  { _maxFiles = 5 }

Private Member Functions

void updateRecentFileActions ()
 Updates the recent files list and writes it to the settings.
QString strippedName (const QString &fullFileName)
 Returns the filename from a full file path.

Private Attributes

QMenu * _filesMenu
QString _currentFile
QString _settingsName
QAction * _fileActions [_maxFiles]

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
_maxFiles 

Definition at line 61 of file RecentFiles.h.

61{ _maxFiles = 5 };

Constructor & Destructor Documentation

◆ RecentFiles()

RecentFiles::RecentFiles ( QObject * parent,
const char * slot,
QString settingsName )

Constructor. Example Usage:

RecentFiles recentFiles = new RecentFiles(this, SLOT(mySlot(QString)), "recentFileList");
Parameters
parentThe parent object. Normally the QMainWindow instance
slotA slot on parent which is called when a recent file is clicked. Use this with Qts SLOT() macro!
settingsNameThe setting key

Definition at line 11 of file RecentFiles.cpp.

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}
QAction * _fileActions[_maxFiles]
Definition RecentFiles.h:62
void updateRecentFileActions()
Updates the recent files list and writes it to the settings.
QString _settingsName
Definition RecentFiles.h:60
QMenu * _filesMenu
Definition RecentFiles.h:58

References _fileActions, _filesMenu, _settingsName, and updateRecentFileActions().

◆ ~RecentFiles()

RecentFiles::~RecentFiles ( )
override

Definition at line 26 of file RecentFiles.cpp.

27{
28 delete _filesMenu;
29}

References _filesMenu.

Member Function Documentation

◆ menu()

QMenu * RecentFiles::menu ( )

Returns the created menu. Add this menu to your QMainWindow menu.

Definition at line 31 of file RecentFiles.cpp.

32{
33 return _filesMenu;
34}

References _filesMenu.

Referenced by MainWindow::MainWindow().

◆ setCurrentFile

void RecentFiles::setCurrentFile ( const QString & filename)
slot

Should be called from the application when a file was used.

Definition at line 35 of file RecentFiles.cpp.

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}
QString _currentFile
Definition RecentFiles.h:59

References _currentFile, _maxFiles, _settingsName, and updateRecentFileActions().

◆ strippedName()

QString RecentFiles::strippedName ( const QString & fullFileName)
private

Returns the filename from a full file path.

Definition at line 73 of file RecentFiles.cpp.

74{
75 return QFileInfo(fullFileName).fileName();
76}

Referenced by updateRecentFileActions().

◆ updateRecentFileActions()

void RecentFiles::updateRecentFileActions ( )
private

Updates the recent files list and writes it to the settings.

Definition at line 52 of file RecentFiles.cpp.

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}
QString strippedName(const QString &fullFileName)
Returns the filename from a full file path.

References _fileActions, _maxFiles, _settingsName, and strippedName().

Referenced by RecentFiles(), and setCurrentFile().

Member Data Documentation

◆ _currentFile

QString RecentFiles::_currentFile
private

Definition at line 59 of file RecentFiles.h.

Referenced by setCurrentFile().

◆ _fileActions

QAction* RecentFiles::_fileActions[_maxFiles]
private

Definition at line 62 of file RecentFiles.h.

Referenced by RecentFiles(), and updateRecentFileActions().

◆ _filesMenu

QMenu* RecentFiles::_filesMenu
private

Definition at line 58 of file RecentFiles.h.

Referenced by RecentFiles(), ~RecentFiles(), and menu().

◆ _settingsName

QString RecentFiles::_settingsName
private

Definition at line 60 of file RecentFiles.h.

Referenced by RecentFiles(), setCurrentFile(), and updateRecentFileActions().


The documentation for this class was generated from the following files: