on xenial help sign in
ModelPrinter: properly print QVariantList's and tabify mapped elements
0539456Marco Trevisan (Treviño)
plugins/Unity/Indicators/modelprinter.cpp+26−4
@@ -105,12 +105,32 @@ QString ModelPrinter::getRowSring(UnityMenuModel* sourceModel, int row, int dept
105
105
106 Q_FOREACH(int role, roles) {
106 Q_FOREACH(int role, roles) {
107 const QByteArray& roleName = roleNames[role];
107 const QByteArray& roleName = roleNames[role];
108− stream << tabify(depth) << getVariantString(roleName, sourceModel->get(row, roleName));
108+ stream << getVariantString(roleName, sourceModel->get(row, roleName), depth);
109 }
109 }
110 return str;
110 return str;
111}
111}
112
112
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
114{
134{
115 QString str;
135 QString str;
116 QTextStream stream(&str);
136 QTextStream stream(&str);
@@ -119,18 +139,20 @@ QString ModelPrinter::getVariantString(const QString& roleName, const QVariant &
119 QMapIterator<QString, QVariant> iter(vData.toMap());
139 QMapIterator<QString, QVariant> iter(vData.toMap());
120 while (iter.hasNext()) {
140 while (iter.hasNext()) {
121 iter.next();
141 iter.next();
142+ stream << tabify(depth);
122 stream << roleName
143 stream << roleName
123 << "."
144 << "."
124 << iter.key()
145 << iter.key()
125 << ": "
146 << ": "
126− << iter.value().toString()
147+ << getVariantString(iter.value())
127 << endl;
148 << endl;
128 }
149 }
129 }
150 }
130 else {
151 else {
152+ stream << tabify(depth);
131 stream << roleName
153 stream << roleName
132 << ": "
154 << ": "
133− << vData.toString()
155+ << getVariantString(vData)
134 << endl;
156 << endl;
135 }
157 }
136 return str;
158 return str;
plugins/Unity/Indicators/modelprinter.h+2−1
@@ -46,7 +46,8 @@ Q_SIGNALS:
46private:
46private:
47 QString getModelDataString(UnityMenuModel* sourceModel, int level);
47 QString getModelDataString(UnityMenuModel* sourceModel, int level);
48 QString getRowSring(UnityMenuModel* sourceModel, int index, int depth) const;
48 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;
50
51
51 UnityMenuModel* m_model;
52 UnityMenuModel* m_model;
52 QList<UnityMenuModel*> m_children;
53 QList<UnityMenuModel*> m_children;