mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-04 00:16:51 +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