File indexing completed on 2025-04-27 03:57:26
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2003-03-09 0007 * Description : Captions, Tags, and Rating properties editor 0008 * 0009 * SPDX-FileCopyrightText: 2003-2005 by Renchi Raju <renchi dot raju at gmail dot com> 0010 * SPDX-FileCopyrightText: 2003-2024 by Gilles Caulier <caulier dot gilles at gmail dot com> 0011 * SPDX-FileCopyrightText: 2006-2011 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de> 0012 * 0013 * SPDX-License-Identifier: GPL-2.0-or-later 0014 * 0015 * ============================================================ */ 0016 0017 #ifndef DIGIKAM_ITEM_DESC_EDIT_TAB_H 0018 #define DIGIKAM_ITEM_DESC_EDIT_TAB_H 0019 0020 // Qt includes 0021 0022 #include <QScrollArea> 0023 #include <QPixmap> 0024 #include <QEvent> 0025 0026 // Local includes 0027 0028 #include "dlayoutbox.h" 0029 #include "digikam_export.h" 0030 #include "iteminfolist.h" 0031 #include "albummanager.h" 0032 #include "searchtextbar.h" 0033 #include "disjointmetadata.h" 0034 0035 class KConfigGroup; 0036 0037 namespace Digikam 0038 { 0039 0040 class ItemInfo; 0041 class TaggingAction; 0042 class DisjointMetadata; 0043 class AddTagsLineEdit; 0044 0045 class ItemDescEditTab : public DVBox 0046 { 0047 Q_OBJECT 0048 0049 public: 0050 0051 enum DescEditTab 0052 { 0053 DESCRIPTIONS = 0, 0054 TAGS, 0055 INFOS 0056 }; 0057 0058 public: 0059 0060 explicit ItemDescEditTab(QWidget* const parent); 0061 ~ItemDescEditTab() override; 0062 0063 void setItem(const ItemInfo& info = ItemInfo()); 0064 void setItems(const ItemInfoList& infos); 0065 0066 void readSettings(KConfigGroup& group); 0067 void writeSettings(KConfigGroup& group); 0068 0069 bool isModified() const; 0070 0071 void setCurrentTab(int); 0072 int currentTab() const; 0073 0074 Q_SIGNALS: 0075 0076 void signalProgressMessageChanged(const QString& actionDescription); 0077 void signalProgressValueChanged(float percent); 0078 void signalProgressFinished(); 0079 0080 void signalPrevItem(); 0081 void signalNextItem(); 0082 0083 void signalAskToApplyChanges(const QList<ItemInfo>& infos, DisjointMetadata* hub); 0084 0085 protected: 0086 0087 bool eventFilter(QObject* o, QEvent* e) override; 0088 0089 private Q_SLOTS: 0090 0091 void slotApplyAllChanges(); 0092 void slotApplyChangesToAllVersions(); 0093 void slotRevertAllChanges(); 0094 void slotChangingItems(); 0095 void slotModified(); 0096 void slotReloadForMetadataChange(); 0097 0098 void slotImagesChanged(int albumId); 0099 0100 void slotMoreMenu(); 0101 void slotReadFromFileMetadataToDatabase(); 0102 void slotWriteToFileMetadataFromDatabase(); 0103 0104 void slotAskToApplyChanges(const QList<ItemInfo>& infos, DisjointMetadata* hub); 0105 0106 ///@{ 0107 /// Description view methods (itemdescedittab_descview.cpp) 0108 0109 public: 0110 0111 void assignColorLabel(int colorId); 0112 void assignPickLabel(int pickId); 0113 void assignRating(int rating); 0114 void setFocusToTitlesEdit(); 0115 void setFocusToCommentsEdit(); 0116 0117 void replaceColorLabel(int colorId); 0118 void replacePickLabel(int pickId); 0119 void replaceRating(int rating); 0120 0121 private: 0122 0123 void initDescriptionView(); 0124 void updateComments(); 0125 void updatePickLabel(); 0126 void updateColorLabel(); 0127 void updateRating(); 0128 void updateDate(); 0129 0130 void resetTitleEditPlaceholderText(); 0131 void resetCaptionEditPlaceholderText(); 0132 0133 private Q_SLOTS: 0134 0135 void slotCommentChanged(); 0136 void slotTitleChanged(); 0137 void slotDateTimeChanged(const QDateTime& dateTime); 0138 void slotPickLabelChanged(int pickId); 0139 void slotColorLabelChanged(int colorId); 0140 void slotRatingChanged(int rating); 0141 0142 void slotImageRatingChanged(qlonglong imageId); 0143 void slotImageDateChanged(qlonglong imageId); 0144 void slotImageCaptionChanged(qlonglong imageId); 0145 0146 ///@} 0147 0148 ///@{ 0149 /// Tags view methods (itemdescedittab_tagsview.cpp) 0150 0151 public: 0152 0153 void populateTags(); 0154 void setFocusToTagsView(); 0155 void setFocusToNewTagEdit(); 0156 void activateAssignedTagsButton(); 0157 0158 AddTagsLineEdit* getNewTagEdit() const; 0159 0160 Q_SIGNALS: 0161 0162 void signalTagFilterMatch(bool); 0163 0164 private: 0165 0166 void initTagsView(); 0167 void setTagState(TAlbum* const tag, DisjointMetadataDataFields::Status status); 0168 void updateTagsView(); 0169 void updateRecentTags(); 0170 0171 private Q_SLOTS: 0172 0173 void slotTagsSearchChanged(const SearchTextSettings& settings); 0174 void slotTagStateChanged(Album* album, Qt::CheckState checkState); 0175 void slotTaggingActionActivated(const TaggingAction&); 0176 void slotImageTagsChanged(qlonglong imageId); 0177 void slotOpenTagsManager(); 0178 0179 void slotRecentTagsMenuActivated(int); 0180 void slotAssignedTagsToggled(bool); 0181 void slotUnifyPartiallyTags(); 0182 0183 ///@} 0184 0185 ///@{ 0186 /// Information view methods (itemdescedittab_infoview.cpp) 0187 0188 private: 0189 0190 void initInformationView(); 0191 void updateTemplate(); 0192 0193 private Q_SLOTS: 0194 0195 void slotTemplateSelected(); 0196 0197 ///@} 0198 0199 ///@{ 0200 /// Private container (itemdescedittab_p.cpp) 0201 0202 private: 0203 0204 class Private; 0205 Private* const d; 0206 0207 friend class Private; 0208 0209 ///@} 0210 }; 0211 0212 } // namespace Digikam 0213 0214 #endif // DIGIKAM_ITEM_DESC_EDIT_TAB_H