taskswitcher/tsdevicedialogplugin/src/tsmodel.cpp
changeset 127 7b66bc3c6dc9
parent 125 26079c1bb561
--- a/taskswitcher/tsdevicedialogplugin/src/tsmodel.cpp	Wed Oct 13 12:59:22 2010 +0300
+++ b/taskswitcher/tsdevicedialogplugin/src/tsmodel.cpp	Mon Oct 18 10:44:15 2010 +0300
@@ -69,10 +69,11 @@
     return mEntries.count();
 }
 
-bool TsModel::insertRows(int row, int count, TsModelItem *item, const QModelIndex &parent)
+bool TsModel::insertRows(int row, int count, QScopedPointer<TsModelItem> &item, const QModelIndex &parent)
 {
     beginInsertRows(parent, row, row+count-1);
-    mEntries.insert(row, item);
+    mEntries.insert(row, item.data());
+    item.take();
     endInsertRows();
     return true;
 }
@@ -97,10 +98,11 @@
 }
 
 
-bool TsModel::updateRows(int row, TsModelItem *item)
+bool TsModel::updateRows(int row, QScopedPointer<TsModelItem> &item)
 {
     TsModelItem *oldItem = mEntries.at(row);
-    mEntries[row] = item;
+    mEntries[row] = item.data();
+    item.take();
     delete oldItem;
 
     emit dataChanged(index(row),index(row));
@@ -162,16 +164,20 @@
                 removeRows(changes[iter].first.oldOffset(), 1);
                 break;
             case TsTaskChangeInfo::EChangeInsert :
-                insertRows(changes[iter].first.newOffset(), 1,
-                           new TsModelItem(changes[iter].second));
+                {
+                QScopedPointer<TsModelItem> item(new TsModelItem(changes[iter].second));
+                insertRows(changes[iter].first.newOffset(), 1, item);
                 break;
+                }
             case TsTaskChangeInfo::EChangeMove :
                 moveRows(changes[iter].first.oldOffset(), changes[iter].first.newOffset());
                 break;
             case TsTaskChangeInfo::EChangeUpdate :
-                updateRows(changes[iter].first.oldOffset(),
-                           new TsModelItem(changes[iter].second));
+                {
+                QScopedPointer<TsModelItem> item(new TsModelItem(changes[iter].second));
+                updateRows(changes[iter].first.oldOffset(), item);
                 break;
+                }
             default:
                 break;
         }