File indexing completed on 2024-05-12 05:52:35

0001 /*
0002     SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 
0006 */
0007 #pragma once
0008 
0009 #include "libkdebugsettingscore_export.h"
0010 #include <QDebug>
0011 #include <QList>
0012 #include <QString>
0013 
0014 struct LIBKDEBUGSETTINGSCORE_EXPORT LoggingCategory {
0015     enum LoggingType : char {
0016         All = 0,
0017         Info,
0018         Warning,
0019         Debug,
0020         Critical,
0021         Off,
0022         Undefined,
0023     };
0024 
0025     LoggingCategory();
0026     explicit LoggingCategory(const QString &description, const QString &logName, LoggingType loggingType, const QString &identifier, bool enabled)
0027         : description(description)
0028         , categoryName(logName)
0029         , identifierName(identifier)
0030         , loggingType(loggingType)
0031         , enabled(enabled)
0032     {
0033     }
0034 
0035     using List = QList<LoggingCategory>;
0036     [[nodiscard]] bool operator==(const LoggingCategory &other) const;
0037     [[nodiscard]] bool isValid() const;
0038 
0039     [[nodiscard]] QString createRule() const;
0040     [[nodiscard]] QString createCustomRule() const;
0041     [[nodiscard]] QString generateToolTip() const;
0042     [[nodiscard]] QString generateDisplayRule() const;
0043 
0044     QString description;
0045     QString categoryName;
0046     QString identifierName;
0047     LoggingType loggingType = Info;
0048     LoggingType defaultSeverityType = Info;
0049     bool enabled = true;
0050 
0051 private:
0052     [[nodiscard]] QString convertCategoryTypeToString(LoggingCategory::LoggingType type) const;
0053 };
0054 LIBKDEBUGSETTINGSCORE_EXPORT QDebug operator<<(QDebug debug, const LoggingCategory &cat);
0055 
0056 Q_DECLARE_TYPEINFO(LoggingCategory, Q_RELOCATABLE_TYPE);
0057 
0058 Q_DECLARE_METATYPE(LoggingCategory)
0059 Q_DECLARE_METATYPE(LoggingCategory::LoggingType)