File indexing completed on 2025-04-27 03:57:27

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 - private container
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  * SPDX-FileCopyrightText: 2009-2011 by Andi Clemens <andi dot clemens at gmail dot com>
0013  * SPDX-FileCopyrightText: 2009-2011 by Johannes Wienke <languitar at semipol dot de>
0014  * SPDX-FileCopyrightText: 2015      by Veaceslav Munteanu <veaceslav dot munteanu90 at gmail dot com>
0015  *
0016  * SPDX-License-Identifier: GPL-2.0-or-later
0017  *
0018  * ============================================================ */
0019 
0020 #ifndef DIGIKAM_ITEM_DESC_EDIT_TAB_P_H
0021 #define DIGIKAM_ITEM_DESC_EDIT_TAB_P_H
0022 
0023 #include "itemdescedittab.h"
0024 
0025 // Qt includes
0026 
0027 #include <QStyle>
0028 #include <QGridLayout>
0029 #include <QScrollArea>
0030 #include <QTimer>
0031 #include <QToolButton>
0032 #include <QApplication>
0033 #include <QPushButton>
0034 #include <QMenu>
0035 #include <QIcon>
0036 #include <QCheckBox>
0037 #include <QMessageBox>
0038 #include <QPointer>
0039 
0040 // KDE includes
0041 
0042 #include <kconfiggroup.h>
0043 #include <klocalizedstring.h>
0044 
0045 // Local includes
0046 
0047 #include "digikam_debug.h"
0048 #include "addtagslineedit.h"
0049 #include "applicationsettings.h"
0050 #include "albumthumbnailloader.h"
0051 #include "captionedit.h"
0052 #include "collectionscanner.h"
0053 #include "coredbtransaction.h"
0054 #include "dnotificationwrapper.h"
0055 #include "ddatetimeedit.h"
0056 #include "digikamapp.h"
0057 #include "fileactionmngr.h"
0058 #include "ratingwidget.h"
0059 #include "scancontroller.h"
0060 #include "tagcheckview.h"
0061 #include "templateselector.h"
0062 #include "templateviewer.h"
0063 #include "itemattributeswatch.h"
0064 #include "statusprogressbar.h"
0065 #include "tagmodificationhelper.h"
0066 #include "template.h"
0067 #include "iteminfolist.h"
0068 #include "iteminfo.h"
0069 #include "colorlabelwidget.h"
0070 #include "picklabelwidget.h"
0071 #include "fileactionprogress.h"
0072 #include "tagsmanager.h"
0073 #include "tagtreeview.h"
0074 #include "searchtextbardb.h"
0075 #include "disjointmetadata.h"
0076 #include "altlangstredit.h"
0077 #include "albummodel.h"
0078 #include "metadatahub.h"
0079 
0080 namespace Digikam
0081 {
0082 
0083 class Q_DECL_HIDDEN ItemDescEditTab::Private
0084 {
0085 
0086 public:
0087 
0088     explicit Private(ItemDescEditTab* const tab);
0089 
0090 public:
0091 
0092     bool                 modified;
0093     bool                 ignoreItemAttributesWatch;
0094 
0095     QToolButton*         revertBtn;
0096 
0097     QMenu*               moreMenu;
0098 
0099     QPushButton*         applyBtn;
0100     QPushButton*         moreButton;
0101     QPushButton*         applyToAllVersionsButton;
0102 
0103     QWidget*             lastSelectedWidget;
0104 
0105     AltLangStrEdit*      titleEdit;
0106 
0107     CaptionEdit*         captionsEdit;
0108 
0109     DDateTimeEdit*       dateTimeEdit;
0110 
0111     QTabWidget*          tabWidget;
0112 
0113     ItemInfoList         currInfos;
0114 
0115     TemplateSelector*    templateSelector;
0116     TemplateViewer*      templateViewer;
0117 
0118     RatingWidget*        ratingWidget;
0119     ColorLabelSelector*  colorLabelSelector;
0120     PickLabelSelector*   pickLabelSelector;
0121 
0122     DisjointMetadata*    hub;
0123 
0124     QTimer*              metadataChangeTimer;
0125     QList<int>           metadataChangeIds;
0126 
0127     int                  spacing;
0128 
0129     // ---
0130 
0131     bool                 togglingTagsSearchSettings;
0132     bool                 ignoreTagChanges;
0133     QToolButton*         recentTagsBtn;
0134     QToolButton*         assignedTagsBtn;
0135     QPushButton*         openTagMngr;
0136     SearchTextBarDb*     tagsSearchBar;
0137     AddTagsLineEdit*     newTagEdit;
0138     TagCheckView*        tagCheckView;
0139     TagModel*            tagModel;
0140 
0141 public:
0142 
0143     void setupConnections();
0144     void setupEventFilters();
0145     void initProgressIndicator();
0146 
0147     void reset();
0148     void resetMetadataChangeInfo();
0149 
0150     void setInfos(const ItemInfoList& infos);
0151     void setFocusToLastSelectedWidget();
0152     void setMetadataWidgetStatus(int status, QWidget* const widget);
0153     void metadataChange(qlonglong imageId);
0154     bool singleSelection() const;
0155 
0156 private:
0157 
0158     ItemDescEditTab* q = nullptr;
0159 };
0160 
0161 } // namespace Digikam
0162 
0163 #endif // DIGIKAM_ITEM_DESC_EDIT_TAB_P_H