QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
LogViewerController.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4#include <QtCore/QSet>
5#include <QtCore/QString>
6#include <QtCore/QStringList>
7#include <QtCore/QVariantList>
8#include <QtQmlIntegration/QtQmlIntegration>
9
10class LogViewerController : public QObject
11{
12 Q_OBJECT
13 QML_ELEMENT
14
15 Q_PROPERTY(SourceType sourceType READ sourceType NOTIFY sourceTypeChanged)
16 Q_PROPERTY(QString currentLogPath READ currentLogPath NOTIFY currentLogPathChanged)
17 Q_PROPERTY(bool hasLoadedLog READ hasLoadedLog NOTIFY currentLogPathChanged)
18 Q_PROPERTY(QString statusText READ statusText NOTIFY statusTextChanged)
19 Q_PROPERTY(QVariantList fieldRows READ fieldRows NOTIFY fieldRowsChanged)
20 Q_PROPERTY(QStringList selectedFields READ selectedFields NOTIFY selectedFieldsChanged)
21
22public:
23 enum class SourceType {
24 None,
25 TLog,
26 Bin,
27 ULog,
28 };
29 Q_ENUM(SourceType)
30
31 explicit LogViewerController(QObject *parent = nullptr);
33
34 SourceType sourceType() const { return _sourceType; }
35 QString currentLogPath() const { return _currentLogPath; }
36 bool hasLoadedLog() const { return !_currentLogPath.isEmpty(); }
37 QString statusText() const { return _statusText; }
38 QVariantList fieldRows() const { return _fieldRows; }
39 QStringList selectedFields() const { return _selectedFields; }
40
41 Q_INVOKABLE void clear();
42 Q_INVOKABLE void openTLog(const QString &path);
43 Q_INVOKABLE void openBinLog(const QString &path);
44 Q_INVOKABLE void openULogFile(const QString &path);
45 Q_INVOKABLE void setPlottableFields(const QStringList &fieldNames);
46 Q_INVOKABLE void clearSelection();
47 Q_INVOKABLE void toggleGroupExpanded(const QString &groupName);
48 Q_INVOKABLE bool isGroupExpanded(const QString &groupName) const;
49 Q_INVOKABLE void setFieldSelected(const QString &fieldName, bool selected);
50 Q_INVOKABLE bool isFieldSelected(const QString &fieldName) const;
53 Q_INVOKABLE QString fieldColor(const QString &fieldName) const;
54 Q_INVOKABLE QString eventColor(const QString &eventType) const;
55 Q_INVOKABLE QString modeColor(const QString &modeName) const;
56 Q_INVOKABLE QStringList modeLegendEntries(const QVariantList &modeSegments) const;
57
58signals:
64
65private:
66 void _rebuildFieldRows();
67 QString _assignColorForKey(const QString &key) const;
68 void _setLog(SourceType sourceType, const QString &path, const QString &statusText);
69
70 SourceType _sourceType = SourceType::None;
71 QString _currentLogPath;
72 QString _statusText;
73 QStringList _plottableFields;
74 QVariantList _fieldRows;
75 QStringList _selectedFields;
76 QSet<QString> _expandedGroups;
77};
void currentLogPathChanged()
void selectedFieldsChanged()