File indexing completed on 2024-05-12 05:52:36
0001 /* 0002 SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "kdeapplicationtreeview.h" 0008 #include "kdeapplicationlistviewdelegate.h" 0009 #include "model/kdeapplicationloggingcategorymodel.h" 0010 #include "model/kdeapplicationloggingcategoryproxymodel.h" 0011 #include <QHeaderView> 0012 0013 KDEApplicationTreeView::KDEApplicationTreeView(QWidget *parent) 0014 : QTreeView(parent) 0015 , mKdeApplicationLoggingCategoryProxyModel(new KDEApplicationLoggingCategoryProxyModel(this)) 0016 { 0017 header()->hide(); 0018 setRootIsDecorated(false); 0019 setAlternatingRowColors(true); 0020 setSelectionBehavior(QAbstractItemView::SelectRows); 0021 setSelectionMode(ExtendedSelection); 0022 setEditTriggers(AllEditTriggers); 0023 setUniformRowHeights(true); 0024 } 0025 0026 KDEApplicationTreeView::~KDEApplicationTreeView() = default; 0027 0028 void KDEApplicationTreeView::setLoggingCategoryModel(KDEApplicationLoggingCategoryModel *newLoggingCategoryModel) 0029 { 0030 mKdeApplicationLoggingCategoryModel = newLoggingCategoryModel; 0031 mKdeApplicationLoggingCategoryModel->setObjectName(QLatin1StringView("mKdeApplicationLoggingCategoryModel")); 0032 0033 mKdeApplicationLoggingCategoryProxyModel->setSourceModel(mKdeApplicationLoggingCategoryModel); 0034 setModel(mKdeApplicationLoggingCategoryProxyModel); 0035 // Hide column when we have model. 0036 hideColumn(KDEApplicationLoggingCategoryModel::LoggingTypeRole); 0037 hideColumn(KDEApplicationLoggingCategoryModel::CategoryRole); 0038 setItemDelegateForColumn(KDEApplicationLoggingCategoryModel::LoggingTypeStrRole, new KDEApplicationListViewDelegate(this)); 0039 resizeColumnToContents(KDEApplicationLoggingCategoryModel::DescriptionRole); 0040 } 0041 0042 void KDEApplicationTreeView::setFilterRuleStr(const QString &str) 0043 { 0044 mKdeApplicationLoggingCategoryProxyModel->setFilterText(str); 0045 } 0046 0047 void KDEApplicationTreeView::selectAllDebugCategories() 0048 { 0049 LoggingCategory::List lst; 0050 for (int i = 0; i < mKdeApplicationLoggingCategoryProxyModel->rowCount(); ++i) { 0051 QModelIndex index = mKdeApplicationLoggingCategoryProxyModel->mapToSource( 0052 mKdeApplicationLoggingCategoryProxyModel->index(i, KDEApplicationLoggingCategoryModel::CategoryRole)); 0053 auto cat = index.data().value<LoggingCategory>(); 0054 cat.loggingType = LoggingCategory::All; 0055 lst.append(cat); 0056 } 0057 if (!lst.isEmpty()) { 0058 mKdeApplicationLoggingCategoryModel->replaceCategories(lst); 0059 } 0060 } 0061 0062 void KDEApplicationTreeView::deSelectAllDebugCategories() 0063 { 0064 LoggingCategory::List lst; 0065 for (int i = 0; i < mKdeApplicationLoggingCategoryProxyModel->rowCount(); ++i) { 0066 const QModelIndex index = mKdeApplicationLoggingCategoryProxyModel->mapToSource( 0067 mKdeApplicationLoggingCategoryProxyModel->index(i, KDEApplicationLoggingCategoryModel::CategoryRole)); 0068 auto cat = index.data().value<LoggingCategory>(); 0069 cat.loggingType = LoggingCategory::Info; 0070 lst.append(cat); 0071 } 0072 if (!lst.isEmpty()) { 0073 mKdeApplicationLoggingCategoryModel->replaceCategories(lst); 0074 } 0075 } 0076 0077 void KDEApplicationTreeView::deSelectAllMessagesCategories() 0078 { 0079 LoggingCategory::List lst; 0080 for (int i = 0; i < mKdeApplicationLoggingCategoryProxyModel->rowCount(); ++i) { 0081 const QModelIndex index = mKdeApplicationLoggingCategoryProxyModel->mapToSource( 0082 mKdeApplicationLoggingCategoryProxyModel->index(i, KDEApplicationLoggingCategoryModel::CategoryRole)); 0083 auto cat = index.data().value<LoggingCategory>(); 0084 cat.loggingType = LoggingCategory::Off; 0085 lst.append(cat); 0086 } 0087 if (!lst.isEmpty()) { 0088 mKdeApplicationLoggingCategoryModel->replaceCategories(lst); 0089 } 0090 } 0091 0092 void KDEApplicationTreeView::insertCategories(const LoggingCategory::List &list) 0093 { 0094 mKdeApplicationLoggingCategoryModel->insertCategories(list); 0095 } 0096 0097 void KDEApplicationTreeView::restoreToDefault() 0098 { 0099 LoggingCategory::List lst; 0100 for (int i = 0; i < mKdeApplicationLoggingCategoryProxyModel->rowCount(); ++i) { 0101 const QModelIndex index = mKdeApplicationLoggingCategoryProxyModel->mapToSource( 0102 mKdeApplicationLoggingCategoryProxyModel->index(i, KDEApplicationLoggingCategoryModel::CategoryRole)); 0103 auto cat = index.data().value<LoggingCategory>(); 0104 cat.loggingType = cat.defaultSeverityType; 0105 lst.append(cat); 0106 } 0107 if (!lst.isEmpty()) { 0108 mKdeApplicationLoggingCategoryModel->replaceCategories(lst); 0109 } 0110 } 0111 0112 LoggingCategory::List KDEApplicationTreeView::rules(bool forceSavingAllRules) const 0113 { 0114 LoggingCategory::List lst; 0115 for (int i = 0; i < mKdeApplicationLoggingCategoryProxyModel->rowCount(); ++i) { 0116 const QModelIndex index = mKdeApplicationLoggingCategoryProxyModel->mapToSource( 0117 mKdeApplicationLoggingCategoryProxyModel->index(i, KDEApplicationLoggingCategoryModel::CategoryRole)); 0118 auto cat = index.data().value<LoggingCategory>(); 0119 if (forceSavingAllRules || (cat.loggingType != cat.defaultSeverityType)) { 0120 cat.enabled = false; 0121 if (cat.isValid()) { 0122 lst.append(cat); 0123 } 0124 } 0125 } 0126 return lst; 0127 } 0128 0129 #include "moc_kdeapplicationtreeview.cpp"