Commit 8d9445fe5da1dbc399ca53c7f826dfa0cc80902e

Authored by sklum
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;
... ...