digiKam
Loading...
Searching...
No Matches
itemhistorygraphdata.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 : 2010-10-23
7 * Description : Graph data class for item history
8 *
9 * SPDX-FileCopyrightText: 2010-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QSharedData>
20
21// Local includes
22
23#include "filteraction.h"
24#include "historyimageid.h"
26
27namespace Digikam
28{
29
30class ItemInfo;
31
44class DIGIKAM_DATABASE_EXPORT HistoryVertexProperties
45{
46public:
47
48 ItemInfo firstItemInfo() const;
49
50 bool markedAs(HistoryImageId::Type) const;
51 bool alwaysMarkedAs(HistoryImageId::Type) const;
52
53 bool operator==(const QString& uuid) const;
54 bool operator==(const ItemInfo& info) const;
55 bool operator==(qlonglong id) const;
56 bool operator==(const HistoryImageId& info) const;
57
58 HistoryVertexProperties& operator+=(const QString& uuid);
59 HistoryVertexProperties& operator+=(const ItemInfo& info);
60 HistoryVertexProperties& operator+=(const HistoryImageId& info);
61
62public:
63
64 QString uuid;
65 QList<HistoryImageId> referredImages;
66 QList<ItemInfo> infos;
67};
68
69QDebug operator<<(QDebug dbg, const HistoryVertexProperties& props);
70QDebug operator<<(QDebug dbg, const HistoryImageId& id);
71
72// ------------------------------------------------------------------------------
73
81class DIGIKAM_DATABASE_EXPORT HistoryEdgeProperties
82{
83public:
84
85 QList<FilterAction> actions;
86
87 HistoryEdgeProperties& operator+=(const FilterAction& action);
88};
89
91
92// ------------------------------------------------------------------------------
93
94class DIGIKAM_DATABASE_EXPORT ItemHistoryGraphData : public HistoryGraph, // clazy:exclude=copyable-polymorphic
95 public QSharedData
96{
97public:
98
103
105 : HistoryGraph(g)
106 {
107 }
108
110 {
111 HistoryGraph::operator=(g);
112
113 return *this;
114 }
115
116 Vertex addVertex(const HistoryImageId& id);
117 Vertex addVertex(const QList<HistoryImageId>& imageIds);
118 Vertex addVertex(qlonglong id);
119 Vertex addVertexScanned(qlonglong id);
120 Vertex addVertex(const ItemInfo& info);
121
122 void addHistory(const DImageHistory& givenHistory, qlonglong extraCurrent = 0);
123
124 int removeNextUnresolvedVertex(int begin);
125
126 inline QList<ItemInfo> toInfoList(const QList<Vertex>& vertices) const
127 {
128 QList<ItemInfo> infos;
129
130 for (const HistoryGraph::Vertex& v : std::as_const(vertices))
131 {
132 infos << properties(v).infos;
133 }
134
135 return infos;
136 }
137
138 QHash<Vertex, HistoryImageId::Types> categorize() const;
139
140protected:
141
142 void applyProperties(Vertex& v, const QList<ItemInfo>& infos, const QList<HistoryImageId>& ids);
143};
144
145} // namespace Digikam
Definition dimagehistory.h:39
Definition filteraction.h:33
Definition itemhistorygraph_boost.h:176
Definition itemhistorygraph_boost.h:127
Definition itemhistorygraphdata.h:82
QList< FilterAction > actions
Definition itemhistorygraphdata.h:85
Definition historyimageid.h:32
Type
Definition historyimageid.h:36
Definition itemhistorygraphdata.h:45
QList< HistoryImageId > referredImages
Definition itemhistorygraphdata.h:65
QList< ItemInfo > infos
Definition itemhistorygraphdata.h:66
QString uuid
Definition itemhistorygraphdata.h:64
Definition itemhistorygraphdata.h:96
ItemHistoryGraphData & operator=(const HistoryGraph &g)
Definition itemhistorygraphdata.h:109
ItemHistoryGraphData(const HistoryGraph &g)
Definition itemhistorygraphdata.h:104
QList< ItemInfo > toInfoList(const QList< Vertex > &vertices) const
Definition itemhistorygraphdata.h:126
ItemHistoryGraphData()
Definition itemhistorygraphdata.h:99
Definition iteminfo.h:68
Definition datefolderview.cpp:34
QDebug operator<<(QDebug dbg, const DbEngineParameters &p)
Definition dbengineparameters.cpp:930
@ ChildToParent
Edges are direct from a child to its parent.
Definition itemhistorygraph_boost.h:119
bool operator==(const SearchTextSettings &a, const SearchTextSettings &b)
Definition searchtextbar.cpp:40
Graph< HistoryVertexProperties, HistoryEdgeProperties > HistoryGraph
Definition itemhistorygraphdata.h:90