Files
qTier/ircmessagetype.cpp
2024-05-27 13:53:31 -05:00

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));
}