digiKam
Loading...
Searching...
No Matches
coredbbackend_p.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 : 2009-06-07
7 * Description : Core database abstract backend.
8 *
9 * SPDX-FileCopyrightText: 2007-2009 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 * SPDX-FileCopyrightText: 2010-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// Local includes
19
20#include "dbenginebackend_p.h"
21#include "coredbwatch.h"
22
23namespace Digikam
24{
25
26class CoreDbWatch;
27
28class Q_DECL_HIDDEN CoreDbBackendPrivate : public BdEngineBackendPrivate
29{
30public:
31
32 explicit CoreDbBackendPrivate(CoreDbBackend* const backend)
33 : BdEngineBackendPrivate (backend),
34 imageChangesetContainer (this),
35 imageTagChangesetContainer (this),
36 collectionImageChangesetContainer (this),
37 albumChangesetContainer (this),
38 tagChangesetContainer (this),
39 albumRootChangesetContainer (this),
40 searchChangesetContainer (this)
41 {
42 }
43
44public:
45
46 CoreDbWatch* watch = nullptr;
47
48public:
49
50 void sendToWatch(const ImageChangeset& changeset)
51 {
52 watch->sendImageChange(changeset);
53 }
54
55 void sendToWatch(const ImageTagChangeset& changeset)
56 {
57 watch->sendImageTagChange(changeset);
58 }
59
61 {
62 watch->sendCollectionImageChange(changeset);
63 }
64
65 void sendToWatch(const AlbumChangeset& changeset)
66 {
67 watch->sendAlbumChange(changeset);
68 }
69
70 void sendToWatch(const TagChangeset& changeset)
71 {
72 watch->sendTagChange(changeset);
73 }
74
75 void sendToWatch(const AlbumRootChangeset& changeset)
76 {
77 watch->sendAlbumRootChange(changeset);
78 }
79
80 void sendToWatch(const SearchChangeset& changeset)
81 {
82 watch->sendSearchChange(changeset);
83 }
84
85 template <class T>
86 class Q_DECL_HIDDEN ChangesetContainer
87 {
88
89 public:
90
92 : d(dd)
93 {
94 }
95
96 void recordChangeset(const T& changeset)
97 {
98 if (d->isInTransaction)
99 {
100 changesets << changeset;
101 }
102 else
103 {
104 d->sendToWatch(changeset);
105 }
106 }
107
108 void sendOut()
109 {
110 for (const T& changeset : std::as_const(changesets))
111 {
112 d->sendToWatch(changeset);
113 }
114
115 changesets.clear();
116 }
117
118 public:
119
120 QList<T> changesets;
121 CoreDbBackendPrivate* const d = nullptr;
122 };
123
124public:
125
133
134public:
135
136 void transactionFinished() override
137 {
138 BdEngineBackendPrivate::transactionFinished();
139
140 imageChangesetContainer.sendOut();
141 imageTagChangesetContainer.sendOut();
142 collectionImageChangesetContainer.sendOut();
143 albumChangesetContainer.sendOut();
144 tagChangesetContainer.sendOut();
145 albumRootChangesetContainer.sendOut();
146 searchChangesetContainer.sendOut();
147 }
148};
149
150} // namespace Digikam
Definition coredbchangesets.h:252
Definition coredbchangesets.h:327
Definition dbenginebackend_p.h:63
Definition coredbchangesets.h:142
void recordChangeset(const T &changeset)
Definition coredbbackend_p.h:96
QList< T > changesets
Definition coredbbackend_p.h:120
ChangesetContainer(CoreDbBackendPrivate *const dd)
Definition coredbbackend_p.h:91
void sendOut()
Definition coredbbackend_p.h:108
Definition coredbbackend_p.h:29
void sendToWatch(const SearchChangeset &changeset)
Definition coredbbackend_p.h:80
ChangesetContainer< SearchChangeset > searchChangesetContainer
Definition coredbbackend_p.h:132
ChangesetContainer< AlbumRootChangeset > albumRootChangesetContainer
Definition coredbbackend_p.h:131
CoreDbBackendPrivate(CoreDbBackend *const backend)
Definition coredbbackend_p.h:32
ChangesetContainer< ImageChangeset > imageChangesetContainer
Definition coredbbackend_p.h:126
void sendToWatch(const AlbumChangeset &changeset)
Definition coredbbackend_p.h:65
ChangesetContainer< ImageTagChangeset > imageTagChangesetContainer
Definition coredbbackend_p.h:127
void sendToWatch(const AlbumRootChangeset &changeset)
Definition coredbbackend_p.h:75
ChangesetContainer< AlbumChangeset > albumChangesetContainer
Definition coredbbackend_p.h:129
ChangesetContainer< CollectionImageChangeset > collectionImageChangesetContainer
Definition coredbbackend_p.h:128
void sendToWatch(const ImageTagChangeset &changeset)
Definition coredbbackend_p.h:55
void sendToWatch(const CollectionImageChangeset &changeset)
Definition coredbbackend_p.h:60
void sendToWatch(const TagChangeset &changeset)
Definition coredbbackend_p.h:70
void transactionFinished() override
Definition coredbbackend_p.h:136
void sendToWatch(const ImageChangeset &changeset)
Definition coredbbackend_p.h:50
ChangesetContainer< TagChangeset > tagChangesetContainer
Definition coredbbackend_p.h:130
Definition coredbbackend.h:32
Definition coredbwatch.h:34
void sendSearchChange(const SearchChangeset &changeset)
Definition coredbwatch.cpp:354
void sendImageTagChange(const ImageTagChangeset &changeset)
Definition coredbwatch.cpp:294
void sendCollectionImageChange(const CollectionImageChangeset &changeset)
Definition coredbwatch.cpp:306
void sendAlbumChange(const AlbumChangeset &changeset)
Definition coredbwatch.cpp:318
void sendAlbumRootChange(const AlbumRootChangeset &changeset)
Definition coredbwatch.cpp:342
void sendImageChange(const ImageChangeset &changeset)
Definition coredbwatch.cpp:278
void sendTagChange(const TagChangeset &changeset)
Definition coredbwatch.cpp:330
Definition coredbchangesets.h:38
Definition coredbchangesets.h:70
Definition coredbchangesets.h:362
Definition coredbchangesets.h:288
#define T
Definition datefolderview.cpp:34