PrismLauncher/launcher/MessageLevel.cpp
Trial97 c8f23c691a
wrap enum
This should improve the boilerplate needed to define enums with methods

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
2026-05-13 10:18:55 +03:00

48 lines
1.5 KiB
C++

#include "MessageLevel.h"
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 MessageLevel::takeFromLine(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 MessageLevel::takeFromLauncherLine(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;
}