QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
LogEntry.cc
Go to the documentation of this file.
1#include "LogEntry.h"
2
3#include <QtCore/QByteArray>
4#include <QtCore/QHash>
5#include <QtCore/QVariant>
6
7QString LogEntry::levelLabel() const
8{
9 static const QString labels[] = {
10 QStringLiteral("D"),
11 QStringLiteral("I"),
12 QStringLiteral("W"),
13 QStringLiteral("C"),
14 QStringLiteral("F"),
15 };
16 const int idx = static_cast<int>(level);
17 if (idx >= 0 && idx < static_cast<int>(std::size(labels))) {
18 return labels[idx];
19 }
20 return QStringLiteral("?");
21}
22
24{
25 formatted =
26 QStringLiteral("%1 [%2] %3: %4").arg(timestamp.toString(Qt::ISODateWithMs), levelLabel(), category, message);
27}
28
30{
31 switch (type) {
32 case QtDebugMsg:
33 return Debug;
34 case QtInfoMsg:
35 return Info;
36 case QtWarningMsg:
37 return Warning;
38 case QtCriticalMsg:
39 return Critical;
40 case QtFatalMsg:
41 return Fatal;
42 }
43 return Debug;
44}
45
46QHash<int, QByteArray> LogEntry::roleNames()
47{
48 static const QHash<int, QByteArray> roles{
49 {Qt::DisplayRole, "display"},
50 {TimestampRole, "timestamp"},
51 {LevelRole, "level"},
52 {LevelLabelRole, "levelLabel"},
53 {CategoryRole, "category"},
54 {MessageRole, "message"},
55 {FormattedRole, "formatted"},
56 {FileRole, "file"},
57 {FunctionRole, "function"},
58 {LineRole, "line"},
59 {ThreadIdRole, "threadId"},
60 };
61 return roles;
62}
63
64QVariant LogEntry::roleData(int role) const
65{
66 switch (role) {
67 case FormattedRole:
68 return formatted;
69 case TimestampRole:
70 return timestamp;
71 case LevelRole:
72 return static_cast<int>(level);
73 case LevelLabelRole:
74 return levelLabel();
75 case CategoryRole:
76 return category;
77 case MessageRole:
78 return message;
79 case FileRole:
80 return file;
81 case FunctionRole:
82 return function;
83 case LineRole:
84 return line;
85 case ThreadIdRole:
86 return QString::number(reinterpret_cast<quintptr>(threadId), 16);
87 }
88 return {};
89}
90
91QVariant LogEntry::columnDisplayData(int column) const
92{
93 switch (static_cast<Column>(column)) {
94 case TimestampColumn:
95 return timestamp.toString(QStringLiteral("hh:mm:ss.zzz"));
96 case LevelColumn:
97 return levelLabel();
98 case CategoryColumn:
99 return category;
100 case MessageColumn:
101 return message;
102 case SourceColumn:
103 if (file.isEmpty()) {
104 return QString();
105 }
106 return line > 0 ? QStringLiteral("%1:%2").arg(file).arg(line) : file;
107 case ColumnCount:
108 break;
109 }
110 return {};
111}
112
113QVariant LogEntry::columnHeaderData(int section)
114{
115 switch (static_cast<Column>(section)) {
116 case TimestampColumn:
117 return QStringLiteral("Time");
118 case LevelColumn:
119 return QStringLiteral("Level");
120 case CategoryColumn:
121 return QStringLiteral("Category");
122 case MessageColumn:
123 return QStringLiteral("Message");
124 case SourceColumn:
125 return QStringLiteral("Source");
126 case ColumnCount:
127 break;
128 }
129 return {};
130}
131
static QVariant columnHeaderData(int section)
Definition LogEntry.cc:113
@ LevelRole
Definition LogEntry.h:55
@ LineRole
Definition LogEntry.h:62
@ LevelLabelRole
Definition LogEntry.h:56
@ FileRole
Definition LogEntry.h:60
@ TimestampRole
Definition LogEntry.h:54
@ ThreadIdRole
Definition LogEntry.h:63
@ CategoryRole
Definition LogEntry.h:57
@ MessageRole
Definition LogEntry.h:58
@ FormattedRole
Definition LogEntry.h:59
@ FunctionRole
Definition LogEntry.h:61
QString file
Definition LogEntry.h:41
QString function
Definition LogEntry.h:42
int line
Definition LogEntry.h:45
QString message
Definition LogEntry.h:40
QVariant columnDisplayData(int column) const
Definition LogEntry.cc:91
QDateTime timestamp
Definition LogEntry.h:37
QVariant roleData(int role) const
Definition LogEntry.cc:64
QString levelLabel() const
Definition LogEntry.cc:7
QString formatted
Definition LogEntry.h:43
static QHash< int, QByteArray > roleNames()
Definition LogEntry.cc:46
static Level fromQtMsgType(QtMsgType type)
Definition LogEntry.cc:29
Level level
Definition LogEntry.h:38
QString category
Definition LogEntry.h:39
@ MessageColumn
Definition LogEntry.h:72
@ TimestampColumn
Definition LogEntry.h:68
@ ColumnCount
Definition LogEntry.h:73
@ CategoryColumn
Definition LogEntry.h:70
@ LevelColumn
Definition LogEntry.h:69
@ SourceColumn
Definition LogEntry.h:71
@ Critical
Definition LogEntry.h:26
@ Warning
Definition LogEntry.h:25
Qt::HANDLE threadId
Definition LogEntry.h:44
void buildFormatted()
Definition LogEntry.cc:23