1 /* SPDX-FileCopyrightText: 2003-2020 The KPhotoAlbum Development Team
2 
3    SPDX-License-Identifier: GPL-2.0-or-later
4 */
5 #ifndef CATEGORYCOLLECTION_H
6 #define CATEGORYCOLLECTION_H
7 
8 #include "Category.h"
9 #include "CategoryPtr.h"
10 
11 #include <QList>
12 
13 namespace DB
14 {
15 
16 /**
17    \class CategoryCollection
18    This class is the collection of categories. It is the basic anchor point to categories.
19 */
20 
21 class CategoryCollection : public QObject
22 {
23     Q_OBJECT
24 
25 public:
26     enum class IncludeSpecialCategories {
27         Yes,
28         No
29     };
30     virtual CategoryPtr categoryForName(const QString &name) const = 0;
31     virtual QStringList categoryNames(IncludeSpecialCategories include = IncludeSpecialCategories::Yes) const = 0;
32     virtual void removeCategory(const QString &name) = 0;
33     virtual void rename(const QString &oldName, const QString &newName) = 0;
34     virtual QList<CategoryPtr> categories() const = 0;
35     virtual void addCategory(const QString &text, const QString &icon, Category::ViewType type,
36                              int thumbnailSize, bool show, bool positionable = false)
37         = 0;
38     virtual CategoryPtr categoryForSpecial(const Category::CategoryType type) const = 0;
39 
40 signals:
41     void categoryCollectionChanged();
42     void categoryRemoved(const QString &categoryName);
43     void itemRenamed(DB::Category *category, const QString &oldName, const QString &newName);
44     void itemRemoved(DB::Category *category, const QString &name);
45 
46 protected slots:
47     void slotItemRenamed(const QString &oldName, const QString &newName);
48     void slotItemRemoved(const QString &item);
49 };
50 
51 }
52 
53 #endif /* CATEGORYCOLLECTION_H */
54 
55 // vi:expandtab:tabstop=4 shiftwidth=4:
56