void FileModel::addFiles(const QFileInfoList &files)
{
+ beginInsertRows(QModelIndex(), rowCount(), rowCount() + files.count());
foreach (const QFileInfo &file, files)
{
AniDBUdpClient::File *f = new AniDBUdpClient::File(file);
connect(f, SIGNAL(statusUpdate(AniDBUdpClient::File::Action,AniDBUdpClient::File::ActionState,int)), signalMapper, SLOT(map()));
signalMapper->setMapping(f, this->files.size() - 1);
}
- reset();
+ endInsertRows();
}
void FileModel::addDirectory(const QDir &directory)
beginRemoveRows(QModelIndex(), index, index);
signalMapper->removeMappings(files.at(index));
files.removeAt(index);
+ remap(index);
endRemoveRows();
}
QModelIndexList sorted = items;
qSort(sorted);
- for (QModelIndexList::const_iterator i = sorted.constEnd()-1; i != sorted.constBegin(); --i)
+ for (QModelIndexList::const_iterator i = sorted.constEnd() - 1; i != sorted.constBegin(); --i)
{
signalMapper->removeMappings(files.at(i->row()));
files.removeAt(i->row());
}
files.removeAt(sorted[0].row());
+ remap();
reset();
}
}
return QVariant();
}
+
+void FileModel::remap(int start)
+{
+ for (int i = start; i < files.count(); ++i)
+ {
+ signalMapper->removeMappings(files[i]);
+ signalMapper->setMapping(files[i], i);
+ }
+}
private:
QVariant getDescForActionState(AniDBUdpClient::File::ActionState actionState, int role) const;
+ void remap(int start = 0);
+
QList<AniDBUdpClient::File *> files;
AniDBUdpClient::FileRenameDelegate *renameDelegate;