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 
0008 #include "loggingcategory.h"
0009 #include "kdebugsettingsutil.h"
0010 #include <KLocalizedString>
0011 
0012 LoggingCategory::LoggingCategory() = default;
0013 
0014 bool LoggingCategory::operator==(const LoggingCategory &other) const
0015 {
0016     return (description == other.description) && (categoryName == other.categoryName) && (enabled == other.enabled) && (loggingType == other.loggingType)
0017         && (defaultSeverityType == other.defaultSeverityType) && (identifierName == other.identifierName);
0018 }
0019 
0020 bool LoggingCategory::isValid() const
0021 {
0022     return !categoryName.isEmpty() && (loggingType != Undefined);
0023 }
0024 
0025 QString LoggingCategory::createCustomRule() const
0026 {
0027     QString str;
0028     switch (loggingType) {
0029     case All:
0030         str = categoryName + (enabled ? QStringLiteral("=true\n") : QStringLiteral("=false\n"));
0031         break;
0032     case Info:
0033         str = categoryName + QStringLiteral(".info=%1\n").arg(enabled ? QStringLiteral("true") : QStringLiteral("false"));
0034         break;
0035     case Warning:
0036         str = categoryName + QStringLiteral(".warning=%1\n").arg(enabled ? QStringLiteral("true") : QStringLiteral("false"));
0037         break;
0038     case Debug:
0039         str = categoryName + QStringLiteral(".debug=%1\n").arg(enabled ? QStringLiteral("true") : QStringLiteral("false"));
0040         break;
0041     case Critical:
0042         str = categoryName + QStringLiteral(".critical=%1\n").arg(enabled ? QStringLiteral("true") : QStringLiteral("false"));
0043         break;
0044     case Undefined:
0045     case Off:
0046         str = QString();
0047         break;
0048     }
0049     return str;
0050 }
0051 
0052 QString LoggingCategory::generateDisplayRule() const
0053 {
0054     return KDebugSettingsUtil::generateDisplayRule(categoryName, enabled, loggingType);
0055 }
0056 
0057 QString LoggingCategory::createRule() const
0058 {
0059     QString str;
0060     switch (loggingType) {
0061     case Undefined:
0062         break;
0063     case All:
0064         str = categoryName + QLatin1StringView("=true\n");
0065         break;
0066     case Info:
0067         str = categoryName + QLatin1StringView(".info=true\n");
0068         str += categoryName + QLatin1StringView(".warning=true\n");
0069         str += categoryName + QLatin1StringView(".critical=true\n");
0070         str += categoryName + QLatin1StringView(".debug=false\n");
0071         break;
0072     case Warning:
0073         str = categoryName + QLatin1StringView(".info=false\n");
0074         str += categoryName + QLatin1StringView(".debug=false\n");
0075         str += categoryName + QLatin1StringView(".warning=true\n");
0076         str += categoryName + QLatin1StringView(".critical=true\n");
0077         break;
0078     case Debug:
0079         str = categoryName + QLatin1StringView(".info=false\n");
0080         str += categoryName + QLatin1StringView(".debug=true\n");
0081         str += categoryName + QLatin1StringView(".warning=true\n");
0082         str += categoryName + QLatin1StringView(".critical=true\n");
0083         break;
0084     case Critical:
0085         str = categoryName + QLatin1StringView(".info=false\n");
0086         str += categoryName + QLatin1StringView(".debug=false\n");
0087         str += categoryName + QLatin1StringView(".warning=false\n");
0088         str += categoryName + QLatin1StringView(".critical=true\n");
0089         break;
0090     case Off:
0091         str = categoryName + QLatin1StringView(".info=false\n");
0092         str += categoryName + QLatin1StringView(".debug=false\n");
0093         str += categoryName + QLatin1StringView(".warning=false\n");
0094         str += categoryName + QLatin1StringView(".critical=false\n");
0095         break;
0096     }
0097     return str;
0098 }
0099 
0100 QDebug operator<<(QDebug d, const LoggingCategory &cat)
0101 {
0102     d << "customcategories cat: " << cat.description;
0103     d << "logname: " << cat.categoryName;
0104     d << "enabled: " << cat.enabled;
0105     d << "type: " << cat.loggingType;
0106     d << "identifier: " << cat.identifierName;
0107     d << "default category: " << cat.defaultSeverityType;
0108     return d;
0109 }
0110 
0111 QString LoggingCategory::generateToolTip() const
0112 {
0113     QString toopTip = i18n("Category name: %1", categoryName);
0114     if (!identifierName.isEmpty()) {
0115         toopTip += QLatin1Char('\n') + i18n("Identifier: %1", identifierName);
0116     }
0117     toopTip += QLatin1Char('\n') + i18n("Default Severity: %1", convertCategoryTypeToString(defaultSeverityType));
0118     return toopTip;
0119 }
0120 
0121 QString LoggingCategory::convertCategoryTypeToString(LoggingCategory::LoggingType type) const
0122 {
0123     QString str;
0124     switch (type) {
0125     case LoggingCategory::All:
0126         str = i18n("All Debug Messages");
0127         break;
0128     case LoggingCategory::Info:
0129         str = i18n("Info Messages");
0130         break;
0131     case LoggingCategory::Warning:
0132         str = i18n("Warning Messages");
0133         break;
0134     case LoggingCategory::Debug:
0135         str = i18n("Debug Messages");
0136         break;
0137     case LoggingCategory::Critical:
0138         str = i18n("Critical Messages");
0139         break;
0140     case LoggingCategory::Off:
0141         str = i18n("No Debug Messages");
0142         break;
0143     case LoggingCategory::Undefined:
0144         str = i18n("Undefined");
0145         break;
0146     }
0147     return str;
0148 }