File indexing completed on 2025-04-27 03:58:34

0001 /* ============================================================
0002  *
0003  * This file is a part of digiKam project
0004  * https://www.digikam.org
0005  *
0006  * Date        : 2021-04-18
0007  * Description : ExifTool metadata list view.
0008  *
0009  * SPDX-FileCopyrightText: 2021-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0010  *
0011  * SPDX-License-Identifier: GPL-2.0-or-later
0012  *
0013  * ============================================================ */
0014 
0015 #ifndef DIGIKAM_EXIF_TOOL_LIST_VIEW_H
0016 #define DIGIKAM_EXIF_TOOL_LIST_VIEW_H
0017 
0018 // Qt includes
0019 
0020 #include <QTreeWidget>
0021 #include <QWidget>
0022 #include <QString>
0023 #include <QStringList>
0024 #include <QUrl>
0025 
0026 // Local includes
0027 
0028 #include "exiftoolparser.h"
0029 #include "searchtextbar.h"
0030 
0031 namespace Digikam
0032 {
0033 
0034 class ExifToolListViewGroup;
0035 
0036 class ExifToolListView : public QTreeWidget
0037 {
0038     Q_OBJECT
0039 
0040 public:
0041 
0042     explicit ExifToolListView(QWidget* const parent);
0043     ~ExifToolListView() override;
0044 
0045     void loadFromUrl(const QUrl& url);
0046     QString errorString() const;
0047 
0048     QString getCurrentItemKey() const;
0049     void    setCurrentItemByKey(const QString& itemKey);
0050 
0051     void setGroupList(const QStringList& tagsFilter,
0052                       const QStringList& keysFilter = QStringList());
0053 
0054 Q_SIGNALS:
0055 
0056     void signalTextFilterMatch(bool);
0057     void signalLoadingResult(bool ok);
0058 
0059 public Q_SLOTS:
0060 
0061     void slotSearchTextChanged(const SearchTextSettings&);
0062 
0063 private Q_SLOTS:
0064 
0065     void slotExifToolAsyncData(const ExifToolParser::ExifToolData& map);
0066     void slotSelectionChanged(QTreeWidgetItem*, int);
0067 
0068 private:
0069 
0070     ExifToolListViewGroup* findGroup(const QString& group);
0071 
0072 private:
0073 
0074     class Private;
0075     Private* const d;
0076 };
0077 
0078 } // namespace Digikam
0079 
0080 #endif // DIGIKAM_EXIF_TOOL_LIST_VIEW_H