Stage 3
[quassel.git] / src / common / message.h
index baa8846..68047db 100644 (file)
 #ifndef _MESSAGE_H_
 #define _MESSAGE_H_
 
+#include <QCoreApplication>
 #include <QString>
 #include <QDateTime>
 
+#include "bufferinfo.h"
 #include "global.h"
 
 class Message {
+  Q_DECLARE_TR_FUNCTIONS(Message);
 
   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 };
 
-    Message(BufferId buffer = BufferId(), Type type = Plain, QString text = "", QString sender = "", quint8 flags = None);
+    Message(BufferInfo buffer = BufferInfo(), Type type = Plain, QString text = "", QString sender = "", quint8 flags = None);
 
-    Message(QDateTime ts, BufferId buffer = BufferId(), Type type = Plain, QString text = "", QString sender = "", quint8 flags = None);
+    Message(QDateTime ts, BufferInfo buffer = BufferInfo(), Type type = Plain, QString text = "", QString sender = "", quint8 flags = None);
 
     MsgId msgId() const;
     void setMsgId(MsgId id);
 
-    BufferId buffer() const;
+    BufferInfo buffer() const;
     QString text() const;
     QString sender() const;
     Type type() const;
     quint8 flags() const;
     QDateTime timeStamp() const;
 
+    QString formattedTimeStamp();
+    QString formattedSender();
+    QString formattedText();
+
+    //static QString formattedToHtml(const QString &);
+
+    void format();
+
   private:
     QDateTime _timeStamp;
     MsgId _msgId;
-    BufferId _buffer;
+    BufferInfo _buffer;
     QString _text;
     QString _sender;
     Type _type;
     quint8 _flags;
 
-    friend QDataStream &operator>>(QDataStream &in, Message &msg);
+    QString _formattedTimeStamp, _formattedSender, _formattedText; // cache
+
+    /** Convert mIRC control codes to our own */
+    QString mircToInternal(QString);
 
+    friend QDataStream &operator>>(QDataStream &in, Message &msg);
 };
 
 QDataStream &operator<<(QDataStream &out, const Message &msg);