taskswitcher/tsdevicedialogplugin/src/tsmodel.cpp
changeset 127 7b66bc3c6dc9
parent 125 26079c1bb561
equal deleted inserted replaced
126:efda7c0771b9 127:7b66bc3c6dc9
    67 {
    67 {
    68     Q_UNUSED(parent);
    68     Q_UNUSED(parent);
    69     return mEntries.count();
    69     return mEntries.count();
    70 }
    70 }
    71 
    71 
    72 bool TsModel::insertRows(int row, int count, TsModelItem *item, const QModelIndex &parent)
    72 bool TsModel::insertRows(int row, int count, QScopedPointer<TsModelItem> &item, const QModelIndex &parent)
    73 {
    73 {
    74     beginInsertRows(parent, row, row+count-1);
    74     beginInsertRows(parent, row, row+count-1);
    75     mEntries.insert(row, item);
    75     mEntries.insert(row, item.data());
       
    76     item.take();
    76     endInsertRows();
    77     endInsertRows();
    77     return true;
    78     return true;
    78 }
    79 }
    79 
    80 
    80 bool TsModel::removeRows(int row, int count, const QModelIndex &parent)
    81 bool TsModel::removeRows(int row, int count, const QModelIndex &parent)
    95     endMoveRows();
    96     endMoveRows();
    96     return true;
    97     return true;
    97 }
    98 }
    98 
    99 
    99 
   100 
   100 bool TsModel::updateRows(int row, TsModelItem *item)
   101 bool TsModel::updateRows(int row, QScopedPointer<TsModelItem> &item)
   101 {
   102 {
   102     TsModelItem *oldItem = mEntries.at(row);
   103     TsModelItem *oldItem = mEntries.at(row);
   103     mEntries[row] = item;
   104     mEntries[row] = item.data();
       
   105     item.take();
   104     delete oldItem;
   106     delete oldItem;
   105 
   107 
   106     emit dataChanged(index(row),index(row));
   108     emit dataChanged(index(row),index(row));
   107     return true;
   109     return true;
   108 }
   110 }
   160         switch (changes[iter].first.changeType()) {
   162         switch (changes[iter].first.changeType()) {
   161             case TsTaskChangeInfo::EChangeDelete :
   163             case TsTaskChangeInfo::EChangeDelete :
   162                 removeRows(changes[iter].first.oldOffset(), 1);
   164                 removeRows(changes[iter].first.oldOffset(), 1);
   163                 break;
   165                 break;
   164             case TsTaskChangeInfo::EChangeInsert :
   166             case TsTaskChangeInfo::EChangeInsert :
   165                 insertRows(changes[iter].first.newOffset(), 1,
   167                 {
   166                            new TsModelItem(changes[iter].second));
   168                 QScopedPointer<TsModelItem> item(new TsModelItem(changes[iter].second));
   167                 break;
   169                 insertRows(changes[iter].first.newOffset(), 1, item);
       
   170                 break;
       
   171                 }
   168             case TsTaskChangeInfo::EChangeMove :
   172             case TsTaskChangeInfo::EChangeMove :
   169                 moveRows(changes[iter].first.oldOffset(), changes[iter].first.newOffset());
   173                 moveRows(changes[iter].first.oldOffset(), changes[iter].first.newOffset());
   170                 break;
   174                 break;
   171             case TsTaskChangeInfo::EChangeUpdate :
   175             case TsTaskChangeInfo::EChangeUpdate :
   172                 updateRows(changes[iter].first.oldOffset(),
   176                 {
   173                            new TsModelItem(changes[iter].second));
   177                 QScopedPointer<TsModelItem> item(new TsModelItem(changes[iter].second));
   174                 break;
   178                 updateRows(changes[iter].first.oldOffset(), item);
       
   179                 break;
       
   180                 }
   175             default:
   181             default:
   176                 break;
   182                 break;
   177         }
   183         }
   178     }
   184     }
   179 }
   185 }