# HG changeset patch # User Tom Fredrik Blenning Klaussen # Date 1345554562 -7200 # Node ID 7a44ba08673dca2d4750f5332b12b990b93a271a # Parent 2833b7f8884a94b4ff25b8f239163860ee63b8bf Using LUTs for all filters. diff -r 2833b7f8884a -r 7a44ba08673d DataController.cpp --- 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 > nameLUP; + QMultiMap > sizeLUP; + QMultiMap > mtimeLUP; + QMultiMap > checksumLUP; + + foreach(QSharedPointer 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 line, elems) { QTreeWidgetItem* item = 0; bool anyAdded = false; if (showNameDups) { QTreeWidgetItem* topLevelItem = 0; - foreach(QSharedPointer dup, elems) { - if(dup != line && line->name() == dup->name() ) { + foreach(QSharedPointer 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 dup, elems) { - if(dup != line && line->size() == dup->size() ) { + foreach(QSharedPointer 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 dup, elems) { - if(dup != line && line->mtime() == dup->mtime() ) { + foreach(QSharedPointer 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 dup, elems) { - if(dup != line && line->checksum() == dup->checksum() ) { + foreach(QSharedPointer dup, checksumLUP.values(line->checksum())) { + if(dup != line) { if (!topLevelItem) { topLevelItem = new QTreeWidgetItem(); topLevelItem->setData(0, Qt::DisplayRole, "Checksum");