***************************************************************************/
#include "kstandarditem.h"
+#include "kstandarditemmodel.h"
KStandardItem::KStandardItem(KStandardItem* parent) :
- m_text(),
- m_icon(),
- m_group(),
- m_parent(parent),
- m_children(),
- m_model(0)
+ QObject(parent),
+ m_model(nullptr),
+ m_data()
{
}
KStandardItem::KStandardItem(const QString& text, KStandardItem* parent) :
- m_text(text),
- m_icon(),
- m_group(),
- m_parent(parent),
- m_children(),
- m_model(0)
+ QObject(parent),
+ m_model(nullptr),
+ m_data()
{
+ setText(text);
}
-KStandardItem::KStandardItem(const QIcon& icon, const QString& text, KStandardItem* parent) :
- m_text(text),
- m_icon(icon),
- m_group(),
- m_parent(parent),
- m_children(),
- m_model(0)
+KStandardItem::KStandardItem(const QString& icon, const QString& text, KStandardItem* parent) :
+ QObject(parent),
+ m_model(nullptr),
+ m_data()
{
+ setIcon(icon);
+ setText(text);
}
KStandardItem::~KStandardItem()
void KStandardItem::setText(const QString& text)
{
- m_text = text;
+ setDataValue("text", text);
}
QString KStandardItem::text() const
{
- return m_text;
+ return m_data["text"].toString();
}
-void KStandardItem::setIcon(const QIcon& icon)
+void KStandardItem::setIcon(const QString& icon)
{
- m_icon = icon;
+ setDataValue("iconName", icon);
}
-QIcon KStandardItem::icon() const
+QString KStandardItem::icon() const
{
- return m_icon;
+ return m_data["iconName"].toString();
+}
+
+void KStandardItem::setIconOverlays(const QStringList& overlays)
+{
+ setDataValue("iconOverlays", overlays);
+}
+
+QStringList KStandardItem::iconOverlays() const
+{
+ return m_data["iconOverlays"].toStringList();
}
void KStandardItem::setGroup(const QString& group)
{
- m_group = group;
+ setDataValue("group", group);
}
QString KStandardItem::group() const
{
- return m_group;
+ return m_data["group"].toString();
+}
+
+void KStandardItem::setDataValue(const QByteArray& role, const QVariant& value)
+{
+ const QVariant previous = m_data.value(role);
+ if (previous == value) {
+ return;
+ }
+
+ m_data.insert(role, value);
+ onDataValueChanged(role, value, previous);
+
+ if (m_model) {
+ const int index = m_model->index(this);
+ QSet<QByteArray> changedRoles;
+ changedRoles.insert(role);
+ m_model->onItemChanged(index, changedRoles);
+ emit m_model->itemsChanged(KItemRangeList() << KItemRange(index, 1), changedRoles);
+ }
+}
+
+QVariant KStandardItem::dataValue(const QByteArray& role) const
+{
+ return m_data[role];
}
-void KStandardItem::setParent(KStandardItem* parent)
+void KStandardItem::setData(const QHash<QByteArray, QVariant>& values)
{
- // TODO: not implemented yet
- m_parent = parent;
+ const QHash<QByteArray, QVariant> previous = m_data;
+ m_data = values;
+ onDataChanged(values, previous);
}
-KStandardItem* KStandardItem::parent() const
+QHash<QByteArray, QVariant> KStandardItem::data() const
{
- return m_parent;
+ return m_data;
}
-QList<KStandardItem*> KStandardItem::children() const
+void KStandardItem::onDataValueChanged(const QByteArray& role,
+ const QVariant& current,
+ const QVariant& previous)
{
- return m_children;
+ Q_UNUSED(role)
+ Q_UNUSED(current)
+ Q_UNUSED(previous)
}
+
+void KStandardItem::onDataChanged(const QHash<QByteArray, QVariant>& current,
+ const QHash<QByteArray, QVariant>& previous)
+{
+ Q_UNUSED(current)
+ Q_UNUSED(previous)
+}
+