Engauge Digitizer  2
 All Classes Files Functions Variables Enumerations Enumerator Friends Pages
QtToString.cpp
1 /******************************************************************************************************
2  * (C) 2014 markummitchell@github.com. This file is part of Engauge Digitizer, which is released *
3  * under GNU General Public License version 2 (GPLv2) or (at your option) any later version. See file *
4  * LICENSE or go to gnu.org/licenses for details. Distribution requires prior written permission. *
5  ******************************************************************************************************/
6 
7 #include "Logger.h"
8 #include <QHash>
9 #include <QTransform>
10 #include "QtToString.h"
11 
12 static QHash<int, QString> rolesAsStringsLookupTable; // For logging
13 
14 QString QPointFToString (const QPointF &pos)
15 {
16  QString str = QString ("(%1, %2)")
17  .arg (pos.x ())
18  .arg (pos.y ());
19 
20  return str;
21 }
22 
23 QString QtCursorToString (Qt::CursorShape cursorShape)
24 {
25  switch (cursorShape) {
26  case Qt::ArrowCursor:
27  return "Qt::ArrowCursor";
28  break;
29 
30  case Qt::BitmapCursor:
31  return "Qt::BitmapCursor";
32  break;
33 
34  case Qt::CrossCursor:
35  return "Qt::CrossCursor";
36  break;
37 
38  case Qt::WaitCursor:
39  return "Qt::WaitCursor";
40  break;
41 
42  default:
43  return "Qt::<unknown>";
44  break;
45  }
46 }
47 
48 QString QTransformToString (const QTransform &transform)
49 {
50  const int FIELD_WIDTH = 12;
51 
52  QString str = QString ("%1 %2 %3 %4\n"
53  "%5 %6 %7 %8\n"
54  "%9 %10 %11 %12")
55  .arg (INDENTATION_PAST_TIMESTAMP)
56  .arg (transform.m11 (), FIELD_WIDTH)
57  .arg (transform.m12 (), FIELD_WIDTH)
58  .arg (transform.m13 (), FIELD_WIDTH)
59  .arg (INDENTATION_PAST_TIMESTAMP)
60  .arg (transform.m21 (), FIELD_WIDTH)
61  .arg (transform.m22 (), FIELD_WIDTH)
62  .arg (transform.m23 (), FIELD_WIDTH)
63  .arg (INDENTATION_PAST_TIMESTAMP)
64  .arg (transform.m31 (), FIELD_WIDTH)
65  .arg (transform.m32 (), FIELD_WIDTH)
66  .arg (transform.m33 (), FIELD_WIDTH);
67 
68  return str;
69 }
70 
71 QString QXmlStreamReaderTokenTypeToString (QXmlStreamReader::TokenType tokenType)
72 {
73  switch (tokenType) {
74  case QXmlStreamReader::Characters:
75  return "Characters";
76  case QXmlStreamReader::Comment:
77  return "Comment";
78  case QXmlStreamReader::DTD:
79  return "DTD";
80  case QXmlStreamReader::EndDocument:
81  return "EndDocument";
82  case QXmlStreamReader::EndElement:
83  return "EndElement";
84  case QXmlStreamReader::EntityReference:
85  return "EntityReference";
86  case QXmlStreamReader::Invalid:
87  return "Invalid";
88  case QXmlStreamReader::NoToken:
89  return "NoToken";
90  case QXmlStreamReader::ProcessingInstruction:
91  return "ProcessingInstruction";
92  case QXmlStreamReader::StartDocument:
93  return "StartDocument";
94  case QXmlStreamReader::StartElement:
95  return "StartElement";
96  }
97 
98  return "<Unknown>";
99 }
100 
101 QString roleAsString (int role)
102 {
103  if (rolesAsStringsLookupTable.count () == 0) {
104 
105  // List from qnamespace.h
106  rolesAsStringsLookupTable [Qt::AccessibleDescriptionRole] = "AccessibleDescriptionRole";
107  rolesAsStringsLookupTable [Qt::AccessibleTextRole] = "AccessibleTextRole";
108  rolesAsStringsLookupTable [Qt::BackgroundRole] = "BackgroundRole";
109  rolesAsStringsLookupTable [Qt::BackgroundColorRole] = "BackgroundColorRole";
110  rolesAsStringsLookupTable [Qt::CheckStateRole] = "CheckStateRole";
111  rolesAsStringsLookupTable [Qt::DecorationRole] = "DecorationRole";
112  rolesAsStringsLookupTable [Qt::DisplayRole] = "DisplayRole";
113  rolesAsStringsLookupTable [Qt::EditRole] = "EditRole";
114  rolesAsStringsLookupTable [Qt::FontRole] = "FontRole";
115  rolesAsStringsLookupTable [Qt::ForegroundRole] = "ForegroundRole";
116  rolesAsStringsLookupTable [Qt::InitialSortOrderRole] = "InitialSortOrderRole";
117  rolesAsStringsLookupTable [Qt::SizeHintRole] = "SizeHintRole";
118  rolesAsStringsLookupTable [Qt::StatusTipRole] = "StatusTipRole";
119  rolesAsStringsLookupTable [Qt::TextAlignmentRole] = "TextAlignmentRole";
120  rolesAsStringsLookupTable [Qt::TextColorRole] = "TextColorRole";
121  rolesAsStringsLookupTable [Qt::ToolTipRole] = "ToolTipRole";
122  rolesAsStringsLookupTable [Qt::UserRole] = "UserRole";
123  rolesAsStringsLookupTable [Qt::WhatsThisRole] = "WhatsThisRole";
124  }
125 
126  if (rolesAsStringsLookupTable.contains (role)) {
127 
128  return rolesAsStringsLookupTable [role];
129 
130  } else {
131 
132  return QString ("%1?").arg (role);
133 
134  }
135 }
136 
137 QString rolesAsString (const QVector<int> &roles)
138 {
139  QString str;
140 
141  for (int i = 0; i < roles.count (); i++) {
142  if (i > 0) {
143  str += ",";
144  }
145  str += roleAsString (roles [i]);
146  }
147 
148  return str;
149 }