QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
LogEntry.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QDateTime>
4#include <QtCore/QString>
5#include <QtQmlIntegration/QtQmlIntegration>
6
7struct LogEntry
8{
9 Q_GADGET
10 QML_ANONYMOUS
11 Q_PROPERTY(QDateTime timestamp MEMBER timestamp FINAL)
12 Q_PROPERTY(Level level MEMBER level FINAL)
13 Q_PROPERTY(QString category MEMBER category FINAL)
14 Q_PROPERTY(QString message MEMBER message FINAL)
15 Q_PROPERTY(QString file MEMBER file FINAL)
16 Q_PROPERTY(QString function MEMBER function FINAL)
17 Q_PROPERTY(QString formatted MEMBER formatted FINAL)
18 Q_PROPERTY(int line MEMBER line FINAL)
19
20public:
21 enum Level
22 {
23 Debug = 0,
24 Info = 1,
27 Fatal = 4,
28 };
29 Q_ENUM(Level)
30
31 LogEntry() = default;
32 LogEntry(const LogEntry&) = default;
33 LogEntry(LogEntry&&) noexcept = default;
34 LogEntry& operator=(const LogEntry&) = default;
35 LogEntry& operator=(LogEntry&&) noexcept = default;
36
37 QDateTime timestamp;
39 QString category;
40 QString message;
41 QString file;
42 QString function;
43 QString formatted;
44 Qt::HANDLE threadId = nullptr;
45 int line = 0;
46
47 [[nodiscard]] QString levelLabel() const;
48 void buildFormatted();
49 [[nodiscard]] static Level fromQtMsgType(QtMsgType type);
50
51 // Shared role definitions for all models displaying LogEntry data
65
75 Q_ENUM(Column)
76
77 [[nodiscard]] static QHash<int, QByteArray> roleNames();
78 [[nodiscard]] QVariant roleData(int role) const;
79 [[nodiscard]] QVariant columnDisplayData(int column) const;
80 [[nodiscard]] static QVariant columnHeaderData(int section);
81};
82
83// Expose LogEntry enums to QML under the uppercase "LogEntry" name.
84// Q_NAMESPACE + QML_NAMED_ELEMENT registers as a namespace (not a value type),
85// so the lowercase-name warning does not apply.
87{
88Q_NAMESPACE
89QML_NAMED_ELEMENT(LogEntry)
90QML_FOREIGN_NAMESPACE(LogEntry)
91}
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