X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/ae4d11d918938fd9087f2035dac247969c1f2313..87e8d0ba:/src/kitemviews/kstandarditem.cpp diff --git a/src/kitemviews/kstandarditem.cpp b/src/kitemviews/kstandarditem.cpp index 090746df1..d4d1fa2f9 100644 --- a/src/kitemviews/kstandarditem.cpp +++ b/src/kitemviews/kstandarditem.cpp @@ -18,34 +18,42 @@ ***************************************************************************/ #include "kstandarditem.h" +#include +#include +#include "kstandarditemmodel.h" KStandardItem::KStandardItem(KStandardItem* parent) : - m_text(), - m_icon(), - m_group(), m_parent(parent), m_children(), - m_model(0) + 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) + 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(), +KStandardItem::KStandardItem(const QString& icon, const QString& text, KStandardItem* parent) : m_parent(parent), m_children(), - m_model(0) + m_model(nullptr), + m_data() +{ + setIcon(icon); + setText(text); +} + +KStandardItem::KStandardItem(const KStandardItem& item) : + m_parent(item.m_parent), + m_children(item.m_children), + m_model(item.m_model), + m_data(item.m_data) { } @@ -55,32 +63,66 @@ 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 QString& icon) +{ + setDataValue("iconName", icon); } -void KStandardItem::setIcon(const QIcon& icon) +QString KStandardItem::icon() const { - m_icon = icon; + return m_data["iconName"].toString(); } -QIcon KStandardItem::icon() const +void KStandardItem::setIconOverlays(const QStringList& overlays) { - return m_icon; + 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 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) @@ -94,7 +136,36 @@ KStandardItem* KStandardItem::parent() const return m_parent; } +void KStandardItem::setData(const QHash& values) +{ + const QHash previous = m_data; + m_data = values; + onDataChanged(values, previous); +} + +QHash KStandardItem::data() const +{ + return m_data; +} + QList KStandardItem::children() const { return m_children; } + +void KStandardItem::onDataValueChanged(const QByteArray& role, + const QVariant& current, + const QVariant& previous) +{ + Q_UNUSED(role); + Q_UNUSED(current); + Q_UNUSED(previous); +} + +void KStandardItem::onDataChanged(const QHash& current, + const QHash& previous) +{ + Q_UNUSED(current); + Q_UNUSED(previous); +} +