Commit 85ee2f90aafdcf195bdbb9e480172f183ea045b2
1 parent
967d7b03
improve support for converting back to strings
Showing
1 changed file
with
18 additions
and
7 deletions
openbr/openbr_plugin.cpp
| @@ -166,10 +166,10 @@ QVariant File::parse(const QString &value) | @@ -166,10 +166,10 @@ QVariant File::parse(const QString &value) | ||
| 166 | void File::set(const QString &key, const QString &value) | 166 | void File::set(const QString &key, const QString &value) |
| 167 | { | 167 | { |
| 168 | if (value.startsWith('[') && value.endsWith(']')) { | 168 | if (value.startsWith('[') && value.endsWith(']')) { |
| 169 | - QList<QVariant> variants; | 169 | + QVariantList variants; |
| 170 | foreach (const QString &value, QtUtils::parse(value.mid(1, value.size()-2))) | 170 | foreach (const QString &value, QtUtils::parse(value.mid(1, value.size()-2))) |
| 171 | variants.append(parse(value)); | 171 | variants.append(parse(value)); |
| 172 | - set(key, QVariant(variants)); | 172 | + set(key, variants); |
| 173 | } else { | 173 | } else { |
| 174 | set(key, QVariant(parse(value))); | 174 | set(key, QVariant(parse(value))); |
| 175 | } | 175 | } |
| @@ -806,9 +806,7 @@ void Object::setProperty(const QString &name, QVariant value) | @@ -806,9 +806,7 @@ void Object::setProperty(const QString &name, QVariant value) | ||
| 806 | value = v; | 806 | value = v; |
| 807 | } else if ((type.startsWith("QList<") && type.endsWith(">")) || (type == "QStringList") || (type == "QVariantList")) { | 807 | } else if ((type.startsWith("QList<") && type.endsWith(">")) || (type == "QStringList") || (type == "QVariantList")) { |
| 808 | QVariantList elements; | 808 | QVariantList elements; |
| 809 | - if (value.canConvert<QVariantList>()) { | ||
| 810 | - elements = value.value<QVariantList>(); | ||
| 811 | - } else if (value.canConvert< QList<Transform*> >()) { | 809 | + if (value.canConvert< QList<Transform*> >()) { |
| 812 | foreach (Transform *transform, value.value< QList<Transform*> >()) | 810 | foreach (Transform *transform, value.value< QList<Transform*> >()) |
| 813 | elements.append(QVariant::fromValue(transform)); | 811 | elements.append(QVariant::fromValue(transform)); |
| 814 | } else if (value.canConvert<QString>()) { | 812 | } else if (value.canConvert<QString>()) { |
| @@ -817,6 +815,8 @@ void Object::setProperty(const QString &name, QVariant value) | @@ -817,6 +815,8 @@ void Object::setProperty(const QString &name, QVariant value) | ||
| 817 | qFatal("Expected a list to start with '[' and end with 'brackets']'."); | 815 | qFatal("Expected a list to start with '[' and end with 'brackets']'."); |
| 818 | foreach (const QString &element, parse(string.mid(1, string.size()-2))) | 816 | foreach (const QString &element, parse(string.mid(1, string.size()-2))) |
| 819 | elements.append(element); | 817 | elements.append(element); |
| 818 | + } else if (value.canConvert<QVariantList>()) { | ||
| 819 | + elements = value.value<QVariantList>(); | ||
| 820 | } else { | 820 | } else { |
| 821 | qFatal("Expected a list."); | 821 | qFatal("Expected a list."); |
| 822 | } | 822 | } |
| @@ -825,8 +825,19 @@ void Object::setProperty(const QString &name, QVariant value) | @@ -825,8 +825,19 @@ void Object::setProperty(const QString &name, QVariant value) | ||
| 825 | value.setValue(elements); | 825 | value.setValue(elements); |
| 826 | } else if ((type == "QList<QString>") || (type == "QStringList")) { | 826 | } else if ((type == "QList<QString>") || (type == "QStringList")) { |
| 827 | QStringList parsedValues; | 827 | QStringList parsedValues; |
| 828 | - foreach (const QVariant &element, elements) | ||
| 829 | - parsedValues.append(element.toString()); | 828 | + foreach (const QVariant &element, elements) { |
| 829 | + if (element.canConvert<QString>()) { | ||
| 830 | + parsedValues.append(element.toString()); | ||
| 831 | + } else if (element.canConvert<QPointF>()) { | ||
| 832 | + const QPointF point = element.toPointF(); | ||
| 833 | + parsedValues.push_back(QString("(%1,%2)").arg(QString::number(point.x()), QString::number(point.y()))); | ||
| 834 | + } else if (element.canConvert<QRectF>()) { | ||
| 835 | + const QRectF rect = element.toRectF(); | ||
| 836 | + parsedValues.push_back(QString("(%1,%2,%3,%4)").arg(QString::number(rect.x()), QString::number(rect.y()), QString::number(rect.width()), QString::number(rect.height()))); | ||
| 837 | + } else { | ||
| 838 | + qFatal("Can't convert variant to string."); | ||
| 839 | + } | ||
| 840 | + } | ||
| 830 | value.setValue(parsedValues); | 841 | value.setValue(parsedValues); |
| 831 | } else if (type == "QList<float>") { | 842 | } else if (type == "QList<float>") { |
| 832 | QList<float> parsedValues; bool ok; | 843 | QList<float> parsedValues; bool ok; |