summaryrefslogtreecommitdiff
path: root/src/main-view/RecentFilesManager.h
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2021-07-14 11:49:10 +1200
committerJedidiah Barber <contact@jedbarber.id.au>2021-07-14 11:49:10 +1200
commitd24f813f3f2a05c112e803e4256b53535895fc98 (patch)
tree601e6ae9a1cd44bcfdcf91739a5ca36aedd827c9 /src/main-view/RecentFilesManager.h
Initial mirror commitHEADmaster
Diffstat (limited to 'src/main-view/RecentFilesManager.h')
-rw-r--r--src/main-view/RecentFilesManager.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/main-view/RecentFilesManager.h b/src/main-view/RecentFilesManager.h
new file mode 100644
index 0000000..7988a0e
--- /dev/null
+++ b/src/main-view/RecentFilesManager.h
@@ -0,0 +1,43 @@
+#ifndef RECENT_FILES_MANAGER_H
+#define RECENT_FILES_MANAGER_H
+
+#include <QtCore>
+#include <QtWidgets>
+
+class RecentFilesManager: public QObject
+{
+ Q_OBJECT
+
+public:
+ RecentFilesManager(QObject* parent, QMenu* recentFilesMenu);
+ void createRecentFileActs(const QStringList& recentFiles);
+ void addFile( const QString& filePath);
+ QString getLastUsedFilePath() const;
+ QStringList getFiles() const;
+
+private:
+ static QString getShortFileName(const QString& filePath)
+ { return QFileInfo(filePath).fileName(); }
+ static QString getActionFile(QAction* action);
+
+private:
+ QAction* createRecentFileAction(const QString& filePath);
+ void updateActionTexts();
+ QString getShortDirPath(const QString& filePath) const;
+ void addRecentFileAction(const QString& filePath);
+
+private slots:
+ void triggerRecentFile();
+
+signals:
+ void recentFileTriggered(const QString& filePath);
+ void addedFile();
+
+private:
+ static const int MaxRecentFiles = 10;
+ static const int MaxPathLength = 300;
+
+private:
+ QMenu* recentFilesMenu;
+};
+#endif