digiKam
Loading...
Searching...
No Matches
iteminfocache.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-05-01
7 * Description : ItemInfo common data
8 *
9 * SPDX-FileCopyrightText: 2007-2013 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 * SPDX-FileCopyrightText: 2013-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// Qt includes
19
20#include <QHash>
21#include <QObject>
22#include <QMultiHash>
23#include <QExplicitlySharedDataPointer>
24
25// Local includes
26
27#include "coredbwatch.h"
28
29namespace Digikam
30{
31
32class AlbumShortInfo;
33class ItemInfoData;
34
35// NOTE: No need to EXPORT this class
36
37class ItemInfoCache : public QObject
38{
39 Q_OBJECT
40
41public:
42
44 ~ItemInfoCache() override = default;
45
51 QExplicitlySharedDataPointer<ItemInfoData> infoForId(qlonglong id);
52
57 void dropInfo(const QExplicitlySharedDataPointer<ItemInfoData>& infoPtr);
58
64 void cacheByName(const QExplicitlySharedDataPointer<ItemInfoData>& infoPtr);
65
71 QExplicitlySharedDataPointer<ItemInfoData> infoForPath(int albumRootId,
72 const QString& relativePath,
73 const QString& name);
74
78 QString albumRelativePath(int albumId);
79
83 int getImageGroupedCount(qlonglong id);
84
88 void invalidate();
89
90private Q_SLOTS:
91
92 void slotImageChanged(const ImageChangeset& changeset);
93 void slotImageTagChanged(const ImageTagChangeset& changeset);
94 void slotAlbumChange(const AlbumChangeset&);
95
96private:
97
98 // Disable
99 explicit ItemInfoCache(QObject*) = delete;
100
101 QList<AlbumShortInfo>::const_iterator findAlbum(int id);
102 void checkAlbums();
103
104private:
105
106 QMultiHash<QString, QExplicitlySharedDataPointer<ItemInfoData> > m_nameHash;
107 QHash<qlonglong, QExplicitlySharedDataPointer<ItemInfoData> > m_infoHash;
108 QHash<qlonglong, QString> m_dataHash;
109 volatile bool m_needUpdateAlbums = true;
110 volatile bool m_needUpdateGrouped = true;
111 QList<qlonglong> m_grouped;
112 QList<AlbumShortInfo> m_albums;
113};
114
115} // namespace Digikam
Definition coredbchangesets.h:252
Definition coredbchangesets.h:38
Definition coredbchangesets.h:70
Definition iteminfocache.h:38
ItemInfoCache()
Definition iteminfocache.cpp:31
QExplicitlySharedDataPointer< ItemInfoData > infoForPath(int albumRootId, const QString &relativePath, const QString &name)
Definition iteminfocache.cpp:123
int getImageGroupedCount(qlonglong id)
Definition iteminfocache.cpp:71
QString albumRelativePath(int albumId)
Definition iteminfocache.cpp:203
~ItemInfoCache() override=default
void dropInfo(const QExplicitlySharedDataPointer< ItemInfoData > &infoPtr)
Definition iteminfocache.cpp:158
void cacheByName(const QExplicitlySharedDataPointer< ItemInfoData > &infoPtr)
Definition iteminfocache.cpp:107
void invalidate()
Definition iteminfocache.cpp:217
QExplicitlySharedDataPointer< ItemInfoData > infoForId(qlonglong id)
Definition iteminfocache.cpp:87
Definition datefolderview.cpp:34