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 widget. 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_WIDGET_H 0016 #define DIGIKAM_EXIF_TOOL_WIDGET_H 0017 0018 // Qt includes 0019 0020 #include <QWidget> 0021 #include <QStackedWidget> 0022 #include <QString> 0023 #include <QUrl> 0024 #include <QAction> 0025 0026 // Local includes 0027 0028 #include "digikam_export.h" 0029 0030 namespace Digikam 0031 { 0032 0033 class DIGIKAM_EXPORT ExifToolWidget : public QStackedWidget 0034 { 0035 Q_OBJECT 0036 0037 public: 0038 0039 enum TagFilters 0040 { 0041 NONE = 0, 0042 PHOTO, 0043 CUSTOM 0044 }; 0045 0046 public: 0047 0048 explicit ExifToolWidget(QWidget* const parent); 0049 ~ExifToolWidget() override; 0050 0051 void loadFromUrl(const QUrl& url); 0052 0053 QString getCurrentItemKey() const; 0054 void setCurrentItemByKey(const QString& itemKey); 0055 0056 QStringList getTagsFilter() const; 0057 void setTagsFilter(const QStringList& list); 0058 0059 int getMode() const; 0060 void setMode(int mode); 0061 0062 Q_SIGNALS: 0063 0064 void signalSetupExifTool(); 0065 void signalSetupMetadataFilters(); 0066 0067 private Q_SLOTS: 0068 0069 void slotLoadingResult(bool ok); 0070 void slotPreLoadingTimerDone(); 0071 void slotCopy2Clipboard(); 0072 void slotPrintMetadata(); 0073 void slotSaveMetadataToFile(); 0074 void slotFilterChanged(QAction*); 0075 0076 private: 0077 0078 void setup(); 0079 QString metadataToText() const; 0080 void buildView(); 0081 0082 private: 0083 0084 class Private; 0085 Private* const d; 0086 }; 0087 0088 } // namespace Digikam 0089 0090 #endif // DIGIKAM_EXIF_TOOL_WIDGET_H