1// Copyright (C) 2016 Pelagicore AG
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QQMLLOGGINGCATEGORY_P_H
5#define QQMLLOGGINGCATEGORY_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtCore/qobject.h>
19#include <QtCore/qstring.h>
20#include <QtCore/qloggingcategory.h>
21
22#include <QtQml/qqmlparserstatus.h>
23#include <QtQml/qqml.h>
24#include <QtCore/private/qglobal_p.h>
25
26#include <memory>
27
28QT_BEGIN_NAMESPACE
29
30class QQmlLoggingCategory : public QObject, public QQmlParserStatus
31{
32 Q_OBJECT
33 Q_INTERFACES(QQmlParserStatus)
34
35 Q_PROPERTY(QString name READ name WRITE setName)
36 Q_PROPERTY(DefaultLogLevel defaultLogLevel READ defaultLogLevel WRITE setDefaultLogLevel REVISION(2, 12))
37 QML_NAMED_ELEMENT(LoggingCategory)
38 QML_ADDED_IN_VERSION(2, 8)
39
40public:
41 enum DefaultLogLevel {
42 Debug = QtDebugMsg,
43 Info = QtInfoMsg,
44 Warning = QtWarningMsg,
45 Critical = QtCriticalMsg,
46 Fatal = QtFatalMsg
47 };
48 Q_ENUM(DefaultLogLevel);
49
50 QQmlLoggingCategory(QObject *parent = nullptr);
51 virtual ~QQmlLoggingCategory();
52
53 DefaultLogLevel defaultLogLevel() const;
54 void setDefaultLogLevel(DefaultLogLevel defaultLogLevel);
55 QString name() const;
56 void setName(const QString &name);
57
58 QLoggingCategory *category() const;
59
60 void classBegin() override;
61 void componentComplete() override;
62
63private:
64 QByteArray m_name;
65 std::unique_ptr<QLoggingCategory> m_category;
66 DefaultLogLevel m_defaultLogLevel = Debug;
67 bool m_initialized;
68};
69
70QT_END_NAMESPACE
71
72#endif // QQMLLOGGINGCATEGORY_H
73

source code of qtdeclarative/src/qml/qml/qqmlloggingcategory_p.h