File indexing completed on 2025-04-27 03:58:37
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2006-10-15 0007 * Description : IPTC subjects editor. 0008 * 0009 * SPDX-FileCopyrightText: 2006-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0010 * SPDX-FileCopyrightText: 2009-2012 by Andi Clemens <andi dot clemens at googlemail dot com> 0011 * 0012 * SPDX-License-Identifier: GPL-2.0-or-later 0013 * 0014 * ============================================================ */ 0015 0016 #ifndef DIGIKAM_SUBJECT_WIDGET_H 0017 #define DIGIKAM_SUBJECT_WIDGET_H 0018 0019 // Qt includes 0020 0021 #include <QByteArray> 0022 #include <QMap> 0023 #include <QStringList> 0024 #include <QUrl> 0025 #include <QScrollArea> 0026 #include <QCheckBox> 0027 #include <QLabel> 0028 #include <QLineEdit> 0029 0030 // Local includes 0031 0032 #include "digikam_export.h" 0033 #include "dtextedit.h" 0034 0035 namespace Digikam 0036 { 0037 0038 class DIGIKAM_EXPORT SubjectData 0039 { 0040 public: 0041 0042 SubjectData(const QString& n, const QString& m, const QString& d) 0043 : name (n), 0044 matter(m), 0045 detail(d) 0046 { 0047 } 0048 0049 QString name; ///< English and Name of subject. 0050 QString matter; ///< English and Matter Name of subject. 0051 QString detail; ///< English and Detail Name of subject. 0052 }; 0053 0054 // -------------------------------------------------------------------------------- 0055 0056 class DIGIKAM_EXPORT SubjectWidget : public QScrollArea 0057 { 0058 Q_OBJECT 0059 0060 public: 0061 0062 explicit SubjectWidget(QWidget* const parent, bool sizesLimited = false); 0063 ~SubjectWidget() override; 0064 0065 void setSubjectsList(const QStringList& list); 0066 QStringList subjectsList() const; 0067 0068 Q_SIGNALS: 0069 0070 void signalModified(); 0071 0072 protected Q_SLOTS: 0073 0074 virtual void slotSubjectsToggled(bool); 0075 virtual void slotRefChanged(); 0076 virtual void slotEditOptionChanged(int); 0077 virtual void slotSubjectSelectionChanged(); 0078 virtual void slotAddSubject(); 0079 virtual void slotDelSubject(); 0080 virtual void slotRepSubject(); 0081 0082 protected: 0083 0084 virtual bool loadSubjectCodesFromXML(const QUrl& url); 0085 virtual QString buildSubject() const; 0086 0087 protected: 0088 0089 QLabel* m_note; 0090 0091 QCheckBox* m_subjectsCheck; 0092 0093 QLineEdit* m_iprEdit; 0094 QLineEdit* m_refEdit; 0095 DTextEdit* m_nameEdit; 0096 DTextEdit* m_matterEdit; 0097 DTextEdit* m_detailEdit; 0098 0099 QString m_iprDefault; 0100 0101 private: 0102 0103 class Private; 0104 Private* const d; 0105 }; 0106 0107 } // namespace Digikam 0108 0109 #endif // DIGIKAM_SUBJECT_WIDGET_H