digiKam
Loading...
Searching...
No Matches
coredbwatch.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2007-03-23
7 * Description : Core database image properties synchronizer
8 *
9 * SPDX-FileCopyrightText: 2007-2009 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
11 *
12 * SPDX-License-Identifier: GPL-2.0-or-later
13 *
14 * ============================================================ */
15
16#pragma once
17
18#include "digikam_config.h"
19
20// Qt includes
21
22#include <QObject>
23#include <QThread>
24
25// Local includes
26
27#include "digikam_export.h"
28#include "coredbchangesets.h"
29
30namespace Digikam
31{
32
33class DIGIKAM_DATABASE_EXPORT CoreDbWatch : public QObject
34{
35 Q_OBJECT
36
37public:
38
40 {
42 DatabaseSlave
43 };
44
45public:
46
48 ~CoreDbWatch() override;
49
50 void initializeRemote(DatabaseMode mode);
51 void doAnyProcessing();
52 void setDatabaseIdentifier(const QString& identifier);
53 void setApplicationIdentifier(const QString& identifier);
54
56
57 void sendDatabaseChanged();
58
59 void sendImageChange(const ImageChangeset& changeset);
60 void sendImageTagChange(const ImageTagChangeset& changeset);
61 void sendCollectionImageChange(const CollectionImageChangeset& changeset);
62 void sendAlbumChange(const AlbumChangeset& changeset);
63 void sendTagChange(const TagChangeset& changeset);
64 void sendAlbumRootChange(const AlbumRootChangeset& changeset);
65 void sendSearchChange(const SearchChangeset& changeset);
66
67Q_SIGNALS:
68
79
84 void imageChange(const ImageChangeset& changeset);
85 void imageTagChange(const ImageTagChangeset& changeset);
87 void albumChange(const AlbumChangeset& changeset);
88 void tagChange(const TagChangeset& changeset);
89 void albumRootChange(const AlbumRootChangeset& changeset);
90 void searchChange(const SearchChangeset& changeset);
91
92#ifdef HAVE_DBUS
93
94protected Q_SLOTS:
95
96 // NOTE: The full qualification with "Digikam::" for the changeset types in the following
97 // signals and slots are required to make moc pick them up.
98 // If moc does not get the namespace in its literal, DBus connections will silently break.
99
101 void slotImageChangeDBus(const QString& databaseIdentifier,
102 const QString& applicationIdentifier,
103 const Digikam::ImageChangeset& changeset);
104 void slotImageTagChangeDBus(const QString& databaseIdentifier,
105 const QString& applicationIdentifier,
106 const Digikam::ImageTagChangeset& changeset);
107 void slotCollectionImageChangeDBus(const QString& databaseIdentifier,
108 const QString& applicationIdentifier,
109 const Digikam::CollectionImageChangeset& changeset);
110 void slotAlbumChangeDBus(const QString& databaseIdentifier,
111 const QString& applicationIdentifier,
112 const Digikam::AlbumChangeset& changeset);
113 void slotTagChangeDBus(const QString& databaseIdentifier,
114 const QString& applicationIdentifier,
115 const Digikam::TagChangeset& changeset);
116 void slotAlbumRootChangeDBus(const QString& databaseIdentifier,
117 const QString& applicationIdentifier,
118 const Digikam::AlbumRootChangeset& changeset);
119 void slotSearchChangeDBus(const QString& databaseIdentifier,
120 const QString& applicationIdentifier,
121 const Digikam::SearchChangeset& changeset);
122
123Q_SIGNALS:
124
126 void signalImageChangeDBus(const QString& databaseIdentifier,
127 const QString& applicationIdentifier,
128 const Digikam::ImageChangeset& changeset);
129 void signalImageTagChangeDBus(const QString& databaseIdentifier,
130 const QString& applicationIdentifier,
131 const Digikam::ImageTagChangeset& changeset);
132 void signalCollectionImageChangeDBus(const QString& databaseIdentifier,
133 const QString& applicationIdentifier,
134 const Digikam::CollectionImageChangeset& changeset);
135 void signalAlbumChangeDBus(const QString& databaseIdentifier,
136 const QString& applicationIdentifier,
137 const Digikam::AlbumChangeset& changeset);
138 void signalTagChangeDBus(const QString& databaseIdentifier,
139 const QString& applicationIdentifier,
140 const Digikam::TagChangeset& changeset);
141 void signalAlbumRootChangeDBus(const QString& databaseIdentifier,
142 const QString& applicationIdentifier,
143 const Digikam::AlbumRootChangeset& changeset);
144 void signalSearchChangeDBus(const QString& databaseIdentifier,
145 const QString& applicationIdentifier,
146 const Digikam::SearchChangeset& changeset);
147#endif
148
149public:
150
151 class Private;
152
153private:
154
155 // Disabled
156 explicit CoreDbWatch(QObject*) = delete;
157
158 Private* const d = nullptr;
159};
160
161#ifdef HAVE_DBUS
162
163// ------------------------------------------------------------------------------------
164
165class DBusSignalListenerThread : public QThread
166{
167 Q_OBJECT
168
169public:
170
171 explicit DBusSignalListenerThread(CoreDbWatch* const qq, CoreDbWatch::Private* const dd);
172 ~DBusSignalListenerThread() override;
173
174 void run() override;
175
176private:
177
178 CoreDbWatch* const q = nullptr;
179 CoreDbWatch::Private* const d = nullptr;
180};
181
182#endif
183
184} // namespace Digikam
Definition coredbchangesets.h:252
Definition coredbchangesets.h:327
Definition coredbchangesets.h:142
Definition coredbwatch.h:34
void searchChange(const SearchChangeset &changeset)
void albumChange(const AlbumChangeset &changeset)
void collectionImageChange(const CollectionImageChangeset &changeset)
void tagChange(const TagChangeset &changeset)
void albumRootChange(const AlbumRootChangeset &changeset)
DatabaseMode
Definition coredbwatch.h:40
@ DatabaseMaster
Definition coredbwatch.h:41
void imageChange(const ImageChangeset &changeset)
void imageTagChange(const ImageTagChangeset &changeset)
Definition coredbchangesets.h:38
Definition coredbchangesets.h:70
Definition coredbchangesets.h:362
Definition coredbchangesets.h:288
Definition datefolderview.cpp:34