Mercurial > dedupe
comparison DataController.cpp @ 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 |
comparison
equal
deleted
inserted
replaced
| 2:2833b7f8884a | 3:7a44ba08673d |
|---|---|
| 134 | 134 |
| 135 int n = 0; | 135 int n = 0; |
| 136 | 136 |
| 137 tw->setUpdatesEnabled(false); | 137 tw->setUpdatesEnabled(false); |
| 138 | 138 |
| 139 | |
| 140 QMultiMap<QString, QSharedPointer<FileDBLink::DBInfo> > nameLUP; | |
| 141 QMultiMap<quint64, QSharedPointer<FileDBLink::DBInfo> > sizeLUP; | |
| 142 QMultiMap<QDateTime, QSharedPointer<FileDBLink::DBInfo> > mtimeLUP; | |
| 143 QMultiMap<QByteArray, QSharedPointer<FileDBLink::DBInfo> > checksumLUP; | |
| 144 | |
| 145 foreach(QSharedPointer<FileDBLink::DBInfo> line, elems) { | |
| 146 if (showNameDups) { | |
| 147 nameLUP.insertMulti(line->name(), line); | |
| 148 } | |
| 149 if (showSizeDups) { | |
| 150 sizeLUP.insertMulti(line->size(), line); | |
| 151 } | |
| 152 if (showMTimeDups) { | |
| 153 mtimeLUP.insertMulti(line->mtime(), line); | |
| 154 } | |
| 155 if (showCheckSumDups) { | |
| 156 checksumLUP.insertMulti(line->checksum(), line); | |
| 157 } | |
| 158 } | |
| 159 | |
| 139 foreach(QSharedPointer<FileDBLink::DBInfo> line, elems) { | 160 foreach(QSharedPointer<FileDBLink::DBInfo> line, elems) { |
| 140 QTreeWidgetItem* item = 0; | 161 QTreeWidgetItem* item = 0; |
| 141 bool anyAdded = false; | 162 bool anyAdded = false; |
| 142 | 163 |
| 143 if (showNameDups) { | 164 if (showNameDups) { |
| 144 QTreeWidgetItem* topLevelItem = 0; | 165 QTreeWidgetItem* topLevelItem = 0; |
| 145 foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { | 166 foreach(QSharedPointer<FileDBLink::DBInfo> dup, nameLUP.values(line->name())) { |
| 146 if(dup != line && line->name() == dup->name() ) { | 167 if(dup != line) { |
| 147 if (!topLevelItem) { | 168 if (!topLevelItem) { |
| 148 topLevelItem = new QTreeWidgetItem(); | 169 topLevelItem = new QTreeWidgetItem(); |
| 149 topLevelItem->setData(0, Qt::DisplayRole, "Name"); | 170 topLevelItem->setData(0, Qt::DisplayRole, "Name"); |
| 150 if(!item) | 171 if(!item) |
| 151 item = createItem(*line); | 172 item = createItem(*line); |
| 157 } | 178 } |
| 158 } | 179 } |
| 159 | 180 |
| 160 if (showSizeDups) { | 181 if (showSizeDups) { |
| 161 QTreeWidgetItem* topLevelItem = 0; | 182 QTreeWidgetItem* topLevelItem = 0; |
| 162 foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { | 183 foreach(QSharedPointer<FileDBLink::DBInfo> dup, sizeLUP.values(line->size())) { |
| 163 if(dup != line && line->size() == dup->size() ) { | 184 if(dup != line ) { |
| 164 if (!topLevelItem) { | 185 if (!topLevelItem) { |
| 165 topLevelItem = new QTreeWidgetItem(); | 186 topLevelItem = new QTreeWidgetItem(); |
| 166 topLevelItem->setData(0, Qt::DisplayRole, "Size"); | 187 topLevelItem->setData(0, Qt::DisplayRole, "Size"); |
| 167 if(!item) | 188 if(!item) |
| 168 item = createItem(*line); | 189 item = createItem(*line); |
| 174 } | 195 } |
| 175 } | 196 } |
| 176 | 197 |
| 177 if (showMTimeDups) { | 198 if (showMTimeDups) { |
| 178 QTreeWidgetItem* topLevelItem = 0; | 199 QTreeWidgetItem* topLevelItem = 0; |
| 179 foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { | 200 foreach(QSharedPointer<FileDBLink::DBInfo> dup, mtimeLUP.values(line->mtime())) { |
| 180 if(dup != line && line->mtime() == dup->mtime() ) { | 201 if(dup != line ) { |
| 181 if (!topLevelItem) { | 202 if (!topLevelItem) { |
| 182 topLevelItem = new QTreeWidgetItem(); | 203 topLevelItem = new QTreeWidgetItem(); |
| 183 topLevelItem->setData(0, Qt::DisplayRole, "MTime"); | 204 topLevelItem->setData(0, Qt::DisplayRole, "MTime"); |
| 184 if(!item) | 205 if(!item) |
| 185 item = createItem(*line); | 206 item = createItem(*line); |
| 191 } | 212 } |
| 192 } | 213 } |
| 193 | 214 |
| 194 if (showCheckSumDups) { | 215 if (showCheckSumDups) { |
| 195 QTreeWidgetItem* topLevelItem = 0; | 216 QTreeWidgetItem* topLevelItem = 0; |
| 196 foreach(QSharedPointer<FileDBLink::DBInfo> dup, elems) { | 217 foreach(QSharedPointer<FileDBLink::DBInfo> dup, checksumLUP.values(line->checksum())) { |
| 197 if(dup != line && line->checksum() == dup->checksum() ) { | 218 if(dup != line) { |
| 198 if (!topLevelItem) { | 219 if (!topLevelItem) { |
| 199 topLevelItem = new QTreeWidgetItem(); | 220 topLevelItem = new QTreeWidgetItem(); |
| 200 topLevelItem->setData(0, Qt::DisplayRole, "Checksum"); | 221 topLevelItem->setData(0, Qt::DisplayRole, "Checksum"); |
| 201 if(!item) | 222 if(!item) |
| 202 item = createItem(*line); | 223 item = createItem(*line); |
