Note to self: a QSet is not ordered.
[quassel.git] / src / common / bufferinfo.cpp
index 2eb790d..c45c8aa 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-07 by the Quassel IRC Team                         *
+ *   Copyright (C) 2005-08 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 #include "util.h"
 
 BufferInfo::BufferInfo()
-  : _id(0),
+  : _bufferId(0),
     _netid(0),
-    _gid(0),
-    _networkName(QString()),
-    _bufferName(QString()) {
+    _type(InvalidBuffer),
+    _groupId(0),
+    _bufferName(QString())
+{
 }
 
-BufferInfo::BufferInfo(uint id, uint networkid, uint gid, QString net, QString buf)
-  : _id(id),
+BufferInfo::BufferInfo(BufferId id,  NetworkId networkid, Type type, uint gid, QString buf)
+  : _bufferId(id),
     _netid(networkid),
-    _gid(gid),
-    _networkName(net),
-    _bufferName(buf) {
+    _type(type),
+    _groupId(gid),
+    _bufferName(buf)
+{
 }
 
-QString BufferInfo::buffer() const {
+BufferInfo BufferInfo::fakeStatusBuffer(NetworkId networkId) {
+  return BufferInfo(0, networkId, StatusBuffer);
+}
+
+QString BufferInfo::bufferName() const {
   if(isChannelName(_bufferName))
     return _bufferName;
   else
-    return nickFromMask(_bufferName);
+    return nickFromMask(_bufferName);  // FIXME get rid of global functions and use the Network stuff instead!
 }
 
 QDebug operator<<(QDebug dbg, const BufferInfo &b) {
-  dbg.nospace() << "(bufId: " << b.uid() << ", netId: " << b.networkId() << ", groupId: " << b.groupId()
-                << ", net: " << b.network() << ", buf: " << b.buffer() << ")";
-
+  dbg.nospace() << "(bufId: " << b.bufferId() << ", netId: " << b.networkId() << ", groupId: " << b.groupId() << ", buf: " << b.bufferName() << ")";
   return dbg.space();
 }
 
 QDataStream &operator<<(QDataStream &out, const BufferInfo &bufferInfo) {
-  out << bufferInfo._id << bufferInfo._netid << bufferInfo._gid << bufferInfo._networkName.toUtf8() << bufferInfo._bufferName.toUtf8();
+  out << bufferInfo._bufferId << bufferInfo._netid << (qint16)bufferInfo._type << bufferInfo._groupId << bufferInfo._bufferName.toUtf8();
   return out;
 }
 
 QDataStream &operator>>(QDataStream &in, BufferInfo &bufferInfo) {
-  QByteArray n, b;
-  in >> bufferInfo._id >> bufferInfo._netid >> bufferInfo._gid >> n >> b;
-  bufferInfo._networkName = QString::fromUtf8(n);
-  bufferInfo._bufferName = QString::fromUtf8(b);
+  QByteArray buffername;
+  qint16 bufferType;
+  in >> bufferInfo._bufferId >> bufferInfo._netid >> bufferType >> bufferInfo._groupId >> buffername;
+  bufferInfo._type = (BufferInfo::Type)bufferType;
+  bufferInfo._bufferName = QString::fromUtf8(buffername);
   return in;
 }
 
 uint qHash(const BufferInfo &bufferid) {
-  return qHash(bufferid._id);
+  return qHash(bufferid._bufferId);
 }