digiKam
Loading...
Searching...
No Matches
metadatawidget.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 : 2006-02-22
7 * Description : a generic widget to display metadata
8 *
9 * SPDX-FileCopyrightText: 2006-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 <QWidget>
20#include <QString>
21#include <QUrl>
22
23// Local includes
24
25#include "dmetadata.h"
26#include "digikam_export.h"
27
28namespace Digikam
29{
30
31class MetadataListView;
32
33class DIGIKAM_EXPORT MetadataWidget : public QWidget
34{
35 Q_OBJECT
36
37public:
38
40 {
41 NONE = 0,
43 CUSTOM
44 };
45
46public:
47
48 explicit MetadataWidget(QWidget* const parent, const QString& name = QString());
49 ~MetadataWidget() override;
50
51 int getMode() const;
52 void setMode(int mode);
53
54 QStringList getTagsFilter() const;
55 void setTagsFilter(const QStringList& list);
56
57 QString getCurrentItemKey() const;
58 void setCurrentItemByKey(const QString& itemKey);
59
60 void setUserAreaWidget(QWidget* const w);
61
62public:
63
64 virtual QString getTagTitle(const QString& key);
65 virtual QString getTagDescription(const QString& key);
66
67 virtual bool loadFromData(const QString& fileName,
68 const DMetadata& data = DMetadata());
69
70 virtual bool loadFromURL(const QUrl& url) = 0;
71
72Q_SIGNALS:
73
75
76protected Q_SLOTS:
77
78 virtual void slotSaveMetadataToFile() = 0;
79
80protected:
81
82 void enabledToolButtons(bool);
83 void setFileName(const QString& fileName);
84 MetadataListView* view() const;
85
86 bool setMetadata(const DMetadata& data = DMetadata());
87 DMetadata* getMetadata() const;
88
89 void setMetadataMap(const DMetadata::MetaDataMap& data = DMetadata::MetaDataMap());
90 const DMetadata::MetaDataMap& getMetadataMap();
91
92 void setIfdList(const DMetadata::MetaDataMap& ifds, const QStringList& tagsFilter = QStringList());
93 void setIfdList(const DMetadata::MetaDataMap& ifds, const QStringList& keysFilter,
94 const QStringList& tagsFilter);
95
96 QUrl saveMetadataToFile(const QString& caption, const QString& fileFilter);
97 bool storeMetadataToFile(const QUrl& url, const QByteArray& metaData);
98
102 void setup();
103
104 QString metadataToText() const;
105
106protected:
107
108 virtual void buildView();
109 virtual void setMetadataEmpty();
110
111 virtual bool decodeMetadata() = 0;
112 virtual QString getMetadataTitle() const = 0;
113
114private Q_SLOTS:
115
116 void slotCopy2Clipboard();
117 void slotPrintMetadata();
118 void slotFilterChanged(QAction*);
119
120private:
121
122 class Private;
123 Private* const d = nullptr;
124};
125
126} // namespace Digikam
Definition dmetadata.h:46
QMap< QString, QString > MetaDataMap
Definition metaengine.h:128
Definition metadatalistview.h:37
Definition metadatawidget.h:34
virtual void slotSaveMetadataToFile()=0
virtual QString getMetadataTitle() const =0
TagFilters
Definition metadatawidget.h:40
@ PHOTO
Definition metadatawidget.h:42
virtual bool decodeMetadata()=0
virtual bool loadFromURL(const QUrl &url)=0
Definition datefolderview.cpp:34