1 /*
2  * SPDX-FileCopyrightText: 2012 Peter Penz <peter.penz19@gmail.com>
3  *
4  * SPDX-License-Identifier: GPL-2.0-or-later
5  */
6 
7 #ifndef KSTANDARDITEM_H
8 #define KSTANDARDITEM_H
9 
10 #include "dolphin_export.h"
11 
12 #include <QByteArray>
13 #include <QHash>
14 #include <QObject>
15 #include <QSet>
16 #include <QVariant>
17 
18 class KStandardItemModel;
19 
20 /**
21  * @brief Represents and item of KStandardItemModel.
22  *
23  * Provides setter- and getter-methods for the most commonly
24  * used roles. It is possible to assign values for custom
25  * roles by using setDataValue().
26  */
27 class DOLPHIN_EXPORT KStandardItem : public QObject
28 {
29     Q_OBJECT
30 public:
31     explicit KStandardItem(KStandardItem* parent = nullptr);
32     explicit KStandardItem(const QString& text, KStandardItem* parent = nullptr);
33     KStandardItem(const QString& icon, const QString& text, KStandardItem* parent = nullptr);
34     ~KStandardItem() override;
35 
36     /**
37      * Sets the text for the "text"-role.
38      */
39     void setText(const QString& text);
40     QString text() const;
41 
42     /**
43      * Sets the icon for the "iconName"-role.
44      */
45     void setIcon(const QString& icon);
46     QString icon() const;
47 
48     void setIconOverlays(const QStringList& overlays);
49     QStringList iconOverlays() const;
50 
51     /**
52      * Sets the group for the "group"-role.
53      */
54     void setGroup(const QString& group);
55     QString group() const;
56 
57     void setDataValue(const QByteArray& role, const QVariant& value);
58     QVariant dataValue(const QByteArray& role) const;
59 
60     void setData(const QHash<QByteArray, QVariant>& values);
61     QHash<QByteArray, QVariant> data() const;
62 
63 protected:
64     virtual void onDataValueChanged(const QByteArray& role,
65                                     const QVariant& current,
66                                     const QVariant& previous);
67 
68     virtual void onDataChanged(const QHash<QByteArray, QVariant>& current,
69                                const QHash<QByteArray, QVariant>& previous);
70 
71 private:
72     KStandardItemModel* m_model;
73 
74     QHash<QByteArray, QVariant> m_data;
75 
76     friend class KStandardItemModel;
77 };
78 
79 #endif
80 
81 
82