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)