annotate recentfiles.h @ 195:ff0d76dcb3b8

* Don't close proc input on finished() -- causes crash on program failure on Windows * Use merge binary from settings, even if empty -- sometimes user may wish to set an empty string to avoid having an external merge program * Revert labels to line edits in settings dialog, for a similar reason (permit setting empty value) * Avoid showing hard hyphens on Windows, they don't look right * Use preformatted text for merge outcome dialog (but format3 would be better)
author Chris Cannam
date Fri, 24 Dec 2010 13:14:45 +0000
parents 6d5a5571caec
children 8fd71f570884
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@63 8 Copyright (c) 2010 Chris Cannam
Chris@63 9 Copyright (c) 2010 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