From: Manuel Nickschas Date: Thu, 4 Oct 2007 22:43:41 +0000 (+0000) Subject: Make Message a proper class rather than a struct (i.e. use setters/getters and X-Git-Tag: 0.1.0~147 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=2ee32e7f7707349d12c98181bbe6842f6d19f60e Make Message a proper class rather than a struct (i.e. use setters/getters and private members). I am going to add more methods to it, and it's just bad style to do that to a struct, I think. --- diff --git a/src/client/client.cpp b/src/client/client.cpp index 7b715bd1..b561fd12 100644 --- a/src/client/client.cpp +++ b/src/client/client.cpp @@ -369,13 +369,13 @@ void Client::recvNetworkState(QString net, QVariant state) { } void Client::recvMessage(const Message &msg) { - Buffer *b = buffer(msg.buffer); + Buffer *b = buffer(msg.buffer()); Buffer::ActivityLevel level = Buffer::OtherActivity; - if(msg.type == Message::Plain || msg.type == Message::Notice){ + if(msg.type() == Message::Plain || msg.type() == Message::Notice){ level |= Buffer::NewMessage; } - if(msg.flags & Message::Highlight){ + if(msg.flags() & Message::Highlight){ level |= Buffer::Highlight; } emit bufferActivity(level, b); diff --git a/src/client/client.h b/src/client/client.h index 011601f5..2496c668 100644 --- a/src/client/client.h +++ b/src/client/client.h @@ -29,6 +29,7 @@ #include "buffer.h" #include "message.h" + class AbstractUi; class BufferTreeModel; class QtGui; diff --git a/src/common/message.cpp b/src/common/message.cpp index 837dc35a..9875473a 100644 --- a/src/common/message.cpp +++ b/src/common/message.cpp @@ -21,9 +21,52 @@ #include "message.h" #include +Message::Message(BufferId __buffer, Type __type, QString __text, QString __sender, quint8 __flags) + : _buffer(__buffer), _text(__text), _sender(__sender), _type(__type), _flags(__flags) { + _timeStamp = QDateTime::currentDateTime().toUTC(); +} + +Message::Message(QDateTime __ts, BufferId __buffer, Type __type, QString __text, QString __sender, quint8 __flags) + : _timeStamp(__ts), _buffer(__buffer), _text(__text), _sender(__sender), _type(__type), _flags(__flags) { + +} + +MsgId Message::msgId() const { + return _msgId; +} + +void Message::setMsgId(MsgId _id) { + _msgId = _id; +} + +BufferId Message::buffer() const { + return _buffer; +} + +QString Message::text() const { + return _text; +} + +QString Message::sender() const { + return _sender; +} + +Message::Type Message::type() const { + return _type; +} + +quint8 Message::flags() const { + return _flags; +} + +QDateTime Message::timeStamp() const { + return _timeStamp; +} + + QDataStream &operator<<(QDataStream &out, const Message &msg) { - out << (quint32)msg.timeStamp.toTime_t() << (quint8)msg.type << (quint8)msg.flags - << msg.buffer << msg.sender.toUtf8() << msg.text.toUtf8(); + out << (quint32)msg.timeStamp().toTime_t() << (quint8)msg.type() << (quint8)msg.flags() + << msg.buffer() << msg.sender().toUtf8() << msg.text().toUtf8(); return out; } @@ -33,12 +76,12 @@ QDataStream &operator>>(QDataStream &in, Message &msg) { QByteArray s, m; BufferId buf; in >> ts >> t >> f >> buf >> s >> m; - msg.type = (Message::Type)t; - msg.flags = (quint8)f; - msg.buffer = buf; - msg.timeStamp = QDateTime::fromTime_t(ts); - msg.sender = QString::fromUtf8(s); - msg.text = QString::fromUtf8(m); + msg._type = (Message::Type)t; + msg._flags = (quint8)f; + msg._buffer = buf; + msg._timeStamp = QDateTime::fromTime_t(ts); + msg._sender = QString::fromUtf8(s); + msg._text = QString::fromUtf8(m); return in; } diff --git a/src/common/message.h b/src/common/message.h index 65d28280..baa88465 100644 --- a/src/common/message.h +++ b/src/common/message.h @@ -26,28 +26,37 @@ #include "global.h" -struct Message { +class Message { - /** The different types a message can have for display */ - enum Type { Plain, Notice, Action, Nick, Mode, Join, Part, Quit, Kick, Kill, Server, Info, Error }; - enum Flags { None = 0, Self = 1, PrivMsg = 2, Highlight = 4 }; + public: + /** The different types a message can have for display */ + enum Type { Plain, Notice, Action, Nick, Mode, Join, Part, Quit, Kick, Kill, Server, Info, Error }; + enum Flags { None = 0, Self = 1, PrivMsg = 2, Highlight = 4 }; - uint msgId; - BufferId buffer; - QString text; - QString sender; - Type type; - quint8 flags; - QDateTime timeStamp; + Message(BufferId buffer = BufferId(), Type type = Plain, QString text = "", QString sender = "", quint8 flags = None); - //Message(QString _target, Type _type = Plain, QString _text = "", QString _sender = "", quint8 _flags = None) - //: target(_target), text(_text), sender(_sender), type(_type), flags(_flags) { timeStamp = QDateTime::currentDateTime().toUTC(); } + Message(QDateTime ts, BufferId buffer = BufferId(), Type type = Plain, QString text = "", QString sender = "", quint8 flags = None); - Message(BufferId _buffer = BufferId(), Type _type = Plain, QString _text = "", QString _sender = "", quint8 _flags = None) - : buffer(_buffer), text(_text), sender(_sender), type(_type), flags(_flags) { timeStamp = QDateTime::currentDateTime().toUTC(); } + MsgId msgId() const; + void setMsgId(MsgId id); - Message(QDateTime _ts, BufferId _buffer = BufferId(), Type _type = Plain, QString _text = "", QString _sender = "", quint8 _flags = None) - : buffer(_buffer), text(_text), sender(_sender), type(_type), flags(_flags), timeStamp(_ts) {} + BufferId buffer() const; + QString text() const; + QString sender() const; + Type type() const; + quint8 flags() const; + QDateTime timeStamp() const; + + private: + QDateTime _timeStamp; + MsgId _msgId; + BufferId _buffer; + QString _text; + QString _sender; + Type _type; + quint8 _flags; + + friend QDataStream &operator>>(QDataStream &in, Message &msg); }; diff --git a/src/core/coresession.cpp b/src/core/coresession.cpp index 437200a8..bdd2978d 100644 --- a/src/core/coresession.cpp +++ b/src/core/coresession.cpp @@ -163,8 +163,8 @@ void CoreSession::recvMessageFromServer(Message::Type type, QString target, QStr buf = storage->getBufferId(user, s->getNetwork(), target); } Message msg(buf, type, text, sender, flags); - msg.msgId = storage->logMessage(msg); - Q_ASSERT(msg.msgId); + msg.setMsgId(storage->logMessage(msg)); + Q_ASSERT(msg.msgId()); emit displayMsg(msg); } diff --git a/src/core/sqlitestorage.cpp b/src/core/sqlitestorage.cpp index 957528ab..3b7480fc 100644 --- a/src/core/sqlitestorage.cpp +++ b/src/core/sqlitestorage.cpp @@ -353,18 +353,18 @@ QList SqliteStorage::requestBuffers(UserId user, QDateTime since) { } MsgId SqliteStorage::logMessage(Message msg) { - logMessageQuery->bindValue(":time", msg.timeStamp.toTime_t()); - logMessageQuery->bindValue(":bufferid", msg.buffer.uid()); - logMessageQuery->bindValue(":type", msg.type); - logMessageQuery->bindValue(":flags", msg.flags); - logMessageQuery->bindValue(":sender", msg.sender); - logMessageQuery->bindValue(":message", msg.text); + logMessageQuery->bindValue(":time", msg.timeStamp().toTime_t()); + logMessageQuery->bindValue(":bufferid", msg.buffer().uid()); + logMessageQuery->bindValue(":type", msg.type()); + logMessageQuery->bindValue(":flags", msg.flags()); + logMessageQuery->bindValue(":sender", msg.sender()); + logMessageQuery->bindValue(":message", msg.text()); logMessageQuery->exec(); if(logMessageQuery->lastError().isValid()) { // constraint violation - must be NOT NULL constraint - probably the sender is missing... if(logMessageQuery->lastError().number() == 19) { - addSenderQuery->bindValue(":sender", msg.sender); + addSenderQuery->bindValue(":sender", msg.sender()); addSenderQuery->exec(); logMessageQuery->exec(); Q_ASSERT(!logMessageQuery->lastError().isValid()); @@ -373,16 +373,16 @@ MsgId SqliteStorage::logMessage(Message msg) { } } - getLastMessageIdQuery->bindValue(":time", msg.timeStamp.toTime_t()); - getLastMessageIdQuery->bindValue(":bufferid", msg.buffer.uid()); - getLastMessageIdQuery->bindValue(":type", msg.type); - getLastMessageIdQuery->bindValue(":sender", msg.sender); + getLastMessageIdQuery->bindValue(":time", msg.timeStamp().toTime_t()); + getLastMessageIdQuery->bindValue(":bufferid", msg.buffer().uid()); + getLastMessageIdQuery->bindValue(":type", msg.type()); + getLastMessageIdQuery->bindValue(":sender", msg.sender()); getLastMessageIdQuery->exec(); if(getLastMessageIdQuery->first()) { return getLastMessageIdQuery->value(0).toUInt(); } else { // somethin went wrong... :( - qDebug() << getLastMessageIdQuery->lastQuery() << "time/bufferid/type/sender:" << msg.timeStamp.toTime_t() << msg.buffer.uid() << msg.type << msg.sender; + qDebug() << getLastMessageIdQuery->lastQuery() << "time/bufferid/type/sender:" << msg.timeStamp().toTime_t() << msg.buffer().uid() << msg.type() << msg.sender(); Q_ASSERT(false); return 0; } @@ -410,7 +410,7 @@ QList SqliteStorage::requestMsgs(BufferId buffer, int lastmsgs, int off requestMsgsQuery->value(5).toString(), requestMsgsQuery->value(4).toString(), requestMsgsQuery->value(3).toUInt()); - msg.msgId = requestMsgsQuery->value(0).toUInt(); + msg.setMsgId(requestMsgsQuery->value(0).toUInt()); messagelist << msg; } return messagelist; @@ -440,7 +440,7 @@ QList SqliteStorage::requestMsgs(BufferId buffer, QDateTime since, int requestMsgsSinceQuery->value(5).toString(), requestMsgsSinceQuery->value(4).toString(), requestMsgsSinceQuery->value(3).toUInt()); - msg.msgId = requestMsgsSinceQuery->value(0).toUInt(); + msg.setMsgId(requestMsgsSinceQuery->value(0).toUInt()); messagelist << msg; } @@ -462,7 +462,7 @@ QList SqliteStorage::requestMsgRange(BufferId buffer, int first, int la requestMsgRangeQuery->value(5).toString(), requestMsgRangeQuery->value(4).toString(), requestMsgRangeQuery->value(3).toUInt()); - msg.msgId = requestMsgRangeQuery->value(0).toUInt(); + msg.setMsgId(requestMsgRangeQuery->value(0).toUInt()); messagelist << msg; } diff --git a/src/qtgui/chatline.cpp b/src/qtgui/chatline.cpp index 5d0a9730..10a52391 100644 --- a/src/qtgui/chatline.cpp +++ b/src/qtgui/chatline.cpp @@ -40,16 +40,16 @@ ChatLine::~ChatLine() { } void ChatLine::formatMsg(Message msg) { - QString user = userFromMask(msg.sender); - QString host = hostFromMask(msg.sender); - QString nick = nickFromMask(msg.sender); - QString text = Style::mircToInternal(msg.text); - QString networkName = msg.buffer.network(); - QString bufferName = msg.buffer.buffer(); + QString user = userFromMask(msg.sender()); + QString host = hostFromMask(msg.sender()); + QString nick = nickFromMask(msg.sender()); + QString text = Style::mircToInternal(msg.text()); + QString networkName = msg.buffer().network(); + QString bufferName = msg.buffer().buffer(); - QString c = tr("%DT[%1]").arg(msg.timeStamp.toLocalTime().toString("hh:mm:ss")); + QString c = tr("%DT[%1]").arg(msg.timeStamp().toLocalTime().toString("hh:mm:ss")); QString s, t; - switch(msg.type) { + switch(msg.type()) { case Message::Plain: s = tr("%DS<%1>").arg(nick); t = tr("%D0%1").arg(text); break; case Message::Server: @@ -77,21 +77,21 @@ void ChatLine::formatMsg(Message msg) { break; case Message::Nick: s = tr("%Dr<->"); - if(nick == msg.text) t = tr("%DrYou are now known as %DN%1%DN").arg(msg.text); - else t = tr("%Dr%DN%1%DN is now known as %DN%DU%2%DU%DN").arg(nick, msg.text); + if(nick == msg.text()) t = tr("%DrYou are now known as %DN%1%DN").arg(msg.text()); + else t = tr("%Dr%DN%1%DN is now known as %DN%DU%2%DU%DN").arg(nick, msg.text()); break; case Message::Mode: s = tr("%Dm***"); - if(nick.isEmpty()) t = tr("%DmUser mode: %DM%1%DM").arg(msg.text); - else t = tr("%DmMode %DM%1%DM by %DN%DU%2%DU%DN").arg(msg.text, nick); + if(nick.isEmpty()) t = tr("%DmUser mode: %DM%1%DM").arg(msg.text()); + else t = tr("%DmMode %DM%1%DM by %DN%DU%2%DU%DN").arg(msg.text(), nick); break; case Message::Action: s = tr("%Da-*-"); - t = tr("%Da%DN%DU%1%DU%DN %2").arg(nick).arg(msg.text); + t = tr("%Da%DN%DU%1%DU%DN %2").arg(nick).arg(msg.text()); break; default: - s = tr("%De%1").arg(msg.sender); - t = tr("%De[%1]").arg(msg.text); + s = tr("%De%1").arg(msg.sender()); + t = tr("%De[%1]").arg(msg.text()); } QTextOption tsOption, senderOption, textOption; tsFormatted = Style::internalToFormatted(c); @@ -172,15 +172,15 @@ void ChatLine::setSelection(SelectionMode mode, int start, int end) { } uint ChatLine::msgId() const { - return msg.buffer.uid(); + return msg.buffer().uid(); } BufferId ChatLine::bufferId() const { - return msg.buffer; + return msg.buffer(); } QDateTime ChatLine::timeStamp() const { - return msg.timeStamp; + return msg.timeStamp(); } QString ChatLine::sender() const {