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/QHash>
4#include <QtCore/QObject>
5#include <QtCore/QSet>
6#include <QtCore/QString>
7#include <QtCore/QStringList>
8#include <QtCore/QVariantList>
9#include <QtQmlIntegration/QtQmlIntegration>
10
11class LogViewerController : public QObject
12{
13 Q_OBJECT
14 QML_ELEMENT
15
17 Q_PROPERTY(QString currentLogPath READ currentLogPath NOTIFY currentLogPathChanged)
18 Q_PROPERTY(bool hasLoadedLog READ hasLoadedLog NOTIFY currentLogPathChanged)
19 Q_PROPERTY(QStringList plottableFields READ plottableFields NOTIFY plottableFieldsChanged)
20 Q_PROPERTY(QVariantList fieldRows READ fieldRows NOTIFY fieldRowsChanged)
21 Q_PROPERTY(QStringList selectedFields READ selectedFields NOTIFY selectedFieldsChanged)
22
23public:
24 enum class SourceType {
25 None,
26 TLog,
27 Bin,
28 ULog,
29 };
30 Q_ENUM(SourceType)
31
32 explicit LogViewerController(QObject *parent = nullptr);
34
35 SourceType sourceType() const { return _sourceType; }
36 QString currentLogPath() const { return _currentLogPath; }
37 bool hasLoadedLog() const { return !_currentLogPath.isEmpty(); }
38
39 QStringList plottableFields() const { return _plottableFields; }
40 QVariantList fieldRows() const { return _fieldRows; }
41 QStringList selectedFields() const { return _selectedFields; }
42
43 Q_INVOKABLE void clear();
44 Q_INVOKABLE void openTLog(const QString &path);
45 Q_INVOKABLE void openBinLog(const QString &path);
46 Q_INVOKABLE void openULogFile(const QString &path);
47 Q_INVOKABLE void setPlottableFields(const QStringList &fieldNames);
48 Q_INVOKABLE void clearSelection();
49 Q_INVOKABLE void toggleGroupExpanded(const QString &groupName);
50 Q_INVOKABLE bool isGroupExpanded(const QString &groupName) const;
51 Q_INVOKABLE void setFieldSelected(const QString &fieldName, bool selected);
52 Q_INVOKABLE bool isFieldSelected(const QString &fieldName) const;
55 Q_INVOKABLE QString fieldColor(const QString &fieldName) const;
56 Q_INVOKABLE QString eventColor(const QString &eventType) const;
57
58signals:
64
65private:
66 void _rebuildFieldRows();
67 QString _assignColorForKey(const QString &key) const;
68 void _setLog(SourceType sourceType, const QString &path);
69
70 SourceType _sourceType = SourceType::None;
71 QString _currentLogPath;
72 QStringList _plottableFields;
73 QVariantList _fieldRows;
74 QStringList _selectedFields;
75 QSet<QString> _expandedGroups;
76};
Q_INVOKABLE bool isGroupExpanded(const QString &groupName) const
void plottableFieldsChanged()
Q_INVOKABLE void openTLog(const QString &path)
QStringList plottableFields() const
void currentLogPathChanged()
Q_INVOKABLE void openBinLog(const QString &path)
Q_INVOKABLE void clear()
SourceType sourceType() const
Q_INVOKABLE void setPlottableFields(const QStringList &fieldNames)
Q_INVOKABLE bool isFieldSelected(const QString &fieldName) const
Q_INVOKABLE QString fieldColor(const QString &fieldName) const
QString currentLogPath() const
Q_INVOKABLE void setFieldSelected(const QString &fieldName, bool selected)
QStringList selectedFields() const
Q_INVOKABLE void clearSelection()
Q_INVOKABLE void openULogFile(const QString &path)
Q_INVOKABLE void toggleGroupExpanded(const QString &groupName)
Q_INVOKABLE QString eventColor(const QString &eventType) const
void selectedFieldsChanged()
QVariantList fieldRows() const