LeechCraft
0.6.70-17609-g3dde4097dd
Modular cross-platform feature rich live environment.
Loading...
Searching...
No Matches
loggingfilter.cpp
Go to the documentation of this file.
1
/**********************************************************************
2
* LeechCraft - modular cross-platform feature rich internet client.
3
* Copyright (C) 2006-2014 Georg Rudoy
4
*
5
* Distributed under the Boost Software License, Version 1.0.
6
* (See accompanying file LICENSE or copy at https://www.boost.org/LICENSE_1_0.txt)
7
**********************************************************************/
8
9
#include "
loggingfilter.h
"
10
#include <QLoggingCategory>
11
12
namespace
LC::Util
13
{
14
struct
LoggingFilter::Context
15
{
16
Categories
ToDisable_
;
17
QHash<QLoggingCategory*, QList<QtMsgType>>
Disabled_
{};
18
QLoggingCategory::CategoryFilter
PreviousFilter_
{};
19
};
20
21
QList<LoggingFilter::Context>
LoggingFilter::ContextStack_;
22
23
LoggingFilter::LoggingFilter
(
const
Categories
& cats)
24
{
25
ContextStack_.push_back ({ .ToDisable_ = cats });
26
ContextStack_.back ().PreviousFilter_ = QLoggingCategory::installFilter (&Filter);
27
}
28
29
LoggingFilter::~LoggingFilter
()
30
{
31
const
auto
& context = ContextStack_.takeLast ();
32
for
(
const
auto
& [cat, levels] : context.Disabled_.asKeyValueRange ())
33
for
(
const
auto
level : levels)
34
cat->setEnabled (level,
true
);
35
36
QLoggingCategory::installFilter (context.PreviousFilter_);
37
}
38
39
void
LoggingFilter::Filter (QLoggingCategory *category)
40
{
41
auto
& context = ContextStack_.back ();
42
43
if
(context.PreviousFilter_)
44
context.PreviousFilter_ (category);
45
46
for
(
const
auto
level : context.ToDisable_.value (QLatin1String { category->categoryName () }))
47
if
(category->isEnabled (level))
48
{
49
category->setEnabled (level,
false
);
50
context.Disabled_ [category] << level;
51
}
52
}
53
}
LC::Util::LoggingFilter::Categories
QHash< QLatin1String, QList< QtMsgType > > Categories
Definition
loggingfilter.h:19
LC::Util::LoggingFilter::LoggingFilter
LoggingFilter(const Categories &cats)
Definition
loggingfilter.cpp:23
LC::Util::LoggingFilter::~LoggingFilter
~LoggingFilter()
Definition
loggingfilter.cpp:29
QList
Definition
ianrulesstorage.h:14
loggingfilter.h
LC::Util
Definition
icoreproxy.h:34
LC::Util::LoggingFilter::Context
Definition
loggingfilter.cpp:15
LC::Util::LoggingFilter::Context::ToDisable_
Categories ToDisable_
Definition
loggingfilter.cpp:16
LC::Util::LoggingFilter::Context::PreviousFilter_
QLoggingCategory::CategoryFilter PreviousFilter_
Definition
loggingfilter.cpp:18
LC::Util::LoggingFilter::Context::Disabled_
QHash< QLoggingCategory *, QList< QtMsgType > > Disabled_
Definition
loggingfilter.cpp:17
src
util
sys
loggingfilter.cpp
Generated by
1.13.2