File indexing completed on 2024-05-12 05:52:34
0001 /* 0002 SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 0006 */ 0007 0008 #include "kdebugsettingsloadingcategories.h" 0009 #include "jobs/loadcategoriesjob.h" 0010 #include "kdebugsettingsutil.h" 0011 #include <QDir> 0012 #include <QLibraryInfo> 0013 #include <QStandardPaths> 0014 0015 KDebugSettingsLoadingCategories::KDebugSettingsLoadingCategories() = default; 0016 0017 KDebugSettingsLoadingCategories::~KDebugSettingsLoadingCategories() = default; 0018 0019 void KDebugSettingsLoadingCategories::readQtLoggingFile() 0020 { 0021 mCategoriesList.clear(); 0022 const QString envPath = QStandardPaths::locate(QStandardPaths::GenericConfigLocation, QStringLiteral("QtProject/qtlogging.ini")); 0023 if (!envPath.isEmpty()) { 0024 readCategoriesFiles(envPath); 0025 } else { 0026 const QString dataPath = QDir(QLibraryInfo::path(QLibraryInfo::DataPath)).absoluteFilePath(QStringLiteral("qtlogging.ini")); 0027 readCategoriesFiles(dataPath); 0028 } 0029 } 0030 0031 void KDebugSettingsLoadingCategories::readCategoriesFiles(const QString &path) 0032 { 0033 // KDE debug categories area 0034 const QString confAreasFile = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("qlogging-categories6/kde.categories")); 0035 if (!confAreasFile.isEmpty()) { 0036 KDebugSettingsUtil::readLoggingCategories(confAreasFile, mCategoriesList, false); 0037 } 0038 0039 mRenameCategoriesList.clear(); 0040 // Load *.renamecategories file in QStandardPaths::ConfigLocation for kde apps. 0041 const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::ConfigLocation, QString(), QStandardPaths::LocateDirectory) 0042 + QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QStringLiteral("qlogging-categories6/"), QStandardPaths::LocateDirectory); 0043 for (const QString &dir : dirs) { 0044 const QStringList fileNames = QDir(dir).entryList(QStringList() << QStringLiteral("*.renamecategories")); 0045 for (const QString &file : fileNames) { 0046 mRenameCategoriesList.append(KDebugSettingsUtil::readRenameCategories(dir + file)); 0047 } 0048 } 0049 // TODO add load rename file from external kde apps. 0050 const QStringList dirs2 = 0051 QStandardPaths::locateAll(QStandardPaths::GenericConfigLocation, QStringLiteral("qdebug.categories/"), QStandardPaths::LocateDirectory); 0052 // qDebug() << " dirs 2 " << dirs2; 0053 for (const QString &dir : dirs2) { 0054 const QStringList fileNames = QDir(dir).entryList(QStringList() << QStringLiteral("*.renamecategories")); 0055 for (const QString &file : fileNames) { 0056 mRenameCategoriesList.append(KDebugSettingsUtil::readRenameCategories(dir + file)); 0057 } 0058 } 0059 0060 // Load *.categories file in QStandardPaths::ConfigLocation for kde apps. 0061 for (const QString &dir : dirs) { 0062 const QStringList fileNames = QDir(dir).entryList(QStringList() << QStringLiteral("*.categories")); 0063 for (const QString &file : fileNames) { 0064 if (file != QLatin1StringView("kde.categories")) { 0065 KDebugSettingsUtil::readLoggingCategories(dir + file, mCategoriesList, true); 0066 } 0067 } 0068 } 0069 0070 // Load *.categories files in qdebug.categories for external KDE apps. 0071 for (const QString &dir : dirs2) { 0072 const QStringList fileNames = QDir(dir).entryList(QStringList() << QStringLiteral("*.categories")); 0073 for (const QString &file : fileNames) { 0074 KDebugSettingsUtil::readLoggingCategories(dir + QLatin1Char('/') + file, mCategoriesList, true); 0075 } 0076 } 0077 0078 const QByteArray rulesFilePath = qgetenv("QT_LOGGING_CONF"); 0079 if (!rulesFilePath.isEmpty()) { 0080 // const QList<KDebugSettingsUtil::LoadLoggingCategory> envCategories = KDebugSettingsUtil::readLoggingQtCategories(QString::fromLatin1(rulesFilePath)); 0081 // TODO 0082 } 0083 0084 mEnvironmentrules = QString::fromLatin1(qgetenv("QT_LOGGING_RULES")); 0085 // qt logging.ini 0086 LoadCategoriesJob job; 0087 job.setFileName(path); 0088 job.setCategories(mCategoriesList); 0089 job.setRenamedCategories(mRenameCategoriesList); 0090 job.start(); 0091 0092 mCustomCategories = job.customCategories(); 0093 mQtKdeCategories = job.qtKdeCategories(); 0094 mFoundOverrideRule = job.foundOverrideRule(); 0095 } 0096 0097 bool KDebugSettingsLoadingCategories::foundOverrideRule() const 0098 { 0099 return mFoundOverrideRule; 0100 } 0101 0102 LoggingCategory::List KDebugSettingsLoadingCategories::qtKdeCategories() const 0103 { 0104 return mQtKdeCategories; 0105 } 0106 0107 LoggingCategory::List KDebugSettingsLoadingCategories::customCategories() const 0108 { 0109 return mCustomCategories; 0110 } 0111 0112 KdeLoggingCategory::List KDebugSettingsLoadingCategories::categoriesList() const 0113 { 0114 return mCategoriesList; 0115 } 0116 0117 RenameCategory::List KDebugSettingsLoadingCategories::renameCategoriesList() const 0118 { 0119 return mRenameCategoriesList; 0120 } 0121 0122 QString KDebugSettingsLoadingCategories::environmentrules() const 0123 { 0124 return mEnvironmentrules; 0125 }