File indexing completed on 2024-04-28 15:39:55
0001 // SPDX-FileCopyrightText: 2004-2010 Jesper K. Pedersen <jesper.pedersen@kdab.com> 0002 // SPDX-FileCopyrightText: 2006 Tuomas Suutari <tuomas@nepnep.net> 0003 // SPDX-FileCopyrightText: 2007 Dirk Mueller <mueller@kde.org> 0004 // SPDX-FileCopyrightText: 2012 Miika Turkia <miika.turkia@gmail.com> 0005 // SPDX-FileCopyrightText: 2013-2023 Johannes Zarl-Zierl <johannes@zarl-zierl.at> 0006 // SPDX-FileCopyrightText: 2015-2022 Tobias Leupold <tl@stonemx.de> 0007 // 0008 // SPDX-License-Identifier: GPL-2.0-or-later 0009 0010 #ifndef CATEGORYCOLLECTION_H 0011 #define CATEGORYCOLLECTION_H 0012 0013 #include "Category.h" 0014 #include "CategoryPtr.h" 0015 #include "GlobalCategorySortOrder.h" 0016 #include <QList> 0017 #include <memory> 0018 0019 namespace DB 0020 { 0021 0022 /** 0023 \class CategoryCollection 0024 This class is the collection of categories. It is the basic anchor point to categories. 0025 */ 0026 0027 class CategoryCollection : public QObject 0028 { 0029 Q_OBJECT 0030 0031 public: 0032 ~CategoryCollection(); 0033 0034 enum class IncludeSpecialCategories { 0035 Yes, 0036 No 0037 }; 0038 CategoryPtr categoryForName(const QString &name) const; 0039 QStringList categoryNames(IncludeSpecialCategories include = IncludeSpecialCategories::Yes) const; 0040 QList<CategoryPtr> categories() const; 0041 CategoryPtr categoryForSpecial(const Category::CategoryType type) const; 0042 0043 void addCategory(DB::CategoryPtr); 0044 void addCategory(const QString &text, const QString &icon, Category::ViewType type, 0045 int thumbnailSize, bool show, bool positionable = false); 0046 void removeCategory(const QString &name); 0047 void rename(const QString &oldName, const QString &newName); 0048 GlobalCategorySortOrder *globalSortOrder(); 0049 0050 // FIXME(jzarl): this should be private and FileWriter should be a friend class 0051 void initIdMap(); 0052 0053 Q_SIGNALS: 0054 void categoryCollectionChanged(); 0055 void categoryRemoved(const QString &categoryName); 0056 void itemRenamed(DB::Category *category, const QString &oldName, const QString &newName); 0057 void itemRemoved(DB::Category *category, const QString &name); 0058 0059 protected Q_SLOTS: 0060 void slotItemRenamed(const QString &oldName, const QString &newName); 0061 void slotItemRemoved(const QString &item); 0062 0063 private: 0064 friend class ImageDB; 0065 CategoryCollection(); 0066 0067 QList<DB::CategoryPtr> m_categories; 0068 QMap<DB::Category::CategoryType, DB::CategoryPtr> m_specialCategories; 0069 std::unique_ptr<GlobalCategorySortOrder> m_globalSortOrder; 0070 }; 0071 0072 } 0073 0074 #endif /* CATEGORYCOLLECTION_H */ 0075 0076 // vi:expandtab:tabstop=4 shiftwidth=4: