Mercurial > dedupe
changeset 3:7a44ba08673d
Using LUTs for all filters.
| author | Tom Fredrik Blenning Klaussen <bfg@blenning.no> |
|---|---|
| date | Tue, 21 Aug 2012 15:09:22 +0200 |
| parents | 2833b7f8884a |
| children | f489b0c9bf99 |
| files | DataController.cpp |
| diffstat | 1 files changed, 29 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/DataController.cpp Tue Aug 21 14:25:33 2012 +0200 +++ b/DataController.cpp Tue Aug 21 15:09:22 2012 +0200 @@ -136,14 +136,35 @@ tw->setUpdatesEnabled(false); + + QMultiMap<QString, QSharedPointer<FileDBLink::DBInfo> > nameLUP; + QMultiMap<quint64, QSharedPointer<FileDBLink::DBInfo> > sizeLUP; + QMultiMap<QDateTime, QSharedPointer<FileDBLink::DBInfo> > mtimeLUP; + QMultiMap<QByteArray, QSharedPointer<FileDBLink::DBInfo> > checksumLUP; + + foreach(QSharedPointer<FileDBLink::DBInfo> line, elems) { + if (showNameDups) { + nameLUP.insertMulti(line->name(), line); + } + if (showSizeDups) { + sizeLUP.insertMulti(line->size(), line); + } + if (showMTimeDups) { + mtimeLUP.insertMulti(line->mtime(), line); + } + if (showCheckSumDups) { + checksumLUP.insertMulti(line->checksum(), line); + } + } + foreach(QSharedPointer<FileDBLink::DBInfo> line, elems) { QTreeWidgetItem* item = 0; bool anyAdded = false; if (showNameDups) { QTreeWidgetItem* topLevelItem = 0; - foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { - if(dup != line && line->name() == dup->name() ) { + foreach(QSharedPointer<FileDBLink::DBInfo> dup, nameLUP.values(line->name())) { + if(dup != line) { if (!topLevelItem) { topLevelItem = new QTreeWidgetItem(); topLevelItem->setData(0, Qt::DisplayRole, "Name"); @@ -159,8 +180,8 @@ if (showSizeDups) { QTreeWidgetItem* topLevelItem = 0; - foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { - if(dup != line && line->size() == dup->size() ) { + foreach(QSharedPointer<FileDBLink::DBInfo> dup, sizeLUP.values(line->size())) { + if(dup != line ) { if (!topLevelItem) { topLevelItem = new QTreeWidgetItem(); topLevelItem->setData(0, Qt::DisplayRole, "Size"); @@ -176,8 +197,8 @@ if (showMTimeDups) { QTreeWidgetItem* topLevelItem = 0; - foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { - if(dup != line && line->mtime() == dup->mtime() ) { + foreach(QSharedPointer<FileDBLink::DBInfo> dup, mtimeLUP.values(line->mtime())) { + if(dup != line ) { if (!topLevelItem) { topLevelItem = new QTreeWidgetItem(); topLevelItem->setData(0, Qt::DisplayRole, "MTime"); @@ -193,8 +214,8 @@ if (showCheckSumDups) { QTreeWidgetItem* topLevelItem = 0; - foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { - if(dup != line && line->checksum() == dup->checksum() ) { + foreach(QSharedPointer<FileDBLink::DBInfo> dup, checksumLUP.values(line->checksum())) { + if(dup != line) { if (!topLevelItem) { topLevelItem = new QTreeWidgetItem(); topLevelItem->setData(0, Qt::DisplayRole, "Checksum");
