QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
StatusTextHandler.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QList>
4#include <QtCore/QObject>
5
6#include "MAVLinkEnums.h"
8
10class QTimer;
11
13{
14public:
15 StatusText(MAV_COMPONENT componentid, MAV_SEVERITY severity, const QString &text);
16
17 bool severityIsError() const;
18
19 MAV_COMPONENT getComponentID() const { return m_compId; }
20 MAV_SEVERITY getSeverity() const { return m_severity; }
21 QString getText() const { return m_text; }
22 QString getFormattedText() const { return m_formatedText; }
23
24 void setFormatedText(const QString &formatedText) { m_formatedText = formatedText; }
25
26private:
27 MAV_COMPONENT m_compId;
28 MAV_SEVERITY m_severity;
29 QString m_text;
30 QString m_formatedText;
31};
32
33class StatusTextHandler : public QObject
34{
35 Q_OBJECT
36
37 enum class MessageType {
38 MessageNone,
39 MessageNormal,
40 MessageWarning,
41 MessageError
42 };
43
44public:
45 explicit StatusTextHandler(QObject *parent = nullptr);
47
48 void mavlinkMessageReceived(const mavlink_message_t &message);
49 void handleHTMLEscapedTextMessage(MAV_COMPONENT componentid, MAV_SEVERITY severity, const QString &text, const QString &description);
50
51 void clearMessages();
52 void resetAllMessages();
54
55 const QList<StatusText*>& messages() const { return m_messages; }
56 QString formattedMessages() const;
57
58 bool messageTypeNone() const { return (m_messageType == MessageType::MessageNone); }
59 bool messageTypeNormal() const { return (m_messageType == MessageType::MessageNormal); }
60 bool messageTypeWarning() const { return (m_messageType == MessageType::MessageWarning); }
61 bool messageTypeError() const { return (m_messageType == MessageType::MessageError); }
62
63 uint32_t getErrorCount() const { return m_errorCount; }
64 uint32_t getErrorCountTotal() const { return m_errorCountTotal; }
65 uint32_t getWarningCount() const { return m_warningCount; }
66 uint32_t getNormalCount() const { return m_normalCount; }
67 uint32_t messageCount() const { return m_messageCount; }
68
69 static QString getMessageText(const mavlink_message_t &message);
70
71signals:
72 void newFormattedMessage(QString message);
73 void textMessageReceived(MAV_COMPONENT componentid, MAV_SEVERITY severity, QString text, QString description);
74 void messageCountChanged(uint32_t newCount);
76 void newErrorMessage(QString message);
77
78private slots:
79 void _chunkedStatusTextTimeout();
80
81private:
82 void _handleStatusText(const mavlink_message_t &message);
83 void _handleTextMessage(uint32_t newCount, MessageType messageType = MessageType::MessageNone);
84 void _chunkedStatusTextCompleted(MAV_COMPONENT compId);
85
86 QTimer *m_chunkedStatusTextTimer = nullptr;
87
88 bool m_multiComp = false;
89 MAV_COMPONENT m_activeComponent = MAV_COMPONENT::MAV_COMPONENT_ENUM_END;
90 uint32_t m_errorCount = 0;
91 uint32_t m_errorCountTotal = 0;
92 uint32_t m_warningCount = 0;
93 uint32_t m_normalCount = 0;
94 uint32_t m_messageCount = 0;
95
96 QVector<StatusText*> m_messages;
97
98 MessageType m_messageType = MessageType::MessageNone;
99
100 typedef struct __ChunkedStatusTextInfo {
101 uint16_t chunkId;
102 MAV_SEVERITY severity;
103 QStringList rgMessageChunks;
104 } ChunkedStatusTextInfo_t;
105
106 QMap<MAV_COMPONENT, ChunkedStatusTextInfo_t> m_chunkedStatusTextInfoMap;
107};
struct __mavlink_message mavlink_message_t
bool messageTypeNone() const
bool messageTypeError() const
void handleHTMLEscapedTextMessage(MAV_COMPONENT componentid, MAV_SEVERITY severity, const QString &text, const QString &description)
const QList< StatusText * > & messages() const
bool messageTypeNormal() const
void newErrorMessage(QString message)
static QString getMessageText(const mavlink_message_t &message)
uint32_t getErrorCount() const
void mavlinkMessageReceived(const mavlink_message_t &message)
void messageCountChanged(uint32_t newCount)
uint32_t getErrorCountTotal() const
void textMessageReceived(MAV_COMPONENT componentid, MAV_SEVERITY severity, QString text, QString description)
uint32_t messageCount() const
uint32_t getWarningCount() const
uint32_t getNormalCount() const
void newFormattedMessage(QString message)
QString formattedMessages() const
void messageTypeChanged()
bool messageTypeWarning() const
MAV_COMPONENT getComponentID() const
bool severityIsError() const
void setFormatedText(const QString &formatedText)
QString getFormattedText() const
QString getText() const
MAV_SEVERITY getSeverity() const