46 lines
1.0 KiB
C++
46 lines
1.0 KiB
C++
#include "ircmessagetype.hpp"
|
|
|
|
#include <QMetaObject>
|
|
#include <QMetaEnum>
|
|
|
|
IrcMessageType::MessageType IrcMessageType::getType() const
|
|
{
|
|
return _type;
|
|
}
|
|
|
|
|
|
IrcMessageType IrcMessageType::parse(QString str)
|
|
{
|
|
// QVariant var = QVariant::fromValue(str);
|
|
// if (var.convert(QMetaType::fromType<IrcMessageType>()))
|
|
// return var.value<IrcMessageType>();
|
|
// return IrcMessageType::MessageType::UNKNOWN;
|
|
auto&& meta = QMetaEnum::fromType<IrcMessageType::MessageType>();
|
|
bool ok = false;
|
|
auto value = static_cast<IrcMessageType>(meta.keyToValue(str.toLocal8Bit().data(), &ok));
|
|
if (ok)
|
|
return value;
|
|
auto num = str.toInt(&ok);
|
|
if (ok)
|
|
return num;
|
|
return Unknown();
|
|
}
|
|
|
|
IrcMessageType::IrcMessageType(const IrcMessageType& other)
|
|
: _type(other._type)
|
|
{
|
|
|
|
}
|
|
|
|
IrcMessageType::IrcMessageType(int type)
|
|
: _type(static_cast<MessageType>(type))
|
|
{
|
|
|
|
}
|
|
|
|
QString IrcMessageType::toString() const
|
|
{
|
|
auto&& metaEnum = QMetaEnum::fromType<MessageType>();
|
|
return metaEnum.valueToKey(static_cast<int>(_type));
|
|
}
|