diff base/RecentFiles.h @ 166:702fc936e6a6

* Pull transforms out of Layer menu (again) and into a separate Transforms menu * Add Recent Transforms submenu * Add effects and generators to the transforms menu (not yet implemented) as well as analysis plugins and data-from-effects (control output ports) * Add a nice dictionary-volume-style alphabetic subdivision of plugin names in plugins By Name menus
author Chris Cannam
date Fri, 22 Sep 2006 16:12:23 +0000
parents 3e4c384f518e
children 6576a208e8e7
line wrap: on
line diff
--- a/base/RecentFiles.h	Thu Sep 21 16:43:50 2006 +0000
+++ b/base/RecentFiles.h	Fri Sep 22 16:12:23 2006 +0000
@@ -21,36 +21,55 @@
 #include <vector>
 #include <deque>
 
+/**
+ * RecentFiles manages a list of the names of recently-used objects,
+ * saving and restoring that list via QSettings.  The names do not
+ * actually have to refer to files.
+ */
+
 class RecentFiles : public QObject
 {
     Q_OBJECT
 
 public:
-    // The maxFileCount argument will only be used the first time this is called
-    static RecentFiles *getInstance(int maxFileCount = 10);
+    /**
+     * Construct a RecentFiles object that saves and restores in the
+     * given QSettings group and truncates when the given count of
+     * strings is reached.
+     */
+    RecentFiles(QString settingsGroup = "RecentFiles", size_t maxCount = 10);
 
     virtual ~RecentFiles();
 
-    int getMaxFileCount() const { return m_maxFileCount; }
+    QString getSettingsGroup() const { return m_settingsGroup; }
 
-    std::vector<QString> getRecentFiles() const;
+    int getMaxCount() const { return m_maxCount; }
+
+    std::vector<QString> getRecent() const;
+
+    /**
+     * Add a name that should be treated as a literal string.
+     */
+    void add(QString name);
     
-    void addFile(QString filename);
+    /**
+     * Add a name that should be treated as a file path and
+     * canonicalised appropriately.
+     */
+    void addFile(QString name);
 
 signals:
-    void recentFilesChanged();
+    void recentChanged();
 
 protected:
-    RecentFiles(int maxFileCount);
+    QString m_settingsGroup;
+    size_t m_maxCount;
 
-    int m_maxFileCount;
-    std::deque<QString> m_files;
+    std::deque<QString> m_names;
 
-    void readFiles();
-    void writeFiles();
+    void read();
+    void write();
     void truncateAndWrite();
-
-    static RecentFiles *m_instance;
 };
 
 #endif