QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
LoggingCategoryModel.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QAbstractItemModel>
4#include <QtCore/QAbstractListModel>
5#include <QtCore/QList>
6#include <QtCore/QObject>
7#include <QtCore/QString>
8#include <QtQmlIntegration/QtQmlIntegration>
9
10class QGCLoggingCategoryItem : public QObject
11{
12 Q_OBJECT
13
14 Q_PROPERTY(int logLevel READ logLevel WRITE setLogLevel NOTIFY logLevelChanged)
15
16public:
17 QGCLoggingCategoryItem(const QString& shortCategory_, const QString& fullCategory_, int logLevel_,
18 QObject* parent = nullptr);
19
20 bool enabled() const { return _logLevel <= QtDebugMsg; }
21
22 void setEnabled(bool enabled);
23
24 int logLevel() const { return _logLevel; }
25
26 void setLogLevel(int level);
27 void setLogLevelFromManager(int level);
28
30 QString fullCategory;
31
32signals:
35
36private:
37 int _logLevel = QtWarningMsg;
38 bool _updatingFromManager = false;
39};
40
41class LoggingCategoryFlatModel : public QAbstractListModel
42{
43 Q_OBJECT
44 QML_ELEMENT
45 QML_UNCREATABLE("")
46
47public:
48 enum class Roles
49 {
50 ShortNameRole = Qt::UserRole + 1,
54 };
55 Q_ENUM(Roles)
56
57 explicit LoggingCategoryFlatModel(QObject* parent = nullptr);
58
59 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
60 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
61 bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override;
62 Qt::ItemFlags flags(const QModelIndex& index) const override;
63 QHash<int, QByteArray> roleNames() const override;
64
66 QGCLoggingCategoryItem* findByFullName(const QString& fullName) const;
67
68 int count() const { return _items.count(); }
69
70 QGCLoggingCategoryItem* at(int i) const { return _items.at(i); }
71
72private:
73 QList<QGCLoggingCategoryItem*> _items;
74};
75
76// ---------------------------------------------------------------------------
77// Tree model (proper QAbstractItemModel for TreeView)
78// ---------------------------------------------------------------------------
79
81{
84 QList<LoggingCategoryTreeNode*> children;
85 bool expanded = false;
86
88};
89
90class LoggingCategoryTreeModel : public QAbstractItemModel
91{
93 QML_ELEMENT
95
96public:
97 enum class Roles
98 {
99 ShortNameRole = Qt::UserRole + 1,
103 };
104 Q_ENUM(Roles)
105
106 explicit LoggingCategoryTreeModel(QObject* parent = nullptr);
108
109 QModelIndex index(int row, int column, const QModelIndex& parent = QModelIndex()) const override;
110 QModelIndex parent(const QModelIndex& child) const override;
111 int rowCount(const QModelIndex& parent = QModelIndex()) const override;
112 int columnCount(const QModelIndex& parent = QModelIndex()) const override;
113 QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
114 bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole) override;
115 Qt::ItemFlags flags(const QModelIndex& index) const override;
116 QHash<int, QByteArray> roleNames() const override;
117 bool hasChildren(const QModelIndex& parent = QModelIndex()) const override;
118
119 void insertCategory(const QStringList& pathSegments, const QString& fullCategory, QGCLoggingCategoryItem* item);
120
121private:
122 LoggingCategoryTreeNode* nodeFromIndex(const QModelIndex& index) const;
123 LoggingCategoryTreeNode* findOrCreateIntermediateNode(LoggingCategoryTreeNode* parent, const QString& segment,
124 const QString& fullPrefix);
125 int insertionIndex(LoggingCategoryTreeNode* parent, const QString& name) const;
126
128};
int rowCount(const QModelIndex &parent=QModelIndex()) const override
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
QHash< int, QByteArray > roleNames() const override
void insertSorted(QGCLoggingCategoryItem *item)
QGCLoggingCategoryItem * findByFullName(const QString &fullName) const
QGCLoggingCategoryItem * at(int i) const
Qt::ItemFlags flags(const QModelIndex &index) const override
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
Qt::ItemFlags flags(const QModelIndex &index) const override
bool hasChildren(const QModelIndex &parent=QModelIndex()) const override
QModelIndex parent(const QModelIndex &child) const override
int columnCount(const QModelIndex &parent=QModelIndex()) const override
~LoggingCategoryTreeModel() override
QHash< int, QByteArray > roleNames() const override
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
void insertCategory(const QStringList &pathSegments, const QString &fullCategory, QGCLoggingCategoryItem *item)
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
int rowCount(const QModelIndex &parent=QModelIndex()) const override
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
LoggingCategoryTreeNode * parent
QList< LoggingCategoryTreeNode * > children
QGCLoggingCategoryItem * item