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();
43 if (!index.isValid() || index.row() >= _items.count()) {
47 auto* item = _items.at(index.row());
50 item->setEnabled(value.toBool());
51 emit dataChanged(index, index, {
static_cast<int>(
EnabledRole)});
60 auto f = QAbstractListModel::flags(index);
61 if (index.isValid()) {
62 f |= Qt::ItemIsEditable;
71 {Qt::DisplayRole,
"display"},
83 while (pos < _items.count() && _items.at(pos)->fullCategory < item->
fullCategory) {
86 beginInsertRows(QModelIndex(), pos, pos);
87 _items.insert(pos, item);
91 const int row = _items.indexOf(item);
93 const QModelIndex idx = index(row);
94 emit dataChanged(idx, idx, {
static_cast<int>(
EnabledRole)});
101 for (
auto* item : _items) {
102 if (item->fullCategory == fullName) {
119 if (!
index.isValid()) {
130 auto* parentNode = nodeFromIndex(
parent);
134 return createIndex(row, 0, parentNode->children.at(row));
139 if (!
child.isValid()) {
143 auto* parentNode = node->
parent;
144 if (!parentNode || parentNode == &_root) {
172 if (!
index.isValid()) {
177 auto* item = node->
item;
183 case Qt::DisplayRole:
185 return item->shortCategory;
187 return item->fullCategory;
189 return item->enabled();
199 if (!
index.isValid()) {
204 auto* item = node->
item;
220 auto f = QAbstractItemModel::flags(
index);
221 if (
index.isValid()) {
222 f |= Qt::ItemIsEditable;
231 {Qt::DisplayRole,
"display"},
234 {
static_cast<int>(
EnabledRole),
"categoryEnabled"},
244 for (
auto*
child : std::as_const(node->children)) {
279 node->parent = parentNode;
283 const int pos = insertionIndex(parentNode,
segment);
290 auto*
p = node->parent ? node->parent : &_root;
291 const int row =
p->
children.indexOf(node);
330 auto*
p = node->parent ? node->parent : &_root;
331 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
void forEachItem(const std::function< void(QGCLoggingCategoryItem *)> &fn)
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