annotate recentfiles.h @ 344:ccc55539e066

If the user cancels the first startup dialog (it has no cancel button, but they could use the WM close button), go no further
author Chris Cannam
date Wed, 16 Mar 2011 10:25:06 +0000
parents 8fd71f570884
children
rev   line source
Chris@63 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@63 2
Chris@63 3 /*
Chris@63 4 EasyMercurial
Chris@63 5
Chris@63 6 Based on HgExplorer by Jari Korhonen
Chris@63 7 Copyright (c) 2010 Jari Korhonen
Chris@244 8 Copyright (c) 2011 Chris Cannam
Chris@244 9 Copyright (c) 2011 Queen Mary, University of London
Chris@63 10
Chris@63 11 This program is free software; you can redistribute it and/or
Chris@63 12 modify it under the terms of the GNU General Public License as
Chris@63 13 published by the Free Software Foundation; either version 2 of the
Chris@63 14 License, or (at your option) any later version. See the file
Chris@63 15 COPYING included with this distribution for more information.
Chris@63 16 */
Chris@63 17
Chris@63 18 #ifndef _RECENT_FILES_H_
Chris@63 19 #define _RECENT_FILES_H_
Chris@63 20
Chris@63 21 #include <QObject>
Chris@63 22 #include <QString>
Chris@63 23 #include <QStringList>
Chris@63 24 #include <deque>
Chris@63 25
Chris@63 26 /**
Chris@63 27 * RecentFiles manages a list of the names of recently-used objects,
Chris@63 28 * saving and restoring that list via QSettings. The names do not
Chris@63 29 * actually have to refer to files.
Chris@63 30 */
Chris@63 31
Chris@63 32 class RecentFiles : public QObject
Chris@63 33 {
Chris@63 34 Q_OBJECT
Chris@63 35
Chris@63 36 public:
Chris@63 37 /**
Chris@63 38 * Construct a RecentFiles object that saves and restores in the
Chris@63 39 * given QSettings group and truncates when the given count of
Chris@63 40 * strings is reached.
Chris@63 41 */
Chris@63 42 RecentFiles(QString settingsGroup = "RecentFiles",
Chris@63 43 size_t maxCount = 10,
Chris@63 44 bool ignoreTemporaries = true);
Chris@63 45 virtual ~RecentFiles();
Chris@63 46
Chris@63 47 QString getSettingsGroup() const { return m_settingsGroup; }
Chris@63 48
Chris@63 49 int getMaxCount() const { return m_maxCount; }
Chris@63 50
Chris@63 51 QStringList getRecent() const;
Chris@63 52
Chris@63 53 /**
Chris@63 54 * Add a name that should be treated as a literal string.
Chris@63 55 */
Chris@63 56 void add(QString name);
Chris@63 57
Chris@63 58 /**
Chris@63 59 * Add a name that is known to be either a file path or a URL. If
Chris@63 60 * it looks like a URL, add it literally; otherwise treat it as a
Chris@63 61 * file path and canonicalise it appropriately. Also takes into
Chris@69 62 * account the preference for whether to include temporary files
Chris@69 63 * in the recent files menu: the file will not be added if the
Chris@69 64 * preference is set and the file appears to be a temporary one.
Chris@63 65 */
Chris@63 66 void addFile(QString name);
Chris@63 67
Chris@63 68 signals:
Chris@63 69 void recentChanged();
Chris@63 70
Chris@63 71 protected:
Chris@63 72 QString m_settingsGroup;
Chris@63 73 size_t m_maxCount;
Chris@63 74 bool m_ignoreTemporaries;
Chris@63 75
Chris@63 76 std::deque<QString> m_names;
Chris@63 77
Chris@63 78 void read();
Chris@63 79 void write();
Chris@63 80 void truncateAndWrite();
Chris@63 81 };
Chris@63 82
Chris@63 83 #endif