66void writeVariant(QIODevice &dev,
const QVariantHash
object,
int indent,
bool prettyPrint,
bool writeBrackets =
true) {
67 QByteArray indentStringOld(indent, QChar::Tabulation);
68 QString newLine = prettyPrint?
"\n":
" ";
69 dev.write(indentStringOld);
71 dev.write((
"<<"+newLine).toLatin1());
73 indent = prettyPrint? indent + 1: 0;
74 QByteArray indentString(indent, QChar::Tabulation);
75 Q_FOREACH(QString key,
object.keys()) {
76 QVariant val =
object[key];
77 QString name = QString(key);
78 if (val.type() == QVariant::Hash) {
79 dev.write(indentString);
80 dev.write((name+newLine).toLatin1());
82 }
else if (val.type() == QVariant::List) {
83 QVariantList array = val.toList();
85 dev.write(indentString);
86 dev.write((name+
" [ ]"+newLine).toLatin1());
87 }
else if (array.at(0).type() == QVariant::Int) {
88 dev.write(indentString);
89 dev.write((name+
" [").toLatin1());
90 for (
int i=0; i<array.size(); i++) {
91 dev.write((
" "+QString::number(array.at(i).toInt())).toLatin1());
93 dev.write((
" ]"+newLine).toLatin1());
94 }
else if (array.at(0).type() == QVariant::Double) {
95 dev.write(indentString);
96 dev.write((name+
" [").toLatin1());
97 for (
int i=0; i<array.size(); i++) {
98 dev.write((
" "+QString::number(array.at(i).toDouble(),
'f', 5)).toLatin1());
100 dev.write((
" ]"+newLine).toLatin1());
102 dev.write(indentString);
103 dev.write((name+
" ["+newLine).toLatin1());
104 for (
int i=0; i<val.toList().size(); i++) {
105 QVariant arrVal = val.toList().at(i);
106 if (arrVal.type() == QVariant::Hash) {
107 writeVariant(dev, arrVal.toHash(), indent, prettyPrint);
110 dev.write(indentString);
111 dev.write((
"]"+newLine).toLatin1());
113 }
else if (val.type() == QVariant::String) {
115 dev.write(indentString);
117 dev.write((newLine).toLatin1());
118 }
else if (val.type() == QVariant::Bool) {
119 QString boolVal = val.toBool()?
"true":
"false";
120 dev.write(indentString);
121 dev.write((name+
" "+boolVal+newLine).toLatin1());
123 if (val.type() == QVariant::Double) {
124 dev.write(indentString);
125 dev.write((name+
" "+QString::number(val.toDouble(),
'f', 5)+newLine).toLatin1());
126 }
else if (val.type() == QVariant::Int) {
127 dev.write(indentString);
128 dev.write((name+
" "+QString::number(val.toInt())+newLine).toLatin1());
132 dev.write(indentStringOld);
134 dev.write((
">>"+newLine).toLatin1());