File indexing completed on 2024-04-14 03:53:50

0001 /*
0002     SPDX-FileCopyrightText: 2010 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.net>
0003     SPDX-FileContributor: Stephen Kelly <stephen@kdab.com>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-or-later
0006 */
0007 
0008 #ifndef EVENTLOGGERREGISTER_H
0009 #define EVENTLOGGERREGISTER_H
0010 
0011 #include <QList>
0012 
0013 #include <memory>
0014 
0015 #include "proxymodeltestsuite_export.h"
0016 
0017 class ModelEventLogger;
0018 
0019 class PROXYMODELTESTSUITE_EXPORT EventLoggerRegister
0020 {
0021 public:
0022     enum Behaviour {
0023         InstallMsgHandler,
0024         NoInstallMsgHandler,
0025     };
0026 
0027     ~EventLoggerRegister();
0028 
0029     static EventLoggerRegister *instance(Behaviour behaviour = InstallMsgHandler);
0030 
0031     void registerLogger(ModelEventLogger *logger);
0032     void unregisterLogger(ModelEventLogger *logger);
0033 
0034     void writeLogs();
0035 
0036 private:
0037     EventLoggerRegister(Behaviour behaviour);
0038     QList<ModelEventLogger *> m_loggers;
0039 
0040     static EventLoggerRegister *s_instance;
0041 
0042     static std::unique_ptr<EventLoggerRegister> s_destroyer;
0043     Q_DISABLE_COPY(EventLoggerRegister)
0044 };
0045 
0046 #endif