Skip to content

Commit 7c58938

Browse files
committed
GUI: Use severity enum in ErrorItem.
Convert from using string to enum values for severity in ErrorItem. Storing and handling severity as string was the easy way earlier but it is not convenient or efficient way to handle severities. This commit is the first step in converting severity handling to use the enum values instead of strings.
1 parent a77993d commit 7c58938

File tree

9 files changed

+77
-15
lines changed

9 files changed

+77
-15
lines changed

gui/csvreport.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ void CsvReport::WriteError(const ErrorItem &error)
6565
QString line;
6666
const QString file = QDir::toNativeSeparators(error.files[error.files.size() - 1]);
6767
line += QString("%1,%2,").arg(file).arg(error.lines[error.lines.size() - 1]);
68-
line += QString("%1,%2").arg(error.severity).arg(error.summary);
68+
line += QString("%1,%2").arg(GuiSeverity::toString(error.severity)).arg(error.summary);
6969

7070
mTxtWriter << line << endl;
7171
}

gui/erroritem.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ ErrorItem::ErrorItem(const ErrorLine &line)
3535
files.append(line.file);
3636
lines.append(line.line);
3737
id = line.id;
38-
severity = line.severity;
38+
severity = GuiSeverity::fromString(line.severity);
3939
summary = line.summary;
4040
message = line.message;
4141
}
4242

4343
QString ErrorItem::ToString() const
4444
{
45-
QString str = file + " - " + id + " - " + severity +"\n";
45+
QString str = file + " - " + id + " - " + GuiSeverity::toString(severity) +"\n";
4646
str += summary + "\n";
4747
str += message + "\n";
4848
for (int i = 0; i < files.size(); i++)

gui/erroritem.h

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,70 @@
2222
#include <QString>
2323
#include <QStringList>
2424
#include <QMetaType>
25+
#include "errorlogger.h"
2526

2627
class ErrorLine;
2728

2829
/// @addtogroup GUI
2930
/// @{
3031

32+
33+
/**
34+
* @brief GUI versions of severity conversions.
35+
* GUI needs its own versions of conversions since GUI uses Qt's QString
36+
* instead of the std::string used by lib/cli.
37+
*/
38+
class GuiSeverity : Severity
39+
{
40+
public:
41+
static QString toString(SeverityType severity)
42+
{
43+
switch (severity)
44+
{
45+
case none:
46+
return "";
47+
case error:
48+
return "error";
49+
case warning:
50+
return "warning";
51+
case style:
52+
return "style";
53+
case performance:
54+
return "performance";
55+
case portability:
56+
return "portability";
57+
case information:
58+
return "information";
59+
case debug:
60+
return "debug";
61+
};
62+
return "???";
63+
}
64+
65+
static SeverityType fromString(const QString &severity)
66+
{
67+
if (severity.isEmpty())
68+
return none;
69+
if (severity == "none")
70+
return none;
71+
if (severity == "error")
72+
return error;
73+
if (severity == "warning")
74+
return warning;
75+
if (severity == "style")
76+
return style;
77+
if (severity == "performance")
78+
return performance;
79+
if (severity == "portability")
80+
return portability;
81+
if (severity == "information")
82+
return information;
83+
if (severity == "debug")
84+
return debug;
85+
return none;
86+
}
87+
};
88+
3189
/**
3290
* @brief A class containing error data for one error.
3391
*
@@ -54,7 +112,7 @@ class ErrorItem
54112
QStringList files;
55113
QList<unsigned int> lines;
56114
QString id;
57-
QString severity;
115+
Severity::SeverityType severity;
58116
QString summary;
59117
QString message;
60118
};

gui/resultstree.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ void ResultsTree::AddErrorItem(const ErrorItem &item)
109109
realfile = tr("Undefined file");
110110
}
111111

112-
bool hide = !mShowTypes[SeverityToShowType(item.severity)];
112+
bool hide = !mShowTypes[SeverityToShowType(GuiSeverity::toString(item.severity))];
113113

114114
//if there is at least one error that is not hidden, we have a visible error
115115
if (!hide)
@@ -123,7 +123,7 @@ void ResultsTree::AddErrorItem(const ErrorItem &item)
123123
line.line = item.lines[0];
124124
line.summary = item.summary;
125125
line.message = item.message;
126-
line.severity = item.severity;
126+
line.severity = GuiSeverity::toString(item.severity);
127127
//Create the base item for the error and ensure it has a proper
128128
//file item as a parent
129129
QStandardItem *stditem = AddBacktraceFiles(EnsureFileItem(line.file, hide),
@@ -137,7 +137,7 @@ void ResultsTree::AddErrorItem(const ErrorItem &item)
137137
//Add user data to that item
138138
QMap<QString, QVariant> data;
139139
data["hide"] = false;
140-
data["severity"] = SeverityToShowType(item.severity);
140+
data["severity"] = SeverityToShowType(GuiSeverity::toString(item.severity));
141141
data["summary"] = item.summary;
142142
data["message"] = item.message;
143143
data["file"] = item.files[0];
@@ -794,7 +794,7 @@ void ResultsTree::SaveErrors(Report *report, QStandardItem *item)
794794
QVariantMap data = userdata.toMap();
795795

796796
ErrorItem item;
797-
item.severity = ShowTypeToString(VariantToShowType(data["severity"]));
797+
item.severity = GuiSeverity::fromString(ShowTypeToString(VariantToShowType(data["severity"])));
798798
item.summary = data["summary"].toString();
799799
item.message = data["message"].toString();
800800
item.id = data["id"].toString();

gui/resultsview.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ void ResultsView::Error(const ErrorItem &item)
8888
mErrorsFound = true;
8989
mUI.mTree->AddErrorItem(item);
9090
emit GotResults();
91-
mStatistics->AddItem(ResultsTree::SeverityToShowType(item.severity));
91+
mStatistics->AddItem(ResultsTree::SeverityToShowType(GuiSeverity::toString(item.severity)));
9292
}
9393

9494
void ResultsView::ShowResults(ShowTypes type, bool show)

gui/threadresult.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ void ThreadResult::reportErr(const ErrorLogger::ErrorMessage &msg)
7171
item.lines = lines;
7272
item.summary = QString::fromStdString(msg.shortMessage());
7373
item.message = QString::fromStdString(msg.verboseMessage());
74-
item.severity = QString::fromStdString(Severity::toString(msg._severity));
74+
item.severity = msg._severity;
7575

7676
if (msg._severity != Severity::debug)
7777
emit Error(item);

gui/txtreport.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ void TxtReport::WriteError(const ErrorItem &error)
7676
}
7777
}
7878

79-
line += QString("(%1) %2").arg(error.severity).arg(error.summary);
79+
line += QString("(%1) %2").arg(GuiSeverity::toString(error.severity)).arg(error.summary);
8080

8181
mTxtWriter << line << endl;
8282
}

gui/xmlreportv1.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,9 @@ void XmlReportV1::WriteError(const ErrorItem &error)
100100
const QString line = QString::number(error.lines[error.lines.size() - 1]);
101101
mXmlWriter->writeAttribute(LineAttribute, line);
102102
mXmlWriter->writeAttribute(IdAttribute, error.id);
103-
mXmlWriter->writeAttribute(SeverityAttribute, error.severity);
103+
104+
// Don't localize severity so we can read these files
105+
mXmlWriter->writeAttribute(SeverityAttribute, GuiSeverity::toString(error.severity));
104106
const QString message = XmlReport::quoteMessage(error.message);
105107
mXmlWriter->writeAttribute(MsgAttribute, message);
106108
mXmlWriter->writeEndElement();
@@ -165,7 +167,7 @@ ErrorItem XmlReportV1::ReadError(QXmlStreamReader *reader)
165167
const int line = attribs.value("", LineAttribute).toString().toUInt();
166168
item.lines.push_back(line);
167169
item.id = attribs.value("", IdAttribute).toString();
168-
item.severity = attribs.value("", SeverityAttribute).toString();
170+
item.severity = GuiSeverity::fromString(attribs.value("", SeverityAttribute).toString());
169171

170172
// NOTE: This dublicates the message to Summary-field. But since
171173
// old XML format doesn't have separate summary and verbose messages

gui/xmlreportv2.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,9 @@ void XmlReportV2::WriteError(const ErrorItem &error)
110110

111111
mXmlWriter->writeStartElement(ErrorElementName);
112112
mXmlWriter->writeAttribute(IdAttribute, error.id);
113-
mXmlWriter->writeAttribute(SeverityAttribute, error.severity);
113+
114+
// Don't localize severity so we can read these files
115+
mXmlWriter->writeAttribute(SeverityAttribute, GuiSeverity::toString(error.severity));
114116
const QString summary = XmlReport::quoteMessage(error.summary);
115117
mXmlWriter->writeAttribute(MsgAttribute, summary);
116118
const QString message = XmlReport::quoteMessage(error.message);
@@ -196,7 +198,7 @@ ErrorItem XmlReportV2::ReadError(QXmlStreamReader *reader)
196198
{
197199
QXmlStreamAttributes attribs = reader->attributes();
198200
item.id = attribs.value("", IdAttribute).toString();
199-
item.severity = attribs.value("", SeverityAttribute).toString();
201+
item.severity = GuiSeverity::fromString(attribs.value("", SeverityAttribute).toString());
200202
const QString summary = attribs.value("", MsgAttribute).toString();
201203
item.summary = XmlReport::unquoteMessage(summary);
202204
const QString message = attribs.value("", VerboseAttribute).toString();

0 commit comments

Comments
 (0)