/* This file is part of the KDE libraries SPDX-FileCopyrightText: 1999 Reginald Stadlbauer SPDX-FileCopyrightText: 1999 Simon Hausmann SPDX-FileCopyrightText: 2000 Nicolas Hadacek SPDX-FileCopyrightText: 2000 Kurt Granroth SPDX-FileCopyrightText: 2000 Michael Koch SPDX-FileCopyrightText: 2001 Holger Freyther SPDX-FileCopyrightText: 2002 Ellis Whitehead SPDX-FileCopyrightText: 2003 Andras Mantia SPDX-FileCopyrightText: 2005-2006 Hamish Rodda SPDX-License-Identifier: LGPL-2.0-only */ #ifndef KRECENTFILESACTION_H #define KRECENTFILESACTION_H #include #include #include #include class KConfigGroup; class KRecentFilesActionPrivate; /** * @class KRecentFilesAction krecentfilesaction.h KRecentFilesAction * * @short Recent files action * * This class is an action to handle a recent files submenu. * The best way to create the action is to use KStandardAction::openRecent. * Then you simply need to call loadEntries on startup, saveEntries * on shutdown, addURL when your application loads/saves a file. * * @author Michael Koch */ class KCONFIGWIDGETS_EXPORT KRecentFilesAction : public KSelectAction { Q_OBJECT Q_PROPERTY(int maxItems READ maxItems WRITE setMaxItems) Q_DECLARE_PRIVATE(KRecentFilesAction) public: /** * Constructs an action with the specified parent. * * @param parent The parent of this action. */ explicit KRecentFilesAction(QObject *parent); /** * Constructs an action with text; a shortcut may be specified by * the ampersand character (e.g. \"&Option\" creates a shortcut with key \e O ) * * This is the most common KAction used when you do not have a * corresponding icon (note that it won't appear in the current version * of the "Edit ToolBar" dialog, because an action needs an icon to be * plugged in a toolbar...). * * @param text The text that will be displayed. * @param parent The parent of this action. */ KRecentFilesAction(const QString &text, QObject *parent); /** * Constructs an action with text and an icon; a shortcut may be specified by * the ampersand character (e.g. \"&Option\" creates a shortcut with key \e O ) * * This is the other common KAction used. Use it when you * \e do have a corresponding icon. * * @param icon The icon to display. * @param text The text that will be displayed. * @param parent The parent of this action. */ KRecentFilesAction(const QIcon &icon, const QString &text, QObject *parent); /** * Destructor. */ ~KRecentFilesAction() override; /** * Adds \a action to the list of URLs, with \a url and title \a name. * * Do not use addAction(QAction*), as no url will be associated, and * consequently urlSelected() will not be emitted when \a action is selected. */ void addAction(QAction *action, const QUrl &url, const QString &name, const QMimeType &mimeType = QMimeType()); /** * Reimplemented for internal reasons. */ QAction *removeAction(QAction *action) override; /** * Returns the maximum of items in the recent files list. */ int maxItems() const; /** * Sets the maximum of items in the recent files list. * The default for this value is 10 set in the constructor. * * If this value is lesser than the number of items currently * in the recent files list the last items are deleted until * the number of items are equal to the new maximum. * * Negative values will be normalized to 0. */ void setMaxItems(int maxItems); /** * Loads the recent files entries from a given KConfigGroup object. * You can provide the name of the group used to load the entries. * If the groupname is empty, entries are loaded from a group called 'RecentFiles'. * Local file entries that do not exist anymore are not restored. * */ void loadEntries(const KConfigGroup &config); /** * Saves the current recent files entries to a given KConfigGroup object. * You can provide the name of the group used to load the entries. * If the groupname is empty, entries are saved to a group called 'RecentFiles'. * */ void saveEntries(const KConfigGroup &config); /** * Add URL to the recent files list. This will enable this action. * * @param url The URL of the file * @param name The user visible pretty name that appears before the URL * * @note URLs corresponding to local files in the temporary directory * (see @ref QDir::tempPath()) are automatically ignored by this method. */ void addUrl(const QUrl &url, const QString &name = QString()); /** * Remove an URL from the recent files list. * * @param url The URL of the file */ void removeUrl(const QUrl &url); /** * Retrieve a list of all URLs in the recent files list. */ QList urls() const; public Q_SLOTS: /** * Clears the recent files list. * Note that there is also an action shown to the user for clearing the list. */ virtual void clear(); Q_SIGNALS: /** * This signal gets emitted when the user selects an URL. * * @param url The URL that the user selected. */ void urlSelected(const QUrl &url); /** * This signal gets emitted when the user clear list. * So when user store url in specific config file it can saveEntry. * @since 4.3 */ void recentListCleared(); private: // Internal KCONFIGWIDGETS_NO_EXPORT void clearEntries(); // Don't warn about the virtual overload. As the comment of the other // addAction() says, addAction( QAction* ) should not be used. using KSelectAction::addAction; private: std::unique_ptr const d_ptr; }; #endif