1/*
2 This file is part of the KDE project
3 SPDX-FileCopyrightText: 2012 Dawit Alemayehu <adawit@kde.org>
4
5 SPDX-License-Identifier: LGPL-2.0-or-later
6*/
7
8#ifndef KPARTS_LISTINGNOTIFICATIONEXTENSION_H
9#define KPARTS_LISTINGNOTIFICATIONEXTENSION_H
10
11#include <kparts/kparts_export.h>
12
13#include <QObject>
14#include <memory>
15
16class KFileItemList;
17
18namespace KParts
19{
20class ReadOnlyPart;
21class ListingNotificationExtensionPrivate;
22
23/*!
24 * \class KParts::ListingNotificationExtension
25 * \inheaderfile KParts/ListingNotificationExtension
26 * \inmodule KParts
27 *
28 * \brief An extension for receiving listing change notification.
29 *
30 * This extension is intended for implementation by parts that provide listing
31 * services, e.g. file management and is intended to notify about changes to
32 * a given listing. For example, if file management part implemented this extension
33 * it would emit itemsDeleted and itemsAdded signal whenever new files
34 * or folders are deleted and added to a directory respectively.
35 *
36 * \since 4.9.2
37 */
38class KPARTS_EXPORT ListingNotificationExtension : public QObject
39{
40 Q_OBJECT
41
42public:
43 /*!
44 * Supported notification event types.
45 *
46 * \value None
47 * \value ItemsAdded New items added to the listing.
48 * \value ItemsDeleted Items deleted from the listing.
49 *
50 */
51 enum NotificationEventType {
52 None = 0x00,
53 ItemsAdded = 0x01,
54 ItemsDeleted = 0x02,
55 };
56
57 Q_DECLARE_FLAGS(NotificationEventTypes, NotificationEventType)
58
59 /*! Constructor */
60 ListingNotificationExtension(KParts::ReadOnlyPart *parent);
61
62 ~ListingNotificationExtension() override;
63
64 /*!
65 * Returns the OR'ed value of the notification types supported by the part
66 * that implements this extension.
67 *
68 * By default this function returns None.
69 */
70 virtual NotificationEventTypes supportedNotificationEventTypes() const;
71
72 /*!
73 * Queries \a obj for a child object which inherits from this class.
74 */
75 static ListingNotificationExtension *childObject(QObject *obj);
76
77Q_SIGNALS:
78 /*!
79 * This signal is emitted when one of the notification events listed
80 * in NotificationEventType occur.
81 */
82 void listingEvent(KParts::ListingNotificationExtension::NotificationEventType, const KFileItemList &);
83
84private:
85 std::unique_ptr<ListingNotificationExtension> const d;
86};
87
88Q_DECLARE_OPERATORS_FOR_FLAGS(ListingNotificationExtension::NotificationEventTypes)
89
90}
91
92#endif /* KPARTS_LISTINGNOTIFICATIONEXTENSION_H */
93

source code of kparts/src/listingnotificationextension.h