mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-12-28 06:34:27 +00:00
This sets our compiler requirements to gcc 11 and clang 13. If we forgo the use of `using enum` we can drop to gcc 10 and clang 10 but that means using `MessageLevel::Enum::Unknown` for direct enum access Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
74 lines
2.3 KiB
C++
74 lines
2.3 KiB
C++
#include "MessageLevel.h"
|
|
|
|
MessageLevel MessageLevel::fromName(const QString& levelName)
|
|
{
|
|
QString name = levelName.toUpper();
|
|
if (name == "LAUNCHER")
|
|
return MessageLevel::Launcher;
|
|
else if (name == "TRACE")
|
|
return MessageLevel::Trace;
|
|
else if (name == "DEBUG")
|
|
return MessageLevel::Debug;
|
|
else if (name == "INFO")
|
|
return MessageLevel::Info;
|
|
else if (name == "MESSAGE")
|
|
return MessageLevel::Message;
|
|
else if (name == "WARNING" || name == "WARN")
|
|
return MessageLevel::Warning;
|
|
else if (name == "ERROR" || name == "CRITICAL")
|
|
return MessageLevel::Error;
|
|
else if (name == "FATAL")
|
|
return MessageLevel::Fatal;
|
|
// Skip PrePost, it's not exposed to !![]!
|
|
// Also skip StdErr and StdOut
|
|
else
|
|
return MessageLevel::Unknown;
|
|
}
|
|
|
|
MessageLevel MessageLevel::fromQtMsgType(const QtMsgType& type)
|
|
{
|
|
switch (type) {
|
|
case QtDebugMsg:
|
|
return MessageLevel::Debug;
|
|
case QtInfoMsg:
|
|
return MessageLevel::Info;
|
|
case QtWarningMsg:
|
|
return MessageLevel::Warning;
|
|
case QtCriticalMsg:
|
|
return MessageLevel::Error;
|
|
case QtFatalMsg:
|
|
return MessageLevel::Fatal;
|
|
default:
|
|
return MessageLevel::Unknown;
|
|
}
|
|
}
|
|
|
|
/* Get message level from a line. Line is modified if it was successful. */
|
|
MessageLevel messageLevelFromLine(QString& line)
|
|
{
|
|
// Level prefix
|
|
int endmark = line.indexOf("]!");
|
|
if (line.startsWith("!![") && endmark != -1) {
|
|
auto level = MessageLevel::fromName(line.left(endmark).mid(3));
|
|
line = line.mid(endmark + 2);
|
|
return level;
|
|
}
|
|
return MessageLevel::Unknown;
|
|
}
|
|
|
|
/* Get message level from a line from the launcher log. Line is modified if it was successful. */
|
|
MessageLevel messageLevelFromLauncherLine(QString& line)
|
|
{
|
|
// Level prefix
|
|
int startMark = 0;
|
|
while (startMark < line.size() && (line[startMark].isDigit() || line[startMark].isSpace() || line[startMark] == '.'))
|
|
++startMark;
|
|
int endmark = line.indexOf(":");
|
|
if (startMark < line.size() && endmark != -1) {
|
|
auto level = MessageLevel::fromName(line.left(endmark).mid(startMark));
|
|
line = line.mid(endmark + 2);
|
|
return level;
|
|
}
|
|
return MessageLevel::Unknown;
|
|
}
|