]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kstandarditem.cpp
Fix selection rect after porting from QFontMetrics::width()
[dolphin.git] / src / kitemviews / kstandarditem.cpp
index d7f9217bf1968240b5e5aa0ee343c361966cbd28..b0673236f3dff9fb1f4a034e3e8a629c3d7dc9b1 100644 (file)
  ***************************************************************************/
 
 #include "kstandarditem.h"
-
-#include <KDebug>
 #include "kstandarditemmodel.h"
 
 KStandardItem::KStandardItem(KStandardItem* parent) :
-    m_parent(parent),
-    m_children(),
-    m_model(0),
+    QObject(parent),
+    m_model(nullptr),
     m_data()
 {
 }
 
 KStandardItem::KStandardItem(const QString& text, KStandardItem* parent) :
-    m_parent(parent),
-    m_children(),
-    m_model(0),
+    QObject(parent),
+    m_model(nullptr),
     m_data()
 {
     setText(text);
 }
 
 KStandardItem::KStandardItem(const QString& icon, const QString& text, KStandardItem* parent) :
-    m_parent(parent),
-    m_children(),
-    m_model(0),
+    QObject(parent),
+    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)
-{
-}
-
 KStandardItem::~KStandardItem()
 {
 }
@@ -103,11 +90,19 @@ QString KStandardItem::group() const
 
 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);
     }
 }
@@ -117,20 +112,11 @@ QVariant KStandardItem::dataValue(const QByteArray& role) const
     return m_data[role];
 }
 
-void KStandardItem::setParent(KStandardItem* parent)
-{
-    // TODO: not implemented yet
-    m_parent = parent;
-}
-
-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
@@ -138,7 +124,19 @@ QHash<QByteArray, QVariant> KStandardItem::data() const
     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)
+}
+