File indexing completed on 2024-05-12 05:52:34
0001 /* 0002 SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 0006 */ 0007 0008 #pragma once 0009 0010 #include "kdeloggingcategory.h" 0011 #include "libkdebugsettingscore_export.h" 0012 #include "loggingcategory.h" 0013 #include "renamecategory.h" 0014 #include <QDebug> 0015 #include <QString> 0016 0017 namespace KDebugSettingsUtil 0018 { 0019 struct LIBKDEBUGSETTINGSCORE_EXPORT LineLoggingQtCategory { 0020 LineLoggingQtCategory() = default; 0021 0022 enum LoggingType { 0023 Unknown = 0, 0024 Info, 0025 Warning, 0026 Debug, 0027 Critical, 0028 All, 0029 }; 0030 0031 [[nodiscard]] bool isValid() const 0032 { 0033 return !logName.isEmpty(); 0034 } 0035 0036 [[nodiscard]] bool operator==(const LineLoggingQtCategory &other) const 0037 { 0038 return (enabled == other.enabled) && (type == other.type) && (logName == other.logName); 0039 } 0040 0041 bool enabled = true; 0042 LoggingType type = Unknown; 0043 QString logName; 0044 }; 0045 0046 struct LIBKDEBUGSETTINGSCORE_EXPORT LoadLoggingCategory { 0047 enum Status { 0048 Enabled = 0, 0049 Disabled = 1, 0050 UnknownStatus = 2, 0051 }; 0052 0053 enum LogType { 0054 Unknown = 0, 0055 Off, 0056 Info, 0057 Warning, 0058 Debug, 0059 Critical, 0060 All, 0061 }; 0062 0063 LoadLoggingCategory() 0064 { 0065 for (int i = LoadLoggingCategory::Unknown; i <= LoadLoggingCategory::All; ++i) { 0066 loggingTypes.insert(static_cast<LoadLoggingCategory::LogType>(i), UnknownStatus); 0067 } 0068 } 0069 0070 using List = QList<LoadLoggingCategory>; 0071 0072 bool isValid() const 0073 { 0074 return !logName.isEmpty(); 0075 } 0076 0077 [[nodiscard]] bool operator==(const LoadLoggingCategory &other) const 0078 { 0079 // qDebug() << " logname " << logName << " other.logName :" << other.logName; 0080 return (logName == other.logName) && (loggingTypes == other.loggingTypes); 0081 } 0082 0083 QString logName; 0084 QMap<LoadLoggingCategory::LogType, LoadLoggingCategory::Status> loggingTypes; 0085 }; 0086 0087 LIBKDEBUGSETTINGSCORE_EXPORT void readLoggingCategories(const QString &filename, KdeLoggingCategory::List &categoriesList, bool checkCategoryList = false); 0088 0089 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT KdeLoggingCategory parseLineKdeLoggingCategory(QString line, const QString &filename); 0090 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT KdeLoggingCategory::List readLoggingCategoriesForInserting(const QString &filename, 0091 KdeLoggingCategory::List &categoriesList); 0092 0093 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT QList<LoadLoggingCategory> readLoggingQtCategories(const QString &filename); 0094 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT KDebugSettingsUtil::LineLoggingQtCategory parseLineLoggingQtCategory(const QString &line); 0095 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT RenameCategory parseRenameCategory(QString line, const QString &filename); 0096 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT RenameCategory::List readRenameCategories(const QString &filename); 0097 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT LoggingCategory::LoggingType convertCategoryTypeFromString(const QString &str); 0098 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT QString convertCategoryTypeToString(LoggingCategory::LoggingType type); 0099 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT QString qtFileName(); 0100 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT bool hasWritableGroups(); 0101 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT QString defaultWritableGroupPath(); 0102 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT QStringList groupFileList(); 0103 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT LoggingCategory convertRuleStrToLoggingCategory(const QString &ruleStr); 0104 [[nodiscard]] LIBKDEBUGSETTINGSCORE_EXPORT QString generateDisplayRule(const QString &categoryName, bool state, LoggingCategory::LoggingType type); 0105 } 0106 0107 Q_DECLARE_METATYPE(KDebugSettingsUtil::LoadLoggingCategory::LogType) 0108 0109 Q_DECLARE_METATYPE(KDebugSettingsUtil::LineLoggingQtCategory::LoggingType)