Commit 142de7bb5f035bdd94e4c2a28ba0ca119b09d01a
1 parent
dde90f19
Revert "cleaned up turkGallery implementation"
This reverts commit 2288768bcce0467cf410d1912d44e8f021242e99.
Showing
1 changed file
with
24 additions
and
28 deletions
openbr/plugins/turk.cpp
| ... | ... | @@ -13,45 +13,41 @@ class turkGallery : public Gallery |
| 13 | 13 | { |
| 14 | 14 | Q_OBJECT |
| 15 | 15 | |
| 16 | - struct Attribute : public QStringList | |
| 17 | - { | |
| 18 | - QString name; | |
| 19 | - Attribute(const QString &str = QString()) | |
| 20 | - { | |
| 21 | - const int i = str.indexOf('['); | |
| 22 | - name = str.mid(0, i); | |
| 23 | - if (i != -1) | |
| 24 | - append(str.mid(i+1, str.length()-i-2).split(",")); | |
| 25 | - } | |
| 26 | - }; | |
| 27 | - | |
| 28 | 16 | TemplateList readBlock(bool *done) |
| 29 | 17 | { |
| 30 | 18 | *done = true; |
| 31 | 19 | TemplateList templates; |
| 20 | + if (!file.exists()) return templates; | |
| 21 | + | |
| 32 | 22 | QStringList lines = QtUtils::readLines(file); |
| 33 | - if (lines.empty()) | |
| 34 | - qFatal(".turk Gallery missing header."); | |
| 35 | - QList<Attribute> types; | |
| 36 | - foreach (const QString &header, parse(lines.takeFirst())) | |
| 37 | - types.append(header); | |
| 23 | + QRegExp regexp(",(?!(?:\\w+,?)+\\])"); | |
| 24 | + | |
| 25 | + QStringList headers; | |
| 26 | + | |
| 27 | + if (!lines.isEmpty()) headers = lines.takeFirst().split(regexp); | |
| 38 | 28 | |
| 39 | 29 | foreach (const QString &line, lines) { |
| 40 | - const QStringList words = parse(line); | |
| 41 | - if (words.size() != types.size()) | |
| 42 | - qFatal(".turk Gallery incorrect column count."); | |
| 30 | + QStringList words = line.split(regexp); | |
| 31 | + if (words.size() != headers.size()) continue; | |
| 32 | + File f; | |
| 33 | + f.name = words[0]; | |
| 34 | + f.set("Label", words[0].mid(0,5)); | |
| 43 | 35 | |
| 44 | - File f(words[0], words[0].mid(0,5)); | |
| 45 | 36 | for (int i=1; i<words.size(); i++) { |
| 46 | - Attribute &type = types[i]; | |
| 47 | - Attribute rating(words[i]); | |
| 48 | - if (type.size() != rating.size()) | |
| 49 | - qFatal(".turk Gallery incorrect ratings count."); | |
| 37 | + QStringList categories = headers[i].split('['); | |
| 38 | + categories.last().chop(1); // Remove trailing bracket | |
| 39 | + QStringList types = categories.last().split(','); | |
| 40 | + | |
| 41 | + QStringList ratings = words[i].split(','); | |
| 42 | + ratings.first() = ratings.first().mid(1); // Remove first bracket | |
| 43 | + ratings.last().chop(1); // Remove trailing bracket | |
| 44 | + | |
| 45 | + if (types.size() != ratings.size()) continue; | |
| 50 | 46 | |
| 51 | 47 | QMap<QString,QVariant> categoryMap; |
| 52 | - for (int j=0; j<type.size(); j++) | |
| 53 | - categoryMap.insert(type[j], rating[j]); | |
| 54 | - f.set(type.name, categoryMap); | |
| 48 | + for (int j=0; j<types.size(); j++) categoryMap.insert(types[j],ratings[j]); | |
| 49 | + | |
| 50 | + f.set(categories[0], categoryMap); | |
| 55 | 51 | } |
| 56 | 52 | templates.append(f); |
| 57 | 53 | } | ... | ... |