File indexing completed on 2024-04-28 04:21:20
0001 // SPDX-FileCopyrightText: 2003-2022 The KPhotoAlbum Development Team 0002 // 0003 // SPDX-License-Identifier: GPL-2.0-or-later 0004 0005 #ifndef TAGGROUPSPAGE_H 0006 #define TAGGROUPSPAGE_H 0007 0008 // Qt includes 0009 #include <QWidget> 0010 0011 // Local includes 0012 #include <DB/ImageDB.h> 0013 #include <DB/MemberMap.h> 0014 0015 // Qt classes 0016 class QListWidget; 0017 class QTreeWidget; 0018 class QTreeWidgetItem; 0019 class QLabel; 0020 class QListWidgetItem; 0021 0022 namespace Settings 0023 { 0024 0025 // Local classes 0026 class CategoriesGroupsWidget; 0027 0028 enum CategoryEdit { 0029 Category, 0030 Add, 0031 Remove, 0032 Rename, 0033 NewName 0034 }; 0035 0036 class TagGroupsPage : public QWidget 0037 { 0038 Q_OBJECT 0039 0040 public: 0041 explicit TagGroupsPage(QWidget *parent); 0042 void saveSettings(); 0043 void loadSettings(); 0044 DB::MemberMap *memberMap(); 0045 QString getCategory(QTreeWidgetItem *currentItem); 0046 void processDrop(QTreeWidgetItem *draggedItem, QTreeWidgetItem *targetItem); 0047 0048 public Q_SLOTS: 0049 void categoryChangesPending(); 0050 void slotPageChange(); 0051 void discardChanges(); 0052 0053 private Q_SLOTS: 0054 void slotAddGroup(); 0055 void slotDeleteGroup(); 0056 void slotRenameGroup(); 0057 void showTreeContextMenu(QPoint point); 0058 void showMembersContextMenu(QPoint point); 0059 void slotGroupSelected(QTreeWidgetItem *item); 0060 void checkItemSelection(QListWidgetItem *); 0061 void slotRenameMember(); 0062 void slotDeleteMember(); 0063 0064 private: // Functions 0065 void categoryChanged(const QString &name); 0066 void saveOldGroup(); 0067 void selectMembers(const QString &group); 0068 void renameAllSubCategories(QTreeWidgetItem *categoryItem, QString oldName, QString newName); 0069 void updateCategoryTree(); 0070 void addSubCategories(QTreeWidgetItem *superCategory, 0071 const QMap<QString, QStringList> &membersForGroup, 0072 const QStringList &allGroups); 0073 void addNewSubItem(QString &name, QTreeWidgetItem *parentItem); 0074 QTreeWidgetItem *findCategoryItem(QString category); 0075 DB::CategoryPtr getCategoryObject(QString category) const; 0076 0077 private: // Variables 0078 DB::MemberMap m_memberMap; 0079 QListWidget *m_membersListWidget; 0080 CategoriesGroupsWidget *m_categoryTreeWidget; 0081 QString m_currentCategory; 0082 QString m_currentGroup; 0083 QString m_currentSubCategory; 0084 QString m_currentSuperCategory; 0085 QString m_selectGroupToAddTags; 0086 QAction *m_newGroupAction; 0087 QAction *m_renameAction; 0088 QAction *m_deleteAction; 0089 QAction *m_deleteMemberAction; 0090 QAction *m_renameMemberAction; 0091 QLabel *m_tagsInGroupLabel; 0092 bool m_dataChanged; 0093 QList<QMap<CategoryEdit, QString>> m_categoryChanges; 0094 QLabel *m_pendingChangesLabel; 0095 }; 0096 0097 } 0098 0099 #endif // TAGGROUPSPAGE_H 0100 0101 // vi:expandtab:tabstop=4 shiftwidth=4: