Commit 8d9445fe5da1dbc399ca53c7f826dfa0cc80902e
1 parent
f0eb0cfb
Fixed bugs with MetadataDistance
Showing
1 changed file
with
11 additions
and
8 deletions
openbr/plugins/validate.cpp
| ... | ... | @@ -147,26 +147,29 @@ class MetadataDistance : public Distance |
| 147 | 147 | float compare(const Template &a, const Template &b) const |
| 148 | 148 | { |
| 149 | 149 | foreach (const QString &key, filters) { |
| 150 | + QString aValue = a.file.get<QString>(key, QString()); | |
| 151 | + QString bValue = b.file.get<QString>(key, QString()); | |
| 150 | 152 | |
| 151 | - const QString aValue = a.file.get<QString>(key, ""); | |
| 152 | - const QString bValue = b.file.get<QString>(key, ""); | |
| 153 | + // The query value may be a range. Let's check. | |
| 154 | + if (bValue.isEmpty()) bValue = QtUtils::toString(b.file.get<QPointF>(key, QPointF())); | |
| 153 | 155 | |
| 154 | 156 | if (aValue.isEmpty() || bValue.isEmpty()) continue; |
| 155 | 157 | |
| 156 | 158 | bool keep = false; |
| 159 | + bool ok; | |
| 157 | 160 | |
| 158 | - if (aValue[0] == '(') /* Range */ { | |
| 159 | - QStringList values = aValue.split(','); | |
| 161 | + QPointF range = QtUtils::toPoint(bValue,&ok); | |
| 160 | 162 | |
| 161 | - int value = values[0].mid(1).toInt(); | |
| 162 | - values[1].chop(1); | |
| 163 | - int upperBound = values[1].toInt(); | |
| 163 | + if (ok) /* Range */ { | |
| 164 | + int value = range.x(); | |
| 165 | + int upperBound = range.y(); | |
| 164 | 166 | |
| 165 | 167 | while (value <= upperBound) { |
| 166 | - if (aValue == bValue) { | |
| 168 | + if (aValue == QString::number(value)) { | |
| 167 | 169 | keep = true; |
| 168 | 170 | break; |
| 169 | 171 | } |
| 172 | + value++; | |
| 170 | 173 | } |
| 171 | 174 | } |
| 172 | 175 | else if (aValue == bValue) keep = true; | ... | ... |