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,26 +147,29 @@ class MetadataDistance : public Distance | ||
| 147 | float compare(const Template &a, const Template &b) const | 147 | float compare(const Template &a, const Template &b) const |
| 148 | { | 148 | { |
| 149 | foreach (const QString &key, filters) { | 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 | if (aValue.isEmpty() || bValue.isEmpty()) continue; | 156 | if (aValue.isEmpty() || bValue.isEmpty()) continue; |
| 155 | 157 | ||
| 156 | bool keep = false; | 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 | while (value <= upperBound) { | 167 | while (value <= upperBound) { |
| 166 | - if (aValue == bValue) { | 168 | + if (aValue == QString::number(value)) { |
| 167 | keep = true; | 169 | keep = true; |
| 168 | break; | 170 | break; |
| 169 | } | 171 | } |
| 172 | + value++; | ||
| 170 | } | 173 | } |
| 171 | } | 174 | } |
| 172 | else if (aValue == bValue) keep = true; | 175 | else if (aValue == bValue) keep = true; |