[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.6/kdebase/runtime/plasma/declarativeimports/core
From:       Marco Martin <notmart () gmail ! com>
Date:       2011-01-20 22:08:59
Message-ID: 20110120220859.426D3AC8B8 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1216039 by mart:

backport not resetting the role names association


 M  +12 -11    datamodel.cpp  
 M  +1 -0      datamodel.h  


--- branches/KDE/4.6/kdebase/runtime/plasma/declarativeimports/core/datamodel.cpp #1216038:1216039
@@ -125,7 +125,8 @@
 
 DataModel::DataModel(QObject* parent)
     : QAbstractItemModel(parent),
-      m_dataSource(0)
+      m_dataSource(0),
+      m_maxRoleId(Qt::UserRole)
 {
     setObjectName("DataModel");
     connect(this, SIGNAL(rowsInserted(const QModelIndex &, int, int)),
@@ -217,23 +218,23 @@
     m_items[sourceName] = list.toVector();
 
     if (!list.isEmpty()) {
-        int role = Qt::UserRole;
-        m_roleNames.clear();
-        m_roleIds.clear();
-
         if (list.first().canConvert<QVariantHash>()) {
             foreach (const QString& roleName, list.first().value<QVariantHash>().keys()) {
-                ++role;
-                m_roleNames[role] = roleName.toLatin1();
-                m_roleIds[roleName] = role;
+                if (!m_roleIds.contains(roleName)) {
+                    ++m_maxRoleId;
+                    m_roleNames[m_maxRoleId] = roleName.toLatin1();
+                    m_roleIds[roleName] = m_maxRoleId;
             }
+            }
         } else {
             foreach (const QString& roleName, list.first().value<QVariantMap>().keys()) {
-                ++role;
-                m_roleNames[role] = roleName.toLatin1();
-                m_roleIds[roleName] = role;
+                if (!m_roleIds.contains(roleName)) {
+                    ++m_maxRoleId;
+                    m_roleNames[m_maxRoleId] = roleName.toLatin1();
+                    m_roleIds[roleName] = m_maxRoleId;
             }
         }
+        }
 
         setRoleNames(m_roleNames);
     }
--- branches/KDE/4.6/kdebase/runtime/plasma/declarativeimports/core/datamodel.h #1216038:1216039
@@ -132,6 +132,7 @@
     QMap<QString, QVector<QVariant> > m_items;
     QHash<int, QByteArray> m_roleNames;
     QHash<QString, int> m_roleIds;
+    int m_maxRoleId;
 };
 
 int DataModel::countItems() const
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic