refs #336 CStatusMessage keeps track of which objects have handled it, to avoid duplicate handlings of the same message.

This commit is contained in:
Mathew Sutcliffe
2014-10-12 20:28:13 +01:00
parent 09685e8b37
commit 8992bd734c
5 changed files with 41 additions and 2 deletions

View File

@@ -86,6 +86,12 @@ namespace BlackMisc
//! Message may already have been handled directly
bool isRedundant() const { return this->m_redundant; }
//! Mark the message as having been handled by the given object
void markAsHandledBy(const QObject *object) const;
//! Returns true if the message was marked as having been handled by the given object
bool wasHandledBy(const QObject *object) const;
//! Severity
void setSeverity(StatusSeverity severity) { this->m_severity = severity; }
@@ -118,11 +124,19 @@ namespace BlackMisc
QString m_message;
QDateTime m_timestamp;
bool m_redundant = false;
mutable QVector<quintptr> m_handledByObjects;
};
} // namespace
BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::CStatusMessage, (o.m_category, o.m_severity, o.m_message, o.m_timestamp, o.m_redundant))
BLACK_DECLARE_TUPLE_CONVERSION(BlackMisc::CStatusMessage, (
o.m_category,
o.m_severity,
o.m_message,
o.m_timestamp,
o.m_redundant,
attr(o.m_handledByObjects, flags<DisabledForHashing | DisabledForJson | DisabledForComparison | DisabledForMarshalling>())
))
Q_DECLARE_METATYPE(BlackMisc::CStatusMessage)
#endif // guard