From 785df80935d0e0cce539f932527e6f3604cbbea8 Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Sun, 20 Sep 2015 18:50:45 +0100 Subject: [PATCH] refs #467 Worked around a QtDBus bug which prevented CLogPattern from being marshalled. --- src/blackmisc/logpattern.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/blackmisc/logpattern.cpp b/src/blackmisc/logpattern.cpp index 3e4d78d67..0caa53736 100644 --- a/src/blackmisc/logpattern.cpp +++ b/src/blackmisc/logpattern.cpp @@ -267,18 +267,24 @@ namespace BlackMisc void CLogPattern::marshallToDbus(QDBusArgument &argument) const { - auto begin = Iterators::makeTransformIterator(m_severities.begin(), [](CStatusMessage::StatusSeverity s) { return static_cast(s); }); - QList severities = makeRange(begin, m_severities.end()); + // a bug in QtDBus prevents us from marshalling m_severities as a list + quint8 severities = 0; + for (auto s : m_severities) { severities |= (1 << static_cast(s)); } + argument << severities << m_strategy << m_strings.toList(); } void CLogPattern::unmarshallFromDbus(const QDBusArgument &argument) { - QList severities; + quint8 severities; QStringList strings; argument >> severities >> m_strategy >> strings; - auto begin = Iterators::makeTransformIterator(severities.begin(), [](int i) { return static_cast(i); }); - m_severities = QSet::fromList(makeRange(begin, severities.end())); m_strings = strings.toSet(); + + m_severities.clear(); + for (int s : { 0, 1, 2, 3 }) + { + if (severities & (1 << s)) { m_severities.insert(static_cast(s)); } + } } }