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/QMap>
5#include <QtCore/QObject>
6
7#include "MAVLinkEnums.h"
9
11class QTimer;
12
14{
15public:
16 StatusText(MAV_COMPONENT componentid, MAV_SEVERITY severity, const QString &text);
17
18 bool severityIsError() const;
19
20 MAV_COMPONENT getComponentID() const { return m_compId; }
21 MAV_SEVERITY getSeverity() const { return m_severity; }
22 QString getText() const { return m_text; }
23 QString getFormattedText() const { return m_formatedText; }
24
25 void setFormatedText(const QString &formatedText) { m_formatedText = formatedText; }
26
27private:
28 MAV_COMPONENT m_compId;
29 MAV_SEVERITY m_severity;
30 QString m_text;
31 QString m_formatedText;
32};
33
34class StatusTextHandler : public QObject
35{
36 Q_OBJECT
37
38public:
39 explicit StatusTextHandler(QObject *parent = nullptr);
41
42 void mavlinkMessageReceived(const mavlink_message_t &message);
43 void handleHTMLEscapedTextMessage(MAV_COMPONENT componentid, MAV_SEVERITY severity, const QString &text, const QString &description);
44
45 void clearMessages();
46
47 const QList<StatusText*>& messages() const { return m_messages; }
48 QString formattedMessages() const;
49
50 uint32_t criticalMessageCount() const { return m_criticalMessageCount; }
51
52 static QString getMessageText(const mavlink_message_t &message);
53
54signals:
55 void newFormattedMessage(QString message);
56 void textMessageReceived(MAV_COMPONENT componentid, MAV_SEVERITY severity, QString text, QString description);
58 void newErrorMessage(QString message);
59
60private slots:
61 void _chunkedStatusTextTimeout();
62
63private:
64 void _handleStatusText(const mavlink_message_t &message);
65 void _chunkedStatusTextCompleted(MAV_COMPONENT compId);
66
67 QTimer *m_chunkedStatusTextTimer = nullptr;
68
69 bool m_multiComp = false;
70 MAV_COMPONENT m_activeComponent = MAV_COMPONENT::MAV_COMPONENT_ENUM_END;
71 uint32_t m_criticalMessageCount = 0;
72
73 QVector<StatusText*> m_messages;
74
75 typedef struct __ChunkedStatusTextInfo {
76 uint16_t chunkId;
77 MAV_SEVERITY severity;
78 QStringList rgMessageChunks;
79 } ChunkedStatusTextInfo_t;
80
81 QMap<MAV_COMPONENT, ChunkedStatusTextInfo_t> m_chunkedStatusTextInfoMap;
82};
struct __mavlink_message mavlink_message_t
void criticalMessageCountChanged()
void handleHTMLEscapedTextMessage(MAV_COMPONENT componentid, MAV_SEVERITY severity, const QString &text, const QString &description)
const QList< StatusText * > & messages() const
void newErrorMessage(QString message)
uint32_t criticalMessageCount() const
static QString getMessageText(const mavlink_message_t &message)
void mavlinkMessageReceived(const mavlink_message_t &message)
void textMessageReceived(MAV_COMPONENT componentid, MAV_SEVERITY severity, QString text, QString description)
void newFormattedMessage(QString message)
QString formattedMessages() const
MAV_COMPONENT getComponentID() const
bool severityIsError() const
void setFormatedText(const QString &formatedText)
QString getFormattedText() const
QString getText() const
MAV_SEVERITY getSeverity() const