refs #432 Originator aware utility class

This commit is contained in:
Klaus Basan
2015-05-28 00:34:42 +02:00
parent a21a42c167
commit a62cf48e18
2 changed files with 86 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
/* Copyright (C) 2015
* swift Project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#include "originatoraware.h"
namespace BlackMisc
{
COriginator COriginatorAware::getCurrentTimestampOriginator() const
{
COriginator o(m_originator);
o.setCurrentUtcTime();
return o;
}
COriginatorAware::COriginatorAware(QObject *object) : m_originator(object->objectName())
{
// if the object name changes we update our origiginator
this->m_originatorConnection = QObject::connect(object, &QObject::objectNameChanged, [this, object]()
{
this->m_originator = COriginator(object->objectName());
});
}
COriginatorAware::~COriginatorAware()
{
QObject::disconnect(m_originatorConnection);
}
} // ns

View File

@@ -0,0 +1,51 @@
/* Copyright (C) 2015
* swift Project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#ifndef BLACKMISC_ORIGINATORAWARE_H
#define BLACKMISC_ORIGINATORAWARE_H
//! \file
#include "blackmiscexport.h"
#include "originator.h"
#include <QObject>
namespace BlackMisc
{
//! Value object encapsulating information about the originiator
class BLACKMISC_EXPORT COriginatorAware
{
public:
//! Get originator
const COriginator &originator() const { return m_originator; }
//! Originator with current timestamp
COriginator getCurrentTimestampOriginator() const;
//! My originator?
bool isMyOriginator(const COriginator &otherOriginator) { return m_originator == otherOriginator; }
protected:
//! Use literal based originator name
COriginatorAware(const QString &originatorName) : m_originator(originatorName) {}
//! Connect with QObject providing then name
COriginatorAware(QObject *nameProvider);
//! Destructor
~COriginatorAware();
private:
COriginator m_originator;
QMetaObject::Connection m_originatorConnection;
};
} // namespace
#endif // guard