13 return parent.isValid() ? 0 : _items.count();
20 if (!index.isValid() || index.row() >= _items.count()) {
24 const auto* item = _items.at(index.row());
29 return item->fullCategory;
31 return item->shortCategory;
33 return item->enabled();
35 return item->logLevel();
45 if (!index.isValid() || index.row() >= _items.count()) {
49 auto* item = _items.at(index.row());
52 item->setEnabled(value.toBool());
58 item->setLogLevel(value.toInt());
68 auto f = QAbstractListModel::flags(index);
69 if (index.isValid()) {
70 f |= Qt::ItemIsEditable;
79 {Qt::DisplayRole,
"display"},
92 while (pos < _items.count() && _items.at(pos)->fullCategory < item->
fullCategory) {
95 beginInsertRows(QModelIndex(), pos, pos);
96 _items.insert(pos, item);
100 const int row = _items.indexOf(item);
102 const QModelIndex idx = index(row);
110 for (
auto* item : _items) {
111 if (item->fullCategory == fullName) {
128 if (!
index.isValid()) {
139 auto* parentNode = nodeFromIndex(
parent);
143 return createIndex(row, 0, parentNode->children.at(row));
148 if (!
child.isValid()) {
152 auto* parentNode = node->
parent;
153 if (!parentNode || parentNode == &_root) {
181 if (!
index.isValid()) {
186 auto* item = node->
item;
192 case Qt::DisplayRole:
194 return item->shortCategory;
196 return item->fullCategory;
198 return item->enabled();
200 return item->logLevel();
210 if (!
index.isValid()) {
215 auto* item = node->
item;
227 item->setLogLevel(value.toInt());
237 auto f = QAbstractItemModel::flags(
index);
238 if (
index.isValid()) {
239 f |= Qt::ItemIsEditable;
248 {Qt::DisplayRole,
"display"},
282 node->parent = parentNode;
286 const int pos = insertionIndex(parentNode,
segment);
293 auto*
p = node->parent ? node->parent : &_root;
294 const int row =
p->
children.indexOf(node);
333 auto*
p = node->parent ? node->parent : &_root;
334 const int row =
p->
children.indexOf(node);
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
LoggingCategoryFlatModel(QObject *parent=nullptr)
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
LoggingCategoryTreeModel(QObject *parent=nullptr)
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
void setEnabled(bool enabled)
LoggingCategoryTreeNode * parent
QList< LoggingCategoryTreeNode * > children
QGCLoggingCategoryItem * item