From 36b6fef9465ae724a40935949e434ee6f91e5679 Mon Sep 17 00:00:00 2001 From: APTX Date: Sat, 20 Aug 2011 20:03:30 +0200 Subject: [PATCH] Avoid reset() and fix removing from the model. --- filemodel.cpp | 16 ++++++++++++++-- filemodel.h | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/filemodel.cpp b/filemodel.cpp index c07bb01..756f7b6 100644 --- a/filemodel.cpp +++ b/filemodel.cpp @@ -48,6 +48,7 @@ void FileModel::addFile(const QFileInfo &file) void FileModel::addFiles(const QFileInfoList &files) { + beginInsertRows(QModelIndex(), rowCount(), rowCount() + files.count()); foreach (const QFileInfo &file, files) { AniDBUdpClient::File *f = new AniDBUdpClient::File(file); @@ -57,7 +58,7 @@ void FileModel::addFiles(const QFileInfoList &files) 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) @@ -81,6 +82,7 @@ void FileModel::removeAt(int index) beginRemoveRows(QModelIndex(), index, index); signalMapper->removeMappings(files.at(index)); files.removeAt(index); + remap(index); endRemoveRows(); } @@ -90,12 +92,13 @@ void FileModel::removeItems(const QModelIndexList &items) 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(); } @@ -250,3 +253,12 @@ QVariant FileModel::getDescForActionState(AniDBUdpClient::File::ActionState acti } return QVariant(); } + +void FileModel::remap(int start) +{ + for (int i = start; i < files.count(); ++i) + { + signalMapper->removeMappings(files[i]); + signalMapper->setMapping(files[i], i); + } +} diff --git a/filemodel.h b/filemodel.h index 5542f02..f55a440 100644 --- a/filemodel.h +++ b/filemodel.h @@ -68,6 +68,8 @@ private slots: private: QVariant getDescForActionState(AniDBUdpClient::File::ActionState actionState, int role) const; + void remap(int start = 0); + QList files; AniDBUdpClient::FileRenameDelegate *renameDelegate; -- 2.52.0