messagefactory.cpp | messagefactory.cpp | |||
---|---|---|---|---|
skipping to change at line 34 | skipping to change at line 34 | |||
*************************************************************************** */ | *************************************************************************** */ | |||
#include "messagefactory_p.h" | #include "messagefactory_p.h" | |||
#include "message_p.h" | #include "message_p.h" | |||
#include "message.h" | #include "message.h" | |||
#include "jstrings.h" | #include "jstrings.h" | |||
namespace Jreen { | namespace Jreen { | |||
static const char *message_types[] = { | static const char *message_types[] = { | |||
"chat", | "chat", | |||
"error", | "error", | |||
"groupchat", | "groupchat", | |||
"headline" | "headline", | |||
"normal" | ||||
}; | }; | |||
MessageFactory::MessageFactory(Client *client) : | MessageFactory::MessageFactory(Client *client) : | |||
StanzaFactory(client), | StanzaFactory(client), | |||
m_depth(0) | m_depth(0) | |||
{ | { | |||
clear(); | clear(); | |||
} | } | |||
void MessageFactory::clear() | void MessageFactory::clear() | |||
skipping to change at line 80 | skipping to change at line 81 | |||
p->thread = m_thread.toString(); | p->thread = m_thread.toString(); | |||
return Stanza::Ptr(new Message(*p)); | return Stanza::Ptr(new Message(*p)); | |||
} | } | |||
void MessageFactory::serialize(Stanza *stanza, QXmlStreamWriter *writer) | void MessageFactory::serialize(Stanza *stanza, QXmlStreamWriter *writer) | |||
{ | { | |||
Message *message = static_cast<Message*>(stanza); | Message *message = static_cast<Message*>(stanza); | |||
if (message->subtype() == Message::Invalid) | if (message->subtype() == Message::Invalid) | |||
return; | return; | |||
QString subtype = enumToStr(message->subtype(),message_types); | QLatin1String subtype = enumToStr(message->subtype(),message_types); | |||
writer->writeStartElement(QLatin1String("message")); | writer->writeStartElement(QLatin1String("message")); | |||
writeAttributes(stanza, writer); | writeAttributes(stanza, writer); | |||
writer->writeAttribute(QLatin1String("type"),subtype); | if (subtype != QLatin1String("")) | |||
writer->writeAttribute(QLatin1String("type"), subtype); | ||||
writeLangMap(QLatin1String("subject"),message->subject(),writer); | writeLangMap(QLatin1String("subject"),message->subject(),writer); | |||
writeLangMap(QLatin1String("body"),message->body(),writer); | writeLangMap(QLatin1String("body"),message->body(),writer); | |||
if(!message->thread().isEmpty()) | if(!message->thread().isEmpty()) | |||
writer->writeTextElement(QLatin1String("thread"),message->th read()); | writer->writeTextElement(QLatin1String("thread"),message->th read()); | |||
writePayloads(stanza, writer); | writePayloads(stanza, writer); | |||
writer->writeEndElement(); | writer->writeEndElement(); | |||
} | } | |||
bool MessageFactory::canParse(const QStringRef &name, const QStringRef &uri , const QXmlStreamAttributes &attributes) | bool MessageFactory::canParse(const QStringRef &name, const QStringRef &uri , const QXmlStreamAttributes &attributes) | |||
{ | { | |||
skipping to change at line 109 | skipping to change at line 111 | |||
void MessageFactory::handleStartElement(const QStringRef &name, const QStri ngRef &uri, | void MessageFactory::handleStartElement(const QStringRef &name, const QStri ngRef &uri, | |||
const QXmlStreamAttributes &attributes) | const QXmlStreamAttributes &attributes) | |||
{ | { | |||
Q_UNUSED(uri); | Q_UNUSED(uri); | |||
m_depth++; | m_depth++; | |||
if (m_depth == 1) { | if (m_depth == 1) { | |||
clear(); | clear(); | |||
parseAttributes(attributes); | parseAttributes(attributes); | |||
QStringRef subtype = attributes.value(QLatin1String("type")) ; | QStringRef subtype = attributes.value(QLatin1String("type")) ; | |||
m_subtype = strToEnum<Message::Type>(subtype,message_types); | if (subtype.isEmpty()) | |||
m_subtype = Message::Normal; | ||||
else | ||||
m_subtype = strToEnum<Message::Type>(subtype, messag | ||||
e_types); | ||||
if (m_subtype < 0) | ||||
m_subtype = Message::Invalid; | ||||
} else if(m_depth == 2) { | } else if(m_depth == 2) { | |||
if(name == QLatin1String("body")) | if(name == QLatin1String("body")) | |||
m_state = AtBody; | m_state = AtBody; | |||
else if(name == QLatin1String("subject")) | else if(name == QLatin1String("subject")) | |||
m_state = AtSubject; | m_state = AtSubject; | |||
else if(name == QLatin1String("thread")) | else if(name == QLatin1String("thread")) | |||
m_state = AtThread; | m_state = AtThread; | |||
} | } | |||
} | } | |||
End of changes. 4 change blocks. | ||||
7 lines changed or deleted | 15 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |