]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kstandarditem.cpp
Ported KIcon to QIcon
[dolphin.git] / src / kitemviews / kstandarditem.cpp
index 090746df1d04a2bf0b4c5c22bf8a497974f57138..6cb5b049b45b4095bc6e28e9e7469abceaaa2830 100644 (file)
 
 #include "kstandarditem.h"
 
+#include <KDebug>
+#include "kstandarditemmodel.h"
+
 KStandardItem::KStandardItem(KStandardItem* parent) :
-    m_text(),
-    m_icon(),
-    m_group(),
     m_parent(parent),
     m_children(),
-    m_model(0)
+    m_model(0),
+    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(0),
+    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(0),
+    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);
+}
+
+QString KStandardItem::icon() const
+{
+    return m_data["iconName"].toString();
 }
 
-void KStandardItem::setIcon(const QIcon& icon)
+void KStandardItem::setIconOverlays(const QStringList& overlays)
 {
-    m_icon = icon;
+    setDataValue("iconOverlays", overlays);
 }
 
-QIcon KStandardItem::icon() const
+QStringList KStandardItem::iconOverlays() const
 {
-    return m_icon;
+    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)
@@ -94,7 +136,36 @@ KStandardItem* KStandardItem::parent() const
     return m_parent;
 }
 
+void KStandardItem::setData(const QHash<QByteArray, QVariant>& values)
+{
+    const QHash<QByteArray, QVariant> previous = m_data;
+    m_data = values;
+    onDataChanged(values, previous);
+}
+
+QHash<QByteArray, QVariant> KStandardItem::data() const
+{
+    return m_data;
+}
+
 QList<KStandardItem*> 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<QByteArray, QVariant>& current,
+                                  const QHash<QByteArray, QVariant>& previous)
+{
+    Q_UNUSED(current);
+    Q_UNUSED(previous);
+}
+