File indexing completed on 2025-03-09 03:58:51
0001 /* ============================================================ 0002 * 0003 * This file is a part of digiKam project 0004 * https://www.digikam.org 0005 * 0006 * Date : 2008-11-27 0007 * Description : batch tools list assigned to an queued item. 0008 * 0009 * SPDX-FileCopyrightText: 2008-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_BQM_ASSIGNED_LIST_H 0016 #define DIGIKAM_BQM_ASSIGNED_LIST_H 0017 0018 // Qt includes 0019 0020 #include <QTreeWidget> 0021 #include <QWidget> 0022 #include <QIcon> 0023 0024 // Local includes 0025 0026 #include "batchtool.h" 0027 #include "batchtoolutils.h" 0028 0029 namespace Digikam 0030 { 0031 0032 class QueueSettings; 0033 0034 class AssignedListViewItem : public QTreeWidgetItem 0035 { 0036 0037 public: 0038 0039 explicit AssignedListViewItem(QTreeWidget* const parent); 0040 AssignedListViewItem(QTreeWidget* const parent, QTreeWidgetItem* const preceding); 0041 ~AssignedListViewItem() override; 0042 0043 void setIndex(int index); 0044 0045 void setToolSet(const BatchToolSet& set); 0046 BatchToolSet toolSet(); 0047 0048 private: 0049 0050 BatchToolSet m_set; 0051 0052 private: 0053 0054 Q_DISABLE_COPY(AssignedListViewItem) 0055 }; 0056 0057 // ------------------------------------------------------------------------- 0058 0059 class AssignedListView : public QTreeWidget 0060 { 0061 Q_OBJECT 0062 0063 public: 0064 0065 explicit AssignedListView(QWidget* const parent); 0066 ~AssignedListView() override; 0067 0068 int assignedCount(); 0069 AssignedBatchTools assignedList(); 0070 0071 AssignedListViewItem* insertTool(AssignedListViewItem* const preceding, const BatchToolSet& set); 0072 AssignedListViewItem* moveTool(AssignedListViewItem* const preceding, const BatchToolSet& set); 0073 AssignedListViewItem* addTool(const BatchToolSet& set); 0074 0075 bool removeTool(const BatchToolSet& set); 0076 0077 void setBusy(bool b); 0078 0079 Q_SIGNALS: 0080 0081 void signalToolSelected(const BatchToolSet&); 0082 void signalAssignedToolsChanged(const AssignedBatchTools&); 0083 0084 public Q_SLOTS: 0085 0086 void slotMoveCurrentToolUp(); 0087 void slotMoveCurrentToolDown(); 0088 void slotRemoveCurrentTool(); 0089 void slotClearToolsList(); 0090 void slotQueueSelected(int, const QueueSettings&, const AssignedBatchTools&); 0091 void slotSettingsChanged(const BatchToolSet&); 0092 void slotAssignTools(const QMultiMap<int, QString>&); 0093 0094 protected: 0095 0096 void keyPressEvent(QKeyEvent*) override; 0097 0098 private Q_SLOTS: 0099 0100 void slotSelectionChanged(); 0101 void slotContextMenu(); 0102 0103 private: 0104 0105 AssignedListViewItem* findTool(const BatchToolSet& set); 0106 void assignTools(const QMultiMap<int, QString>& map, AssignedListViewItem* const preceding); 0107 void refreshIndex(); 0108 0109 Qt::DropActions supportedDropActions() const override; 0110 QStringList mimeTypes() const override; 0111 0112 #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) 0113 0114 QMimeData* mimeData(const QList<QTreeWidgetItem*>& items) const override; 0115 0116 #else 0117 0118 // cppcheck-suppress passedByValue 0119 QMimeData* mimeData(const QList<QTreeWidgetItem*> items) const override; // clazy:exclude=function-args-by-ref 0120 0121 #endif 0122 0123 void dragEnterEvent(QDragEnterEvent*) override; 0124 void dragMoveEvent(QDragMoveEvent*) override; 0125 void dropEvent(QDropEvent*) override; 0126 }; 0127 0128 } // namespace Digikam 0129 0130 #endif // DIGIKAM_BQM_ASSIGNED_LIST_H