diff --git a/src/blackmisc/network/network.h b/src/blackmisc/network/network.h index 0fdcf7b40..638c4f405 100644 --- a/src/blackmisc/network/network.h +++ b/src/blackmisc/network/network.h @@ -24,6 +24,7 @@ #include "blackmisc/network/ecosystemlist.h" #include "blackmisc/network/entityflags.h" #include "blackmisc/network/fsdsetup.h" +#include "blackmisc/network/rawfsdmessage.h" #include "blackmisc/network/role.h" #include "blackmisc/network/rolelist.h" #include "blackmisc/network/remotefile.h" diff --git a/src/blackmisc/network/rawfsdmessage.cpp b/src/blackmisc/network/rawfsdmessage.cpp new file mode 100644 index 000000000..216a8d3a7 --- /dev/null +++ b/src/blackmisc/network/rawfsdmessage.cpp @@ -0,0 +1,67 @@ +/* Copyright (C) 2016 + * 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 "blackmisc/network/rawfsdmessage.h" +#include "blackmisc/logcategory.h" +#include "blackmisc/logcategorylist.h" +#include "blackmisc/propertyindex.h" +#include "blackmisc/statusmessage.h" +#include "blackmisc/stringutils.h" +#include "blackmisc/variant.h" + +#include +#include + +using namespace BlackMisc; + +namespace BlackMisc +{ + namespace Network + { + CRawFsdMessage::CRawFsdMessage(const QString &rawMessage) + : m_rawMessage(rawMessage) {} + + QString CRawFsdMessage::convertToQString(bool i18n) const + { + Q_UNUSED(i18n); + static const QString s("%1 %2"); + return s.arg(m_receptionTime.toString("dd.MM.yy HH:mm:ss"), m_rawMessage); + } + + CVariant CRawFsdMessage::propertyByIndex(const BlackMisc::CPropertyIndex &index) const + { + if (index.isMyself()) { return CVariant::from(*this); } + ColumnIndex i = index.frontCasted(); + switch (i) + { + case IndexReceptionTime: + return CVariant::fromValue(this->m_rawMessage); + case IndexRawMessage: + return CVariant::fromValue(this->m_receptionTime); + default: + return CValueObject::propertyByIndex(index); + } + } + + void CRawFsdMessage::setPropertyByIndex(const CPropertyIndex &index, const CVariant &variant) + { + if (index.isMyself()) { (*this) = variant.to(); return; } + ColumnIndex i = index.frontCasted(); + switch (i) + { + case IndexRawMessage: + this->setRawMessage(variant.value()); + break; + default: + CValueObject::setPropertyByIndex(index, variant); + break; + } + } + } // namespace +} // namespace diff --git a/src/blackmisc/network/rawfsdmessage.h b/src/blackmisc/network/rawfsdmessage.h new file mode 100644 index 000000000..a076b0239 --- /dev/null +++ b/src/blackmisc/network/rawfsdmessage.h @@ -0,0 +1,80 @@ +/* Copyright (C) 2018 + * 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. + */ + +//! \file + +#ifndef BLACKMISC_NETWORK_RAWFSDMESSAGE_H +#define BLACKMISC_NETWORK_RAWFSDMESSAGE_H + +#include "blackmisc/blackmiscexport.h" +#include "blackmisc/metaclass.h" +#include "blackmisc/statusmessagelist.h" +#include "blackmisc/propertyindex.h" +#include "blackmisc/valueobject.h" +#include "blackmisc/variant.h" + +#include +#include +#include + +namespace BlackMisc +{ + namespace Network + { + //! Value object for a raw FSD message + class BLACKMISC_EXPORT CRawFsdMessage : public CValueObject + { + public: + //! Properties by index + enum ColumnIndex + { + IndexReceptionTime = BlackMisc::CPropertyIndex::GlobalIndexCRawFsdMessage, + IndexRawMessage + }; + + //! Default constructor. + CRawFsdMessage() {} + + //! Constructor. + CRawFsdMessage(const QString &rawMessage); + + //! Get raw message + const QString &getRawMessage() const { return m_rawMessage; } + + //! Set raw message + void setRawMessage(const QString &rawMessage) { m_rawMessage = rawMessage; } + + //! Get reception time + QDateTime getReceptionTime() const; + + //! \copydoc BlackMisc::Mixin::Index::propertyByIndex + CVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const; + + //! \copydoc BlackMisc::Mixin::Index::setPropertyByIndex + void setPropertyByIndex(const BlackMisc::CPropertyIndex &index, const CVariant &variant); + + //! \copydoc BlackMisc::Mixin::String::toQString() + QString convertToQString(bool i18n = false) const; + + private: + QString m_rawMessage; + QDateTime m_receptionTime = QDateTime::currentDateTime(); + + BLACK_METACLASS( + CRawFsdMessage, + BLACK_METAMEMBER(rawMessage), + BLACK_METAMEMBER(receptionTime) + ); + }; + } // namespace +} // namespace + +Q_DECLARE_METATYPE(BlackMisc::Network::CRawFsdMessage) + +#endif // guard diff --git a/src/blackmisc/network/registermetadatanetwork.cpp b/src/blackmisc/network/registermetadatanetwork.cpp index 9bb4d35cd..3537b0aaa 100644 --- a/src/blackmisc/network/registermetadatanetwork.cpp +++ b/src/blackmisc/network/registermetadatanetwork.cpp @@ -23,6 +23,7 @@ namespace BlackMisc CEcosystemList::registerMetadata(); CEntityFlags::registerMetadata(); CFsdSetup::registerMetadata(); + CRawFsdMessage::registerMetadata(); CRemoteFile::registerMetadata(); CRemoteFileList::registerMetadata(); CRole::registerMetadata(); diff --git a/src/blackmisc/propertyindex.h b/src/blackmisc/propertyindex.h index c7e83c131..c1832b579 100644 --- a/src/blackmisc/propertyindex.h +++ b/src/blackmisc/propertyindex.h @@ -125,6 +125,7 @@ namespace BlackMisc GlobalIndexCUrlLog = 6800, GlobalIndexCRemoteFile = 6900, GlobalIndexCEcosystem = 7000, + GlobalIndexCRawFsdMessage = 7100, GlobalIndexCAircraftModel = 8000, GlobalIndexCSimulatedAircraft = 8100, GlobalIndexCTextMessage = 8200,