File indexing completed on 2024-05-05 05:48:56

0001 /*
0002     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QList>
0010 #include <QMetaEnum>
0011 #include <QString>
0012 
0013 #include "logMode.h"
0014 #include "logModeFactory.h"
0015 
0016 class LogModeFactory;
0017 
0018 class LogMode;
0019 class LogModeAction;
0020 class LogLevel;
0021 
0022 class Reader;
0023 
0024 class GlobalsPrivate;
0025 
0026 class Globals : QObject
0027 {
0028     Q_OBJECT
0029 
0030 public:
0031     static Globals &instance();
0032 
0033     ~Globals() override;
0034 
0035     enum LogLevelIds {
0036         EMERGENCY_LOG_LEVEL_ID = 0,
0037         ALERT_LOG_LEVEL_ID,
0038         CRITICAL_LOG_LEVEL_ID,
0039         ERROR_LOG_LEVEL_ID,
0040         WARNING_LOG_LEVEL_ID,
0041         NOTICE_LOG_LEVEL_ID,
0042         INFORMATION_LOG_LEVEL_ID,
0043         DEBUG_LOG_LEVEL_ID,
0044         NONE_LOG_LEVEL_ID,
0045 
0046         LOG_LEVEL_NUM
0047     };
0048     Q_ENUM(LogLevelIds)
0049 
0050     enum DateFormat { LongFormat = 0, ShortFormat, PreciseFormat };
0051 
0052     QString formatDate(DateFormat format, const QDateTime &dateTime) const;
0053 
0054     QHash<LogLevelIds, LogLevel *> logLevels() const;
0055 
0056     LogLevel *noLogLevel() const;
0057     LogLevel *debugLogLevel() const;
0058     LogLevel *informationLogLevel() const;
0059     LogLevel *noticeLogLevel() const;
0060     LogLevel *warningLogLevel() const;
0061     LogLevel *errorLogLevel() const;
0062     LogLevel *criticalLogLevel() const;
0063     LogLevel *alertLogLevel() const;
0064     LogLevel *emergencyLogLevel() const;
0065 
0066     LogLevel *logLevelByPriority(int id);
0067 
0068     QMetaEnum &logLevelsMetaEnum() const;
0069 
0070     /**
0071      * Allow to add a new Reader for a new log mode
0072      */
0073     void registerLogModeFactory(LogModeFactory *logModeFactory);
0074 
0075     QList<LogMode *> logModes() const;
0076 
0077     QList<LogModeAction *> logModeActions() const;
0078 
0079     LogMode *findLogMode(const QString &logModeName);
0080 
0081     void recreateLogModeActions();
0082 
0083 private:
0084     explicit Globals();
0085 
0086     void setupLogLevels();
0087 
0088     GlobalsPrivate *const d;
0089 };