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/