Make Message a proper class rather than a struct (i.e. use setters/getters and
authorManuel Nickschas <sputnick@quassel-irc.org>
Thu, 4 Oct 2007 22:43:41 +0000 (22:43 +0000)
committerManuel Nickschas <sputnick@quassel-irc.org>
Thu, 4 Oct 2007 22:43:41 +0000 (22:43 +0000)
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.

src/client/client.cpp
src/client/client.h
src/common/message.cpp
src/common/message.h
src/core/coresession.cpp
src/core/sqlitestorage.cpp
src/qtgui/chatline.cpp

index 7b715bd..b561fd1 100644 (file)
@@ -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);
index 011601f..2496c66 100644 (file)
@@ -29,6 +29,7 @@
 #include "buffer.h"
 #include "message.h"
 
+
 class AbstractUi;
 class BufferTreeModel;
 class QtGui;
index 837dc35..9875473 100644 (file)
 #include "message.h"
 #include <QDataStream>
 
+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;
 }
 
index 65d2828..baa8846 100644 (file)
 
 #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);
 
 };
 
index 437200a..bdd2978 100644 (file)
@@ -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);
 }
 
index 957528a..3b7480f 100644 (file)
@@ -353,18 +353,18 @@ QList<BufferId> 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<Message> 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<Message> 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<Message> 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;
   }
 
index 5d0a973..10a5239 100644 (file)
@@ -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 {