mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-18 11:25:33 +08:00
committed by
Mathew Sutcliffe
parent
a57e640398
commit
fe1a570c39
99
src/blackmisc/statusmessage.cpp
Normal file
99
src/blackmisc/statusmessage.cpp
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
#include "statusmessage.h"
|
||||||
|
#include "blackmiscfreefunctions.h"
|
||||||
|
#include <QMetaEnum>
|
||||||
|
|
||||||
|
namespace BlackMisc
|
||||||
|
{
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Constructor
|
||||||
|
*/
|
||||||
|
CStatusMessage::CStatusMessage(StatusType type, StatusSeverity severity, const QString message)
|
||||||
|
: m_type(type), m_severity(severity), m_message(message), m_timestamp(QDateTime::currentDateTimeUtc())
|
||||||
|
{
|
||||||
|
// void
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* To string
|
||||||
|
*/
|
||||||
|
QString CStatusMessage::convertToQString(bool /** i18n */) const
|
||||||
|
{
|
||||||
|
|
||||||
|
QString s("Index: ");
|
||||||
|
s.append(QString::number(this->m_type));
|
||||||
|
|
||||||
|
s.append(" Severity: ");
|
||||||
|
s.append(QString::number(this->m_severity));
|
||||||
|
|
||||||
|
s.append(" when: ");
|
||||||
|
s.append(this->m_timestamp.toString("yyyy-MM-dd HH:mm::ss"));
|
||||||
|
|
||||||
|
s.append(" ").append(this->m_message);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Metadata
|
||||||
|
*/
|
||||||
|
void CStatusMessage::registerMetadata()
|
||||||
|
{
|
||||||
|
qRegisterMetaType<CStatusMessage>();
|
||||||
|
qDBusRegisterMetaType<CStatusMessage>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Validation Error
|
||||||
|
*/
|
||||||
|
CStatusMessage CStatusMessage::getValidationError(const QString &message)
|
||||||
|
{
|
||||||
|
return CStatusMessage(CStatusMessage::TypeValidation, CStatusMessage::SeverityError, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Validation Unspecific info message
|
||||||
|
*/
|
||||||
|
CStatusMessage CStatusMessage::getInfoMessage(const QString &message)
|
||||||
|
{
|
||||||
|
return CStatusMessage(CStatusMessage::TypeUnspecific, CStatusMessage::SeverityInfo, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Hash
|
||||||
|
*/
|
||||||
|
uint CStatusMessage::getValueHash() const
|
||||||
|
{
|
||||||
|
QList<uint> hashs;
|
||||||
|
hashs << qHash(static_cast<qint32>(this->m_type));
|
||||||
|
hashs << qHash(static_cast<qint32>(this->m_severity));
|
||||||
|
hashs << qHash(this->m_message);
|
||||||
|
hashs << qHash(this->m_timestamp);
|
||||||
|
return BlackMisc::calculateHash(hashs, "CStatusMessage");
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* To DBus
|
||||||
|
*/
|
||||||
|
void CStatusMessage::marshallToDbus(QDBusArgument &arg) const
|
||||||
|
{
|
||||||
|
arg << this->m_message;
|
||||||
|
arg << static_cast<qint32>(this->m_type);
|
||||||
|
arg << static_cast<qint32>(this->m_severity);
|
||||||
|
arg << this->m_timestamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* From DBus
|
||||||
|
*/
|
||||||
|
void CStatusMessage::unmarshallFromDbus(const QDBusArgument &arg)
|
||||||
|
{
|
||||||
|
qint32 type;
|
||||||
|
qint32 severity;
|
||||||
|
arg >> this->m_message;
|
||||||
|
arg >> type;
|
||||||
|
arg >> severity;
|
||||||
|
arg >> m_timestamp;
|
||||||
|
this->m_type = static_cast<StatusType>(type);
|
||||||
|
this->m_severity = static_cast<StatusSeverity>(severity);
|
||||||
|
}
|
||||||
|
}
|
||||||
143
src/blackmisc/statusmessage.h
Normal file
143
src/blackmisc/statusmessage.h
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
#ifndef BLACKMISC_STATUSMESSAGE_H
|
||||||
|
#define BLACKMISC_STATUSMESSAGE_H
|
||||||
|
|
||||||
|
#include "valueobject.h"
|
||||||
|
|
||||||
|
namespace BlackMisc
|
||||||
|
{
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Streamable status message, e.g. from Core -> GUI
|
||||||
|
*/
|
||||||
|
class CStatusMessage : public CValueObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/*!
|
||||||
|
* \brief The StatusType enum
|
||||||
|
*/
|
||||||
|
enum StatusType
|
||||||
|
{
|
||||||
|
TypeUnknown, // not set
|
||||||
|
TypeUnspecific, // intentionally set
|
||||||
|
TypeValidation,
|
||||||
|
TypeTrafficNetwork,
|
||||||
|
TypeSettings,
|
||||||
|
TypeCore
|
||||||
|
};
|
||||||
|
|
||||||
|
enum StatusSeverity
|
||||||
|
{
|
||||||
|
SeverityInfo,
|
||||||
|
SeverityWarning,
|
||||||
|
SeverityError
|
||||||
|
};
|
||||||
|
|
||||||
|
private:
|
||||||
|
StatusType m_type;
|
||||||
|
StatusSeverity m_severity;
|
||||||
|
QString m_message;
|
||||||
|
QDateTime m_timestamp;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/*!
|
||||||
|
* \brief StatusMessage
|
||||||
|
*/
|
||||||
|
CStatusMessage() :
|
||||||
|
m_type(TypeUnknown), m_severity(SeverityInfo) {}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief StatusMessage
|
||||||
|
* \param type
|
||||||
|
* \param severity
|
||||||
|
* \param message
|
||||||
|
*/
|
||||||
|
CStatusMessage(StatusType type, StatusSeverity severity, const QString &message);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Status type
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
StatusType getType() const
|
||||||
|
{
|
||||||
|
return this->m_type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Status severity
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
StatusSeverity getSeverity() const
|
||||||
|
{
|
||||||
|
return this->m_severity;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Message
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
QString getMessage() const
|
||||||
|
{
|
||||||
|
return this->m_message;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Value hash
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
virtual uint getValueHash() const;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief As QVariant
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
QVariant asQVariant() const
|
||||||
|
{
|
||||||
|
return QVariant::fromValue(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Register metadata
|
||||||
|
*/
|
||||||
|
static void registerMetadata();
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Validation error
|
||||||
|
* \param message
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
static CStatusMessage getValidationError(const QString &message);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Unspecific info message
|
||||||
|
* \param message
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
static CStatusMessage getInfoMessage(const QString &message);
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/*!
|
||||||
|
* \brief Marshall to DBus
|
||||||
|
* \param argument
|
||||||
|
*/
|
||||||
|
virtual void marshallToDbus(QDBusArgument &arg) const;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Unmarshall from DBus
|
||||||
|
* \param argument
|
||||||
|
*/
|
||||||
|
virtual void unmarshallFromDbus(const QDBusArgument &arg);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Convert to String
|
||||||
|
* \param i18n
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
virtual QString convertToQString(bool i18n = false) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_DECLARE_METATYPE(BlackMisc::CStatusMessage)
|
||||||
|
|
||||||
|
#endif // guard
|
||||||
93
src/blackmisc/statusmessages.cpp
Normal file
93
src/blackmisc/statusmessages.cpp
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
#include "statusmessages.h"
|
||||||
|
#include "statusmessage.h"
|
||||||
|
|
||||||
|
namespace BlackMisc
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Messages by type
|
||||||
|
*/
|
||||||
|
CStatusMessages CStatusMessages::findByType(CStatusMessage::StatusType type) const
|
||||||
|
{
|
||||||
|
CStatusMessages sm;
|
||||||
|
foreach(CStatusMessage message, this->m_messages)
|
||||||
|
{
|
||||||
|
if (message.getType() == type)
|
||||||
|
{
|
||||||
|
sm.m_messages.append(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Messages by severity
|
||||||
|
*/
|
||||||
|
CStatusMessages CStatusMessages::findBySeverity(CStatusMessage::StatusSeverity severity) const
|
||||||
|
{
|
||||||
|
CStatusMessages sm;
|
||||||
|
foreach(CStatusMessage message, this->m_messages)
|
||||||
|
{
|
||||||
|
if (message.getSeverity() == severity)
|
||||||
|
{
|
||||||
|
sm.m_messages.append(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sm;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Size
|
||||||
|
*/
|
||||||
|
int CStatusMessages::size() const
|
||||||
|
{
|
||||||
|
return this->m_messages.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Append
|
||||||
|
*/
|
||||||
|
void CStatusMessages::append(const CStatusMessage &message)
|
||||||
|
{
|
||||||
|
return this->m_messages.append(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Metadata
|
||||||
|
*/
|
||||||
|
void CStatusMessages::registerMetadata()
|
||||||
|
{
|
||||||
|
qRegisterMetaType<CStatusMessages>();
|
||||||
|
qDBusRegisterMetaType<CStatusMessages>();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* To DBus
|
||||||
|
*/
|
||||||
|
void CStatusMessages::marshallToDbus(QDBusArgument &arg) const
|
||||||
|
{
|
||||||
|
arg << this->m_messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* From DBus
|
||||||
|
*/
|
||||||
|
void CStatusMessages::unmarshallFromDbus(const QDBusArgument &arg)
|
||||||
|
{
|
||||||
|
arg >> this->m_messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* To string
|
||||||
|
*/
|
||||||
|
QString CStatusMessages::convertToQString(bool i18n) const
|
||||||
|
{
|
||||||
|
QString s = "{";
|
||||||
|
foreach(CStatusMessage message, this->m_messages)
|
||||||
|
{
|
||||||
|
if (s.length() > 1) s.append(", ");
|
||||||
|
s.append(message.toQString(i18n));
|
||||||
|
}
|
||||||
|
s.append("}");
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
}
|
||||||
128
src/blackmisc/statusmessages.h
Normal file
128
src/blackmisc/statusmessages.h
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
#ifndef BLACKMISC_STATUSMESSAGES_H
|
||||||
|
#define BLACKMISC_STATUSMESSAGES_H
|
||||||
|
|
||||||
|
#include "valueobject.h"
|
||||||
|
#include "statusmessage.h"
|
||||||
|
|
||||||
|
namespace BlackMisc
|
||||||
|
{
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Status messages, e.g. from Core -> GUI
|
||||||
|
*/
|
||||||
|
class CStatusMessages : public CValueObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
private:
|
||||||
|
QList<CStatusMessage> m_messages;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/*!
|
||||||
|
* \brief StatusMessage
|
||||||
|
*/
|
||||||
|
CStatusMessages() {}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Find by type
|
||||||
|
* \param type
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
CStatusMessages findByType(CStatusMessage::StatusType type) const;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Find by type
|
||||||
|
* \param type
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
CStatusMessages findBySeverity(CStatusMessage::StatusSeverity severity) const;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Size
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
int size() const;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Append
|
||||||
|
* \param message
|
||||||
|
*/
|
||||||
|
void append(const CStatusMessage &message);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Is empty
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
bool isEmpty() const
|
||||||
|
{
|
||||||
|
return this->m_messages.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Get messages
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
const QList<CStatusMessage> &getMessages() const
|
||||||
|
{
|
||||||
|
return this->m_messages;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Message at
|
||||||
|
* \param index
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
const CStatusMessage &at(int index) const
|
||||||
|
{
|
||||||
|
return this->m_messages.at(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Value hash
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
virtual uint getValueHash() const
|
||||||
|
{
|
||||||
|
return qHash(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief As QVariant
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
virtual QVariant asQVariant() const
|
||||||
|
{
|
||||||
|
return QVariant::fromValue(*this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Register metadata of unit and quantity
|
||||||
|
*/
|
||||||
|
static void registerMetadata();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/*!
|
||||||
|
* \brief Marshall to DBus
|
||||||
|
* \param argument
|
||||||
|
*/
|
||||||
|
virtual void marshallToDbus(QDBusArgument &arg) const;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Unmarshall from DBus
|
||||||
|
* \param argument
|
||||||
|
*/
|
||||||
|
virtual void unmarshallFromDbus(const QDBusArgument &arg);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Convert to String
|
||||||
|
* \param i18n
|
||||||
|
* \return
|
||||||
|
*/
|
||||||
|
virtual QString convertToQString(bool i18n = false) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_DECLARE_METATYPE(BlackMisc::CStatusMessages)
|
||||||
|
|
||||||
|
#endif // guard
|
||||||
Reference in New Issue
Block a user