digiKam
Loading...
Searching...
No Matches
metadataselector.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-07-16
7 * Description : metadata selector.
8 *
9 * SPDX-FileCopyrightText: 2009-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QTreeWidgetItem>
20#include <QTreeWidget>
21#include <QStringList>
22
23// Local includes
24
25#include "digikam_export.h"
26#include "searchtextbar.h"
27#include "dmetadata.h"
28
29namespace Digikam
30{
31
32class MdKeyListViewItem;
33class MetadataSelectorView;
34
35class DIGIKAM_EXPORT MetadataSelectorItem : public QTreeWidgetItem
36{
37public:
38
40 const QString& key,
41 const QString& title,
42 const QString& desc);
43 ~MetadataSelectorItem() override = default;
44
45 QString key() const;
46 QString mdKeyTitle() const;
47
48private:
49
50 QString m_key;
51 MdKeyListViewItem* m_parent = nullptr;
52
53private:
54
55 Q_DISABLE_COPY(MetadataSelectorItem)
56};
57
58// ------------------------------------------------------------------------------------
59
60class DIGIKAM_EXPORT MetadataSelector : public QTreeWidget
61{
62 Q_OBJECT
63
64public:
65
66 explicit MetadataSelector(MetadataSelectorView* const parent);
67 ~MetadataSelector() override = default;
68
69 void setTagsMap(const DMetadata::TagsMap& map);
70
71 void setcheckedTagsList(const QStringList& list);
72 QStringList checkedTagsList();
73
74 void clearSelection();
75 void selectAll() override;
76
77private:
78
79 MetadataSelectorView* m_parent = nullptr;
80};
81
82// ------------------------------------------------------------------------------------
83
84class DIGIKAM_EXPORT MetadataSelectorView : public QWidget
85{
86 Q_OBJECT
87
88public:
89
91 {
92 SelectAllBtn = 0x01,
93 ClearBtn = 0x02,
94 DefaultBtn = 0x04,
95 SearchBar = 0x08
96 };
97 Q_DECLARE_FLAGS(ControlElements, ControlElement)
98
100 {
101 Exiv2Backend = 0,
102 ExifToolBackend
103 };
104
105public:
106
107 explicit MetadataSelectorView(QWidget* const parent, Backend be);
108 ~MetadataSelectorView() override;
109
110 int itemsCount() const;
111
112 void setTagsMap(const DMetadata::TagsMap& map);
113
114 void setcheckedTagsList(const QStringList& list);
115
116 void setDefaultFilter(const QStringList& list);
117 QStringList defaultFilter() const;
118
119 QStringList checkedTagsList() const;
120
121 Backend backend() const;
122
123 void setControlElements(ControlElements controllerMask);
124
125 void clearSelection();
126 void selectAll();
127 void selectDefault();
128
129private Q_SLOTS:
130
131 void slotSearchTextChanged(const SearchTextSettings&);
132 void slotDeflautSelection();
133 void slotSelectAll();
134 void slotClearSelection();
135
136private:
137
138 void cleanUpMdKeyItem();
139
140private:
141
142 // Disable.
143 MetadataSelectorView() = delete;
144
145private:
146
147 class Private;
148 Private* const d = nullptr;
149};
150
151} // namespace Digikam
152
153Q_DECLARE_OPERATORS_FOR_FLAGS(Digikam::MetadataSelectorView::ControlElements)
Definition mdkeylistviewitem.h:34
QMap< QString, QStringList > TagsMap
Definition metaengine.h:143
Definition metadataselector.h:36
~MetadataSelectorItem() override=default
Definition metadataselector.h:85
ControlElement
Definition metadataselector.h:91
Backend
Definition metadataselector.h:100
Definition metadataselector.h:61
~MetadataSelector() override=default
Definition searchtextbar.h:33
Definition datefolderview.cpp:34