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.
This commit is contained in:
Kimmo Varis 2011-03-07 21:10:30 +02:00
parent a77993db75
commit 7c589384d2
9 changed files with 77 additions and 15 deletions

View File

@ -65,7 +65,7 @@ void CsvReport::WriteError(const ErrorItem &error)
QString line; QString line;
const QString file = QDir::toNativeSeparators(error.files[error.files.size() - 1]); const QString file = QDir::toNativeSeparators(error.files[error.files.size() - 1]);
line += QString("%1,%2,").arg(file).arg(error.lines[error.lines.size() - 1]); line += QString("%1,%2,").arg(file).arg(error.lines[error.lines.size() - 1]);
line += QString("%1,%2").arg(error.severity).arg(error.summary); line += QString("%1,%2").arg(GuiSeverity::toString(error.severity)).arg(error.summary);
mTxtWriter << line << endl; mTxtWriter << line << endl;
} }

View File

@ -35,14 +35,14 @@ ErrorItem::ErrorItem(const ErrorLine &line)
files.append(line.file); files.append(line.file);
lines.append(line.line); lines.append(line.line);
id = line.id; id = line.id;
severity = line.severity; severity = GuiSeverity::fromString(line.severity);
summary = line.summary; summary = line.summary;
message = line.message; message = line.message;
} }
QString ErrorItem::ToString() const QString ErrorItem::ToString() const
{ {
QString str = file + " - " + id + " - " + severity +"\n"; QString str = file + " - " + id + " - " + GuiSeverity::toString(severity) +"\n";
str += summary + "\n"; str += summary + "\n";
str += message + "\n"; str += message + "\n";
for (int i = 0; i < files.size(); i++) for (int i = 0; i < files.size(); i++)

View File

@ -22,12 +22,70 @@
#include <QString> #include <QString>
#include <QStringList> #include <QStringList>
#include <QMetaType> #include <QMetaType>
#include "errorlogger.h"
class ErrorLine; class ErrorLine;
/// @addtogroup GUI /// @addtogroup GUI
/// @{ /// @{
/**
* @brief GUI versions of severity conversions.
* GUI needs its own versions of conversions since GUI uses Qt's QString
* instead of the std::string used by lib/cli.
*/
class GuiSeverity : Severity
{
public:
static QString toString(SeverityType severity)
{
switch (severity)
{
case none:
return "";
case error:
return "error";
case warning:
return "warning";
case style:
return "style";
case performance:
return "performance";
case portability:
return "portability";
case information:
return "information";
case debug:
return "debug";
};
return "???";
}
static SeverityType fromString(const QString &severity)
{
if (severity.isEmpty())
return none;
if (severity == "none")
return none;
if (severity == "error")
return error;
if (severity == "warning")
return warning;
if (severity == "style")
return style;
if (severity == "performance")
return performance;
if (severity == "portability")
return portability;
if (severity == "information")
return information;
if (severity == "debug")
return debug;
return none;
}
};
/** /**
* @brief A class containing error data for one error. * @brief A class containing error data for one error.
* *
@ -54,7 +112,7 @@ public:
QStringList files; QStringList files;
QList<unsigned int> lines; QList<unsigned int> lines;
QString id; QString id;
QString severity; Severity::SeverityType severity;
QString summary; QString summary;
QString message; QString message;
}; };

View File

@ -109,7 +109,7 @@ void ResultsTree::AddErrorItem(const ErrorItem &item)
realfile = tr("Undefined file"); realfile = tr("Undefined file");
} }
bool hide = !mShowTypes[SeverityToShowType(item.severity)]; bool hide = !mShowTypes[SeverityToShowType(GuiSeverity::toString(item.severity))];
//if there is at least one error that is not hidden, we have a visible error //if there is at least one error that is not hidden, we have a visible error
if (!hide) if (!hide)
@ -123,7 +123,7 @@ void ResultsTree::AddErrorItem(const ErrorItem &item)
line.line = item.lines[0]; line.line = item.lines[0];
line.summary = item.summary; line.summary = item.summary;
line.message = item.message; line.message = item.message;
line.severity = item.severity; line.severity = GuiSeverity::toString(item.severity);
//Create the base item for the error and ensure it has a proper //Create the base item for the error and ensure it has a proper
//file item as a parent //file item as a parent
QStandardItem *stditem = AddBacktraceFiles(EnsureFileItem(line.file, hide), QStandardItem *stditem = AddBacktraceFiles(EnsureFileItem(line.file, hide),
@ -137,7 +137,7 @@ void ResultsTree::AddErrorItem(const ErrorItem &item)
//Add user data to that item //Add user data to that item
QMap<QString, QVariant> data; QMap<QString, QVariant> data;
data["hide"] = false; data["hide"] = false;
data["severity"] = SeverityToShowType(item.severity); data["severity"] = SeverityToShowType(GuiSeverity::toString(item.severity));
data["summary"] = item.summary; data["summary"] = item.summary;
data["message"] = item.message; data["message"] = item.message;
data["file"] = item.files[0]; data["file"] = item.files[0];
@ -794,7 +794,7 @@ void ResultsTree::SaveErrors(Report *report, QStandardItem *item)
QVariantMap data = userdata.toMap(); QVariantMap data = userdata.toMap();
ErrorItem item; ErrorItem item;
item.severity = ShowTypeToString(VariantToShowType(data["severity"])); item.severity = GuiSeverity::fromString(ShowTypeToString(VariantToShowType(data["severity"])));
item.summary = data["summary"].toString(); item.summary = data["summary"].toString();
item.message = data["message"].toString(); item.message = data["message"].toString();
item.id = data["id"].toString(); item.id = data["id"].toString();

View File

@ -88,7 +88,7 @@ void ResultsView::Error(const ErrorItem &item)
mErrorsFound = true; mErrorsFound = true;
mUI.mTree->AddErrorItem(item); mUI.mTree->AddErrorItem(item);
emit GotResults(); emit GotResults();
mStatistics->AddItem(ResultsTree::SeverityToShowType(item.severity)); mStatistics->AddItem(ResultsTree::SeverityToShowType(GuiSeverity::toString(item.severity)));
} }
void ResultsView::ShowResults(ShowTypes type, bool show) void ResultsView::ShowResults(ShowTypes type, bool show)

View File

@ -71,7 +71,7 @@ void ThreadResult::reportErr(const ErrorLogger::ErrorMessage &msg)
item.lines = lines; item.lines = lines;
item.summary = QString::fromStdString(msg.shortMessage()); item.summary = QString::fromStdString(msg.shortMessage());
item.message = QString::fromStdString(msg.verboseMessage()); item.message = QString::fromStdString(msg.verboseMessage());
item.severity = QString::fromStdString(Severity::toString(msg._severity)); item.severity = msg._severity;
if (msg._severity != Severity::debug) if (msg._severity != Severity::debug)
emit Error(item); emit Error(item);

View File

@ -76,7 +76,7 @@ void TxtReport::WriteError(const ErrorItem &error)
} }
} }
line += QString("(%1) %2").arg(error.severity).arg(error.summary); line += QString("(%1) %2").arg(GuiSeverity::toString(error.severity)).arg(error.summary);
mTxtWriter << line << endl; mTxtWriter << line << endl;
} }

View File

@ -100,7 +100,9 @@ void XmlReportV1::WriteError(const ErrorItem &error)
const QString line = QString::number(error.lines[error.lines.size() - 1]); const QString line = QString::number(error.lines[error.lines.size() - 1]);
mXmlWriter->writeAttribute(LineAttribute, line); mXmlWriter->writeAttribute(LineAttribute, line);
mXmlWriter->writeAttribute(IdAttribute, error.id); mXmlWriter->writeAttribute(IdAttribute, error.id);
mXmlWriter->writeAttribute(SeverityAttribute, error.severity);
// Don't localize severity so we can read these files
mXmlWriter->writeAttribute(SeverityAttribute, GuiSeverity::toString(error.severity));
const QString message = XmlReport::quoteMessage(error.message); const QString message = XmlReport::quoteMessage(error.message);
mXmlWriter->writeAttribute(MsgAttribute, message); mXmlWriter->writeAttribute(MsgAttribute, message);
mXmlWriter->writeEndElement(); mXmlWriter->writeEndElement();
@ -165,7 +167,7 @@ ErrorItem XmlReportV1::ReadError(QXmlStreamReader *reader)
const int line = attribs.value("", LineAttribute).toString().toUInt(); const int line = attribs.value("", LineAttribute).toString().toUInt();
item.lines.push_back(line); item.lines.push_back(line);
item.id = attribs.value("", IdAttribute).toString(); item.id = attribs.value("", IdAttribute).toString();
item.severity = attribs.value("", SeverityAttribute).toString(); item.severity = GuiSeverity::fromString(attribs.value("", SeverityAttribute).toString());
// NOTE: This dublicates the message to Summary-field. But since // NOTE: This dublicates the message to Summary-field. But since
// old XML format doesn't have separate summary and verbose messages // old XML format doesn't have separate summary and verbose messages

View File

@ -110,7 +110,9 @@ void XmlReportV2::WriteError(const ErrorItem &error)
mXmlWriter->writeStartElement(ErrorElementName); mXmlWriter->writeStartElement(ErrorElementName);
mXmlWriter->writeAttribute(IdAttribute, error.id); mXmlWriter->writeAttribute(IdAttribute, error.id);
mXmlWriter->writeAttribute(SeverityAttribute, error.severity);
// Don't localize severity so we can read these files
mXmlWriter->writeAttribute(SeverityAttribute, GuiSeverity::toString(error.severity));
const QString summary = XmlReport::quoteMessage(error.summary); const QString summary = XmlReport::quoteMessage(error.summary);
mXmlWriter->writeAttribute(MsgAttribute, summary); mXmlWriter->writeAttribute(MsgAttribute, summary);
const QString message = XmlReport::quoteMessage(error.message); const QString message = XmlReport::quoteMessage(error.message);
@ -196,7 +198,7 @@ ErrorItem XmlReportV2::ReadError(QXmlStreamReader *reader)
{ {
QXmlStreamAttributes attribs = reader->attributes(); QXmlStreamAttributes attribs = reader->attributes();
item.id = attribs.value("", IdAttribute).toString(); item.id = attribs.value("", IdAttribute).toString();
item.severity = attribs.value("", SeverityAttribute).toString(); item.severity = GuiSeverity::fromString(attribs.value("", SeverityAttribute).toString());
const QString summary = attribs.value("", MsgAttribute).toString(); const QString summary = attribs.value("", MsgAttribute).toString();
item.summary = XmlReport::unquoteMessage(summary); item.summary = XmlReport::unquoteMessage(summary);
const QString message = attribs.value("", VerboseAttribute).toString(); const QString message = attribs.value("", VerboseAttribute).toString();