on xenial help sign in
ModelPrinter: properly print QVariantList's and tabify mapped elements
commit05394560df132091b9de95f70fd7775d7812709a authorMarco Trevisan (Treviño) <mail@3v1n0.net> dateFri 14 Oct 2016, 18:41 (10 years ago) parent35a05c4
2 files changed+28−5
plugins/Unity/Indicators/modelprinter.cpp+26−4 plugins/Unity/Indicators/modelprinter.h+2−1
plugins/Unity/Indicators/modelprinter.cpp+26−4
@@ -105,12 +105,32 @@ QString ModelPrinter::getRowSring(UnityMenuModel* sourceModel, int row, int dept
105105
106106 Q_FOREACH(int role, roles) {
107107 const QByteArray& roleName = roleNames[role];
108− stream << tabify(depth) << getVariantString(roleName, sourceModel->get(row, roleName));
108+ stream << getVariantString(roleName, sourceModel->get(row, roleName), depth);
109109 }
110110 return str;
111111}
112112
113−QString ModelPrinter::getVariantString(const QString& roleName, const QVariant &vData) const
113+QString ModelPrinter::getVariantString(const QVariant& vData) const
114+{
115+ if (vData.type() == QVariant::List) {
116+ QString str = "[";
117+ QTextStream stream(&str);
118+ const QString seperator = ", ";
119+
120+ for (auto v : vData.toList())
121+ stream << getVariantString(v) << seperator;
122+
123+ if (str.endsWith(seperator))
124+ str.resize(str.length() - seperator.length());
125+
126+ str += "]";
127+ return str;
128+ }
129+
130+ return vData.toString();
131+}
132+
133+QString ModelPrinter::getVariantString(const QString& roleName, const QVariant &vData, int depth) const
114134{
115135 QString str;
116136 QTextStream stream(&str);
@@ -119,18 +139,20 @@ QString ModelPrinter::getVariantString(const QString& roleName, const QVariant &
119139 QMapIterator<QString, QVariant> iter(vData.toMap());
120140 while (iter.hasNext()) {
121141 iter.next();
142+ stream << tabify(depth);
122143 stream << roleName
123144 << "."
124145 << iter.key()
125146 << ": "
126− << iter.value().toString()
147+ << getVariantString(iter.value())
127148 << endl;
128149 }
129150 }
130151 else {
152+ stream << tabify(depth);
131153 stream << roleName
132154 << ": "
133− << vData.toString()
155+ << getVariantString(vData)
134156 << endl;
135157 }
136158 return str;
plugins/Unity/Indicators/modelprinter.h+2−1
@@ -46,7 +46,8 @@ Q_SIGNALS:
4646private:
4747 QString getModelDataString(UnityMenuModel* sourceModel, int level);
4848 QString getRowSring(UnityMenuModel* sourceModel, int index, int depth) const;
49− QString getVariantString(const QString& roleName, const QVariant &vData) const;
49+ QString getVariantString(const QString& roleName, const QVariant &vData, int depth) const;
50+ QString getVariantString(const QVariant&) const;
5051
5152 UnityMenuModel* m_model;
5253 QList<UnityMenuModel*> m_children;