Finally! All *Id types are now first-class types rather than tpyedefs.
authorManuel Nickschas <sputnick@quassel-irc.org>
Sat, 19 Jan 2008 15:49:05 +0000 (15:49 +0000)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sat, 19 Jan 2008 15:49:05 +0000 (15:49 +0000)
This means they are typesafe now and cannot be randomly interchanged with built-ins
anymore. Conversions to int now need to be made explicit. Take care when getting *Id
out of QVariant!

Distclean necessary. Yeah, I know.

30 files changed:
Quassel.kdevelop.filelist
src/client/buffermodel.cpp
src/client/networkmodel.cpp
src/client/treemodel.cpp
src/client/treemodel.h
src/common/bufferinfo.cpp
src/common/identity.cpp
src/common/ircchannel.cpp
src/common/ircuser.cpp
src/common/main.cpp
src/common/network.cpp
src/common/types.h
src/core/core.cpp
src/core/coresession.cpp
src/core/coreusersettings.cpp
src/core/networkconnection.cpp
src/core/sqlitestorage.cpp
src/qtui/bufferwidget.h
src/qtui/chatline-old.cpp
src/qtui/chatwidget.cpp
src/qtui/coreconnectdlg.cpp
src/qtui/mainwin.cpp
src/qtui/mainwin.h
src/qtui/nicklistwidget.h
src/qtui/settingspages/identitiessettingspage.cpp
src/uisupport/bufferview.cpp
src/uisupport/bufferview.h
src/uisupport/bufferviewfilter.cpp
src/uisupport/bufferviewfilter.h
version.inc

index 1cedf41..74a943a 100644 (file)
@@ -192,7 +192,6 @@ src/qtui/settingspages/networkssettingspage.h
 src/qtui/settingspages/networkssettingspage.ui
 src/qtui/settingspages/nickeditdlgnew.ui
 src/qtui/settingspages/saveidentitiesdlg.ui
 src/qtui/settingspages/networkssettingspage.ui
 src/qtui/settingspages/nickeditdlgnew.ui
 src/qtui/settingspages/saveidentitiesdlg.ui
-src/qtui/settingspages/servereditdlg.ui
 src/qtui/settingspages/settingspages.pri
 src/qtui/topicwidget.cpp
 src/qtui/topicwidget.h
 src/qtui/settingspages/settingspages.pri
 src/qtui/topicwidget.cpp
 src/qtui/topicwidget.h
index 88c1ab8..ad4c51a 100644 (file)
@@ -68,7 +68,6 @@ void BufferModel::synchronizeView(QAbstractItemView *view) {
 }
 
 void BufferModel::mapProperty(int column, int role, QObject *target, const QByteArray &property) {
 }
 
 void BufferModel::mapProperty(int column, int role, QObject *target, const QByteArray &property) {
-  qDebug() << property;
   propertyMapper()->addMapping(column, role, target, property);
 }
 
   propertyMapper()->addMapping(column, role, target, property);
 }
 
index e3739ae..aa4aefe 100644 (file)
@@ -59,7 +59,7 @@ const BufferInfo &BufferItem::bufferInfo() const {
 }
 
 quint64 BufferItem::id() const {
 }
 
 quint64 BufferItem::id() const {
-  return bufferInfo().uid();
+  return bufferInfo().uid().toInt();
 }
 
 bool BufferItem::isStatusBuffer() const {
 }
 
 bool BufferItem::isStatusBuffer() const {
@@ -94,9 +94,9 @@ QVariant BufferItem::data(int column, int role) const {
   case NetworkModel::ItemTypeRole:
     return NetworkModel::BufferItemType;
   case NetworkModel::BufferIdRole:
   case NetworkModel::ItemTypeRole:
     return NetworkModel::BufferItemType;
   case NetworkModel::BufferIdRole:
-    return bufferInfo().uid();
+    return QVariant::fromValue<BufferId>(bufferInfo().uid());
   case NetworkModel::NetworkIdRole:
   case NetworkModel::NetworkIdRole:
-    return bufferInfo().networkId();
+    return QVariant::fromValue<NetworkId>(bufferInfo().networkId());
   case NetworkModel::BufferTypeRole:
     return int(bufferType());
   case NetworkModel::ItemActiveRole:
   case NetworkModel::BufferTypeRole:
     return int(bufferType());
   case NetworkModel::ItemActiveRole:
@@ -220,7 +220,7 @@ NetworkItem::NetworkItem(const NetworkId &netid, AbstractTreeItem *parent)
 QVariant NetworkItem::data(int column, int role) const {
   switch(role) {
   case NetworkModel::NetworkIdRole:
 QVariant NetworkItem::data(int column, int role) const {
   switch(role) {
   case NetworkModel::NetworkIdRole:
-    return _networkId;
+    return QVariant::fromValue<NetworkId>(_networkId);
   case NetworkModel::ItemTypeRole:
     return NetworkModel::NetworkItemType;
   case NetworkModel::ItemActiveRole:
   case NetworkModel::ItemTypeRole:
     return NetworkModel::NetworkItemType;
   case NetworkModel::ItemActiveRole:
@@ -231,7 +231,7 @@ QVariant NetworkItem::data(int column, int role) const {
 }
 
 quint64 NetworkItem::id() const {
 }
 
 quint64 NetworkItem::id() const {
-  return _networkId;
+  return _networkId.toInt();
 }
 
 bool NetworkItem::isActive() const {
 }
 
 bool NetworkItem::isActive() const {
@@ -413,11 +413,11 @@ Buffer *NetworkModel::getBufferByIndex(const QModelIndex &index) const {
 
 // experimental stuff :)
 QModelIndex NetworkModel::networkIndex(NetworkId networkId) {
 
 // experimental stuff :)
 QModelIndex NetworkModel::networkIndex(NetworkId networkId) {
-  return indexById(networkId);
+  return indexById(networkId.toInt());
 }
 
 NetworkItem *NetworkModel::existsNetworkItem(NetworkId networkId) {
 }
 
 NetworkItem *NetworkModel::existsNetworkItem(NetworkId networkId) {
-  return qobject_cast<NetworkItem *>(rootItem->childById(networkId));
+  return qobject_cast<NetworkItem *>(rootItem->childById(networkId.toInt()));
 }
 
 NetworkItem *NetworkModel::networkItem(NetworkId networkId) {
 }
 
 NetworkItem *NetworkModel::networkItem(NetworkId networkId) {
@@ -436,7 +436,7 @@ QModelIndex NetworkModel::bufferIndex(BufferId bufferId) {
   AbstractTreeItem *netItem, *bufferItem;
   for(int i = 0; i < rootItem->childCount(); i++) {
     netItem = rootItem->child(i);
   AbstractTreeItem *netItem, *bufferItem;
   for(int i = 0; i < rootItem->childCount(); i++) {
     netItem = rootItem->child(i);
-    if((bufferItem = netItem->childById(bufferId))) {
+    if((bufferItem = netItem->childById(bufferId.toInt()))) {
       return indexById(bufferItem->id(), networkIndex(netItem->id()));
     }
   }
       return indexById(bufferItem->id(), networkIndex(netItem->id()));
     }
   }
@@ -502,8 +502,8 @@ QMimeData *NetworkModel::mimeData(const QModelIndexList &indexes) const {
   QStringList bufferlist;
   QString netid, uid, bufferid;
   foreach(QModelIndex index, indexes) {
   QStringList bufferlist;
   QString netid, uid, bufferid;
   foreach(QModelIndex index, indexes) {
-    netid = QString::number(index.data(NetworkIdRole).value<NetworkId>());
-    uid = QString::number(index.data(BufferIdRole).value<BufferId>());
+    netid = QString::number(index.data(NetworkIdRole).value<NetworkId>().toInt());
+    uid = QString::number(index.data(BufferIdRole).value<BufferId>().toInt());
     bufferid = QString("%1:%2").arg(netid).arg(uid);
     if(!bufferlist.contains(bufferid))
       bufferlist << bufferid;
     bufferid = QString("%1:%2").arg(netid).arg(uid);
     if(!bufferlist.contains(bufferid))
       bufferlist << bufferid;
@@ -540,11 +540,11 @@ bool NetworkModel::dropMimeData(const QMimeData *data, Qt::DropAction action, in
   if(bufferId == parent.data(BufferIdRole).value<BufferId>())
     return false; 
   
   if(bufferId == parent.data(BufferIdRole).value<BufferId>())
     return false; 
   
-  Q_ASSERT(rootItem->childById(netId));
-  Q_ASSERT(rootItem->childById(netId)->childById(bufferId));
+  Q_ASSERT(rootItem->childById(netId.toInt()));
+  Q_ASSERT(rootItem->childById(netId.toInt())->childById(bufferId.toInt()));
 
   // source must be a query too
 
   // source must be a query too
-  BufferItem::Type sourceType = (BufferItem::Type)rootItem->childById(netId)->childById(bufferId)->data(0, BufferTypeRole).toInt();
+  BufferItem::Type sourceType = (BufferItem::Type)rootItem->childById(netId.toInt())->childById(bufferId.toInt())->data(0, BufferTypeRole).toInt();
   if(sourceType != BufferItem::QueryType)
     return false;
     
   if(sourceType != BufferItem::QueryType)
     return false;
     
index 18f7c4f..10baa07 100644 (file)
@@ -102,7 +102,7 @@ AbstractTreeItem *AbstractTreeItem::child(int row) const {
   return child(defaultColumn(), row);
 }
 
   return child(defaultColumn(), row);
 }
 
-AbstractTreeItem *AbstractTreeItem::childById(int column, const uint &id) const {
+AbstractTreeItem *AbstractTreeItem::childById(int column, const quint64 &id) const {
   if(!_childHash.contains(column)
      || !_childHash[column].contains(id))
     return 0;
   if(!_childHash.contains(column)
      || !_childHash[column].contains(id))
     return 0;
@@ -110,7 +110,7 @@ AbstractTreeItem *AbstractTreeItem::childById(int column, const uint &id) const
     return _childHash[column].value(id);
 }
 
     return _childHash[column].value(id);
 }
 
-AbstractTreeItem *AbstractTreeItem::childById(const uint &id) const {
+AbstractTreeItem *AbstractTreeItem::childById(const quint64 &id) const {
   return childById(defaultColumn(), id);
 }
 
   return childById(defaultColumn(), id);
 }
 
@@ -282,7 +282,7 @@ QModelIndex TreeModel::index(int row, int column, const QModelIndex &parent) con
     return QModelIndex();
 }
 
     return QModelIndex();
 }
 
-QModelIndex TreeModel::indexById(uint id, const QModelIndex &parent) const {
+QModelIndex TreeModel::indexById(quint64 id, const QModelIndex &parent) const {
   AbstractTreeItem *parentItem; 
   
   if(!parent.isValid())
   AbstractTreeItem *parentItem; 
   
   if(!parent.isValid())
index ee776c0..da1f5fd 100644 (file)
@@ -32,7 +32,7 @@
  *****************************************/
 class AbstractTreeItem : public QObject {
   Q_OBJECT
  *****************************************/
 class AbstractTreeItem : public QObject {
   Q_OBJECT
-  Q_PROPERTY(uint id READ id)
+  Q_PROPERTY(quint64 id READ id)
 
 public:
   AbstractTreeItem(AbstractTreeItem *parent = 0);
 
 public:
   AbstractTreeItem(AbstractTreeItem *parent = 0);
@@ -49,8 +49,8 @@ public:
   AbstractTreeItem *child(int column, int row) const;
   AbstractTreeItem *child(int row) const;
   
   AbstractTreeItem *child(int column, int row) const;
   AbstractTreeItem *child(int row) const;
   
-  AbstractTreeItem *childById(int column, const uint &id) const;
-  AbstractTreeItem *childById(const uint &id) const;
+  AbstractTreeItem *childById(int column, const quint64 &id) const;
+  AbstractTreeItem *childById(const quint64 &id) const;
 
   int childCount(int column) const;
   int childCount() const;
 
   int childCount(int column) const;
   int childCount() const;
@@ -76,7 +76,7 @@ private slots:
 
 private:
   QHash<int, QList<AbstractTreeItem *> > _childItems;
 
 private:
   QHash<int, QList<AbstractTreeItem *> > _childItems;
-  QHash<int, QHash<quint64, AbstractTreeItem *> > _childHash; // uint to be compatible to qHash functions
+  QHash<int, QHash<quint64, AbstractTreeItem *> > _childHash; // uint to be compatible to qHash functions FIXME test this
   AbstractTreeItem *_parentItem;
   Qt::ItemFlags _flags;
 
   AbstractTreeItem *_parentItem;
   Qt::ItemFlags _flags;
 
@@ -137,7 +137,7 @@ public:
   QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
   
   QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
   QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
   
   QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
-  QModelIndex indexById(uint id, const QModelIndex &parent = QModelIndex()) const;
+  QModelIndex indexById(quint64 id, const QModelIndex &parent = QModelIndex()) const;
   QModelIndex indexByItem(AbstractTreeItem *item) const;
 
   QModelIndex parent(const QModelIndex &index) const;
   QModelIndex indexByItem(AbstractTreeItem *item) const;
 
   QModelIndex parent(const QModelIndex &index) const;
index 74cf492..e36defc 100644 (file)
@@ -71,6 +71,6 @@ QDataStream &operator>>(QDataStream &in, BufferInfo &bufferInfo) {
 }
 
 uint qHash(const BufferInfo &bufferid) {
 }
 
 uint qHash(const BufferInfo &bufferid) {
-  return qHash(bufferid._id);
+  return qHash(bufferid._id.toInt());
 }
 
 }
 
index d7bcbdc..3ce1d10 100644 (file)
@@ -55,7 +55,7 @@ Identity::Identity(const Identity &other, QObject *parent) : SyncableObject(pare
 }
 
 void Identity::init() {
 }
 
 void Identity::init() {
-  setObjectName(QString::number(id()));
+  setObjectName(QString::number(id().toInt()));
 }
 
 void Identity::setToDefaults() {
 }
 
 void Identity::setToDefaults() {
@@ -83,7 +83,7 @@ void Identity::setToDefaults() {
 }
 
 bool Identity::isValid() const {
 }
 
 bool Identity::isValid() const {
-  return (id() > 0);
+  return (id().toInt() > 0);
 }
 
 IdentityId Identity::id() const {
 }
 
 IdentityId Identity::id() const {
@@ -170,7 +170,7 @@ QString Identity::quitReason() const {
 // NOTE: DO NOT USE ON SYNCHRONIZED OBJECTS!
 void Identity::setId(IdentityId _id) {
   _identityId = _id;
 // NOTE: DO NOT USE ON SYNCHRONIZED OBJECTS!
 void Identity::setId(IdentityId _id) {
   _identityId = _id;
-  setObjectName(QString::number(id()));
+  setObjectName(QString::number(id().toInt()));
   //emit idSet(id);
 }
 
   //emit idSet(id);
 }
 
index 5c12171..e6c809f 100644 (file)
@@ -40,7 +40,7 @@ IrcChannel::IrcChannel(const QString &channelname, Network *network)
     _topic(QString()),
     network(network)
 {
     _topic(QString()),
     network(network)
 {
-  setObjectName(QString::number(network->networkId()) + "/" +  channelname);
+  setObjectName(QString::number(network->networkId().toInt()) + "/" +  channelname);
 }
 
 IrcChannel::~IrcChannel() {
 }
 
 IrcChannel::~IrcChannel() {
index 08543e1..5f05f0f 100644 (file)
@@ -144,7 +144,7 @@ void IrcUser::setNick(const QString &nick) {
 }
 
 void IrcUser::updateObjectName() {
 }
 
 void IrcUser::updateObjectName() {
-  QString newName = QString::number(network()->networkId()) + "/" + _nick;
+  QString newName = QString::number(network()->networkId().toInt()) + "/" + _nick;
   QString oldName = objectName();
   if(oldName != newName) {
     setObjectName(newName);
   QString oldName = objectName();
   if(oldName != newName) {
     setObjectName(newName);
index ecd0fa5..6b39f5f 100644 (file)
@@ -24,7 +24,6 @@
 #include <QTranslator>
 
 #include "global.h"
 #include <QTranslator>
 
 #include "global.h"
-#include "identity.h"
 #include "settings.h"
 
 #if defined BUILD_CORE
 #include "settings.h"
 
 #if defined BUILD_CORE
index 1388060..1b3ab30 100644 (file)
@@ -43,7 +43,7 @@ Network::Network(const NetworkId &networkid, QObject *parent) : SyncableObject(p
     _codecForEncoding(0),
     _codecForDecoding(0)
 {
     _codecForEncoding(0),
     _codecForDecoding(0)
 {
-  setObjectName(QString::number(networkid));
+  setObjectName(QString::number(networkid.toInt()));
 }
 
 // I think this is unnecessary since IrcUsers have us as their daddy :)
 }
 
 // I think this is unnecessary since IrcUsers have us as their daddy :)
index 9793150..64bfbbc 100644 (file)
 #ifndef _TYPES_H_
 #define _TYPES_H_
 
 #ifndef _TYPES_H_
 #define _TYPES_H_
 
+#include <QDebug>
 #include <QString>
 #include <QString>
+#include <QVariant>
 
 
-/*
-class UnsignedId {
-    quint32 id;
+class SignedId {
+  protected:
+    qint32 id;
 
   public:
 
   public:
-    inline UnsignedId(int _id = 0) { id = _id; }
-    inline quint32 toInt() const { return id; }
-    inline bool operator==(const UnsignedId &other) const { return id == other.id; }
-    inline bool operator!=(const UnsignedId &other) const { return id != other.id; }
+    inline SignedId(int _id = 0) { id = _id; }
+    inline qint32 toInt() const { return id; }
+
+    inline bool operator==(const SignedId &other) const { return id == other.id; }
+    inline bool operator!=(const SignedId &other) const { return id != other.id; }
+    inline bool operator<(const SignedId &other) const { return id < other.id; }
+    inline bool operator==(int i) const { return id == i; }
+    inline bool operator!=(int i) const { return id != i; }
+    inline bool operator<(int i) const { return id < i; }
+    inline bool operator>(int i) const { return id > i; }
+    inline bool operator<=(int i) const { return id <= i; }
+
+    inline SignedId operator++(int) { id++; return *this; }
+    //inline operator int() const { return toInt(); } // no automatic conversion!
+
+    friend QDataStream &operator>>(QDataStream &in, SignedId &signedId);
 };
 
 };
 
-struct BufferId : public UnsignedId {
-  inline BufferId(int _id = 0) : UnsignedId(_id) {};
+inline QDataStream &operator<<(QDataStream &out, const SignedId &signedId) { out << signedId.toInt(); return out; }
+inline QDataStream &operator>>(QDataStream &in, SignedId &signedId) { in >> signedId.id; return in; }
+inline QDebug operator<<(QDebug dbg, const SignedId &signedId) { dbg.space() << signedId.toInt(); return dbg; }
+inline uint qHash(const SignedId &id) { return qHash(id.toInt()); }
 
 
+struct UserId : public SignedId {
+  inline UserId(int _id = 0) : SignedId(_id) {};
+  //inline operator QVariant() const { return QVariant::fromValue<UserId>(*this); }  // no automatic conversion!
 };
 };
-*/
-
-// FIXME make all ID types quint32 as soon as they all have been replaced
-typedef uint UserId;     //!< Identifies a core user.
-typedef uint MsgId;      //!< Identifies a message.
-typedef uint BufferId;   //!< Identifies a buffer.
-// These must be signed!
-typedef qint32 NetworkId;  //!< Identifies an IRC Network.
-typedef qint32 IdentityId; //!< Identifies an identity.
+
+struct MsgId : public SignedId {
+  inline MsgId(int _id = 0) : SignedId(_id) {};
+  //inline operator QVariant() const { return QVariant::fromValue<MsgId>(*this); }
+};
+
+struct BufferId : public SignedId {
+  inline BufferId(int _id = 0) : SignedId(_id) {};
+  //inline operator QVariant() const { return QVariant::fromValue<BufferId>(*this); }
+};
+
+struct NetworkId : public SignedId {
+  inline NetworkId(int _id = 0) : SignedId(_id) {};
+  //inline operator QVariant() const { return QVariant::fromValue<NetworkId>(*this); }
+};
+
+struct IdentityId : public SignedId {
+  inline IdentityId(int _id = 0) : SignedId(_id) {};
+  //inline operator QVariant() const { return QVariant::fromValue<IdentityId>(*this); }
+};
+
+Q_DECLARE_METATYPE(UserId);
+Q_DECLARE_METATYPE(MsgId);
+Q_DECLARE_METATYPE(BufferId);
+Q_DECLARE_METATYPE(NetworkId);
+Q_DECLARE_METATYPE(IdentityId);
 
 //! Base class for exceptions.
 struct Exception {
 
 //! Base class for exceptions.
 struct Exception {
index 3233798..298d7e3 100644 (file)
@@ -254,7 +254,7 @@ void Core::clientHasData() {
       mutex.lock();
       UserId uid = storage->validateUser(msg["User"].toString(), msg["Password"].toString());
       mutex.unlock();
       mutex.lock();
       UserId uid = storage->validateUser(msg["User"].toString(), msg["Password"].toString());
       mutex.unlock();
-      if(!uid) {
+      if(uid == 0) {
         reply["MsgType"] = "ClientLoginReject";
         reply["Error"] = tr("<b>Invalid username or password!</b><br>The username/password combination you supplied could not be found in the database.");
         SignalProxy::writeDataToDevice(socket, reply);
         reply["MsgType"] = "ClientLoginReject";
         reply["Error"] = tr("<b>Invalid username or password!</b><br>The username/password combination you supplied could not be found in the database.");
         SignalProxy::writeDataToDevice(socket, reply);
index 2d2c67e..6b28d71 100644 (file)
@@ -225,8 +225,8 @@ void CoreSession::attachNetworkConnection(NetworkConnection *conn) {
   //connect(this, SIGNAL(disconnectFromIrc(QString)), network, SLOT(disconnectFromIrc(QString)));
   //connect(this, SIGNAL(msgFromGui(uint, QString, QString)), network, SLOT(userInput(uint, QString, QString)));
 
   //connect(this, SIGNAL(disconnectFromIrc(QString)), network, SLOT(disconnectFromIrc(QString)));
   //connect(this, SIGNAL(msgFromGui(uint, QString, QString)), network, SLOT(userInput(uint, QString, QString)));
 
-  connect(conn, SIGNAL(connected(NetworkId)), this, SLOT(networkConnected(NetworkId)));
-  connect(conn, SIGNAL(disconnected(NetworkId)), this, SLOT(networkDisconnected(NetworkId)));
+  //connect(conn, SIGNAL(connected(NetworkId)), this, SLOT(networkConnected(NetworkId)));
+  //connect(conn, SIGNAL(disconnected(NetworkId)), this, SLOT(networkDisconnected(NetworkId)));
   signalProxy()->attachSignal(conn, SIGNAL(connected(NetworkId)), SIGNAL(networkConnected(NetworkId)));
   signalProxy()->attachSignal(conn, SIGNAL(disconnected(NetworkId)), SIGNAL(networkDisconnected(NetworkId)));
 
   signalProxy()->attachSignal(conn, SIGNAL(connected(NetworkId)), SIGNAL(networkConnected(NetworkId)));
   signalProxy()->attachSignal(conn, SIGNAL(disconnected(NetworkId)), SIGNAL(networkDisconnected(NetworkId)));
 
@@ -291,7 +291,7 @@ void CoreSession::recvMessageFromServer(Message::Type type, QString target, QStr
   }
   Message msg(buf, type, text, sender, flags);
   msg.setMsgId(Core::storeMessage(msg));
   }
   Message msg(buf, type, text, sender, flags);
   msg.setMsgId(Core::storeMessage(msg));
-  Q_ASSERT(msg.msgId());
+  Q_ASSERT(msg.msgId() != 0);
   emit displayMsg(msg);
 }
 
   emit displayMsg(msg);
 }
 
@@ -324,7 +324,6 @@ QVariant CoreSession::sessionState() {
   }
   v["IrcUserCount"] = ircusercount;
   v["IrcChannelCount"] = ircchannelcount;
   }
   v["IrcUserCount"] = ircusercount;
   v["IrcChannelCount"] = ircchannelcount;
-  qDebug() << "nets:" << _networks.count() << " chans:" << ircchannelcount << " users:" << ircusercount;
 
   QList<QVariant> idlist;
   foreach(Identity *i, _identities.values()) idlist << QVariant::fromValue<Identity>(*i);
 
   QList<QVariant> idlist;
   foreach(Identity *i, _identities.values()) idlist << QVariant::fromValue<Identity>(*i);
index 277b7ad..bf1a675 100644 (file)
 
 #include "coreusersettings.h"
 
 
 #include "coreusersettings.h"
 
-CoreUserSettings::CoreUserSettings(UserId uid) : CoreSettings(QString("CoreUser/%1").arg(uid)), user(uid) {
+CoreUserSettings::CoreUserSettings(UserId uid) : CoreSettings(QString("CoreUser/%1").arg(uid.toInt())), user(uid) {
 
 
 }
 
 void CoreUserSettings::storeIdentity(const Identity &identity) {
 
 
 }
 
 void CoreUserSettings::storeIdentity(const Identity &identity) {
-  setLocalValue(QString("Identities/%1").arg(identity.id()), QVariant::fromValue<Identity>(identity));
+  setLocalValue(QString("Identities/%1").arg(identity.id().toInt()), QVariant::fromValue<Identity>(identity));
 }
 
 void CoreUserSettings::removeIdentity(const Identity &identity) {
 }
 
 void CoreUserSettings::removeIdentity(const Identity &identity) {
-  removeLocalKey(QString("Identities/%1").arg(identity.id()));
+  removeLocalKey(QString("Identities/%1").arg(identity.id().toInt()));
 }
 
 Identity CoreUserSettings::identity(IdentityId id) {
 }
 
 Identity CoreUserSettings::identity(IdentityId id) {
-  QVariant v = localValue(QString("Identities/%1").arg(id));
+  QVariant v = localValue(QString("Identities/%1").arg(id.toInt()));
   if(qVariantCanConvert<Identity>(v)) {
     return v.value<Identity>();
   }
   if(qVariantCanConvert<Identity>(v)) {
     return v.value<Identity>();
   }
@@ -44,7 +44,7 @@ Identity CoreUserSettings::identity(IdentityId id) {
 QList<IdentityId> CoreUserSettings::identityIds() {
   QList<IdentityId> res;
   foreach(QString id, localChildKeys("Identities")) {
 QList<IdentityId> CoreUserSettings::identityIds() {
   QList<IdentityId> res;
   foreach(QString id, localChildKeys("Identities")) {
-    res << id.toUInt();
+    res << id.toInt();
   }
   return res;
 }
   }
   return res;
 }
index c4433de..803564b 100644 (file)
@@ -46,7 +46,7 @@ NetworkConnection::NetworkConnection(Network *network, CoreSession *session, con
   connect(network, SIGNAL(currentServerSet(const QString &)), this, SLOT(sendPerform()));
 
   connect(&socket, SIGNAL(connected()), this, SLOT(socketConnected()));
   connect(network, SIGNAL(currentServerSet(const QString &)), this, SLOT(sendPerform()));
 
   connect(&socket, SIGNAL(connected()), this, SLOT(socketConnected()));
-  connect(&socket, SIGNAL(disconnected()), this, SLOT(quit()));
+  //connect(&socket, SIGNAL(disconnected()), this, SLOT(quit())); FIXME
   connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(socketError(QAbstractSocket::SocketError)));
   connect(&socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(socketStateChanged(QAbstractSocket::SocketState)));
   connect(&socket, SIGNAL(readyRead()), this, SLOT(socketHasData()));
   connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(socketError(QAbstractSocket::SocketError)));
   connect(&socket, SIGNAL(stateChanged(QAbstractSocket::SocketState)), this, SLOT(socketStateChanged(QAbstractSocket::SocketState)));
   connect(&socket, SIGNAL(readyRead()), this, SLOT(socketHasData()));
index 0cde45d..b30ec4d 100644 (file)
@@ -75,7 +75,7 @@ UserId SqliteStorage::addUser(const QString &user, const QString &password) {
   query.bindValue(":username", user);
   query.exec();
   query.first();
   query.bindValue(":username", user);
   query.exec();
   query.first();
-  UserId uid = query.value(0).toUInt();
+  UserId uid = query.value(0).toInt();
   emit userAdded(uid, user);
   return uid;
 }
   emit userAdded(uid, user);
   return uid;
 }
@@ -86,7 +86,7 @@ void SqliteStorage::updateUser(UserId user, const QString &password) {
 
   QSqlQuery query(logDb());
   query.prepare(queryString("update_userpassword"));
 
   QSqlQuery query(logDb());
   query.prepare(queryString("update_userpassword"));
-  query.bindValue(":userid", user);
+  query.bindValue(":userid", user.toInt());
   query.bindValue(":password", cryptopass);
   query.exec();
 }
   query.bindValue(":password", cryptopass);
   query.exec();
 }
@@ -94,7 +94,7 @@ void SqliteStorage::updateUser(UserId user, const QString &password) {
 void SqliteStorage::renameUser(UserId user, const QString &newName) {
   QSqlQuery query(logDb());
   query.prepare(queryString("update_username"));
 void SqliteStorage::renameUser(UserId user, const QString &newName) {
   QSqlQuery query(logDb());
   query.prepare(queryString("update_username"));
-  query.bindValue(":userid", user);
+  query.bindValue(":userid", user.toInt());
   query.bindValue(":username", newName);
   query.exec();
   emit userRenamed(user, newName);
   query.bindValue(":username", newName);
   query.exec();
   emit userRenamed(user, newName);
@@ -111,7 +111,7 @@ UserId SqliteStorage::validateUser(const QString &user, const QString &password)
   query.exec();
 
   if(query.first()) {
   query.exec();
 
   if(query.first()) {
-    return query.value(0).toUInt();
+    return query.value(0).toInt();
   } else {
     return 0;
   }
   } else {
     return 0;
   }
@@ -120,19 +120,19 @@ UserId SqliteStorage::validateUser(const QString &user, const QString &password)
 void SqliteStorage::delUser(UserId user) {
   QSqlQuery query(logDb());
   query.prepare(queryString("delete_backlog_by_uid"));
 void SqliteStorage::delUser(UserId user) {
   QSqlQuery query(logDb());
   query.prepare(queryString("delete_backlog_by_uid"));
-  query.bindValue(":userid", user);
+  query.bindValue(":userid", user.toInt());
   query.exec();
   
   query.prepare(queryString("delete_buffers_by_uid"));
   query.exec();
   
   query.prepare(queryString("delete_buffers_by_uid"));
-  query.bindValue(":userid", user);
+  query.bindValue(":userid", user.toInt());
   query.exec();
   
   query.prepare(queryString("delete_networks_by_uid"));
   query.exec();
   
   query.prepare(queryString("delete_networks_by_uid"));
-  query.bindValue(":userid", user);
+  query.bindValue(":userid", user.toInt());
   query.exec();
   
   query.prepare(queryString("delete_quasseluser"));
   query.exec();
   
   query.prepare(queryString("delete_quasseluser"));
-  query.bindValue(":userid", user);
+  query.bindValue(":userid", user.toInt());
   query.exec();
   // I hate the lack of foreign keys and on delete cascade... :(
   emit userRemoved(user);
   query.exec();
   // I hate the lack of foreign keys and on delete cascade... :(
   emit userRemoved(user);
@@ -140,8 +140,8 @@ void SqliteStorage::delUser(UserId user) {
 
 void SqliteStorage::createBuffer(UserId user, const QString &network, const QString &buffer) {
   QSqlQuery *createBufferQuery = cachedQuery("insert_buffer");
 
 void SqliteStorage::createBuffer(UserId user, const QString &network, const QString &buffer) {
   QSqlQuery *createBufferQuery = cachedQuery("insert_buffer");
-  createBufferQuery->bindValue(":userid", user);
-  createBufferQuery->bindValue(":userid2", user);  // Qt can't handle same placeholder twice (maybe sqlites fault)
+  createBufferQuery->bindValue(":userid", user.toInt());
+  createBufferQuery->bindValue(":userid2", user.toInt());  // Qt can't handle same placeholder twice (maybe sqlites fault)
   createBufferQuery->bindValue(":networkname", network);
   createBufferQuery->bindValue(":buffername", buffer);
   createBufferQuery->exec();
   createBufferQuery->bindValue(":networkname", network);
   createBufferQuery->bindValue(":buffername", buffer);
   createBufferQuery->exec();
@@ -149,7 +149,7 @@ void SqliteStorage::createBuffer(UserId user, const QString &network, const QStr
   if(createBufferQuery->lastError().isValid()) {
     if(createBufferQuery->lastError().number() == 19) { // Null Constraint violation
       QSqlQuery *createNetworkQuery = cachedQuery("insert_network");
   if(createBufferQuery->lastError().isValid()) {
     if(createBufferQuery->lastError().number() == 19) { // Null Constraint violation
       QSqlQuery *createNetworkQuery = cachedQuery("insert_network");
-      createNetworkQuery->bindValue(":userid", user);
+      createNetworkQuery->bindValue(":userid", user.toInt());
       createNetworkQuery->bindValue(":networkname", network);
       createNetworkQuery->exec();
       createBufferQuery->exec();
       createNetworkQuery->bindValue(":networkname", network);
       createNetworkQuery->exec();
       createBufferQuery->exec();
@@ -167,17 +167,17 @@ NetworkId SqliteStorage::getNetworkId(UserId user, const QString &network) {
   QSqlQuery query(logDb());
   query.prepare("SELECT networkid FROM network "
                "WHERE userid = :userid AND networkname = :networkname");
   QSqlQuery query(logDb());
   query.prepare("SELECT networkid FROM network "
                "WHERE userid = :userid AND networkname = :networkname");
-  query.bindValue(":userid", user);
+  query.bindValue(":userid", user.toInt());
   query.bindValue(":networkname", network);
   query.exec();
   
   if(query.first())
   query.bindValue(":networkname", network);
   query.exec();
   
   if(query.first())
-    return query.value(0).value<NetworkId>();
+    return query.value(0).toInt();
   else {
     createBuffer(user, network, "");
     query.exec();
     if(query.first())
   else {
     createBuffer(user, network, "");
     query.exec();
     if(query.first())
-      return query.value(0).value<NetworkId>();
+      return query.value(0).toInt();
     else {
       qWarning() << "NETWORK NOT FOUND:" << network << "for User:" << user;
       return 0;
     else {
       qWarning() << "NETWORK NOT FOUND:" << network << "for User:" << user;
       return 0;
@@ -192,8 +192,8 @@ BufferInfo SqliteStorage::getBufferInfo(UserId user, const QString &network, con
 
   QSqlQuery *getBufferInfoQuery = cachedQuery("select_bufferByName");
   getBufferInfoQuery->bindValue(":networkname", network);
 
   QSqlQuery *getBufferInfoQuery = cachedQuery("select_bufferByName");
   getBufferInfoQuery->bindValue(":networkname", network);
-  getBufferInfoQuery->bindValue(":userid", user);
-  getBufferInfoQuery->bindValue(":userid2", user); // Qt can't handle same placeholder twice... though I guess it's sqlites fault
+  getBufferInfoQuery->bindValue(":userid", user.toInt());
+  getBufferInfoQuery->bindValue(":userid2", user.toInt()); // Qt can't handle same placeholder twice... though I guess it's sqlites fault
   getBufferInfoQuery->bindValue(":buffername", buffer);
   getBufferInfoQuery->exec();
 
   getBufferInfoQuery->bindValue(":buffername", buffer);
   getBufferInfoQuery->exec();
 
@@ -201,11 +201,11 @@ BufferInfo SqliteStorage::getBufferInfo(UserId user, const QString &network, con
     createBuffer(user, network, buffer);
     getBufferInfoQuery->exec();
     if(getBufferInfoQuery->first()) {
     createBuffer(user, network, buffer);
     getBufferInfoQuery->exec();
     if(getBufferInfoQuery->first()) {
-      bufferid = BufferInfo(getBufferInfoQuery->value(0).value<BufferId>(), networkId, 0, network, buffer);
+      bufferid = BufferInfo(getBufferInfoQuery->value(0).toInt(), networkId, 0, network, buffer);
       emit bufferInfoUpdated(user, bufferid);
     }
   } else {
       emit bufferInfoUpdated(user, bufferid);
     }
   } else {
-    bufferid = BufferInfo(getBufferInfoQuery->value(0).value<BufferId>(), networkId, 0, network, buffer);
+    bufferid = BufferInfo(getBufferInfoQuery->value(0).toInt(), networkId, 0, network, buffer);
   }
 
   Q_ASSERT(!getBufferInfoQuery->next());
   }
 
   Q_ASSERT(!getBufferInfoQuery->next());
@@ -221,13 +221,13 @@ QList<BufferInfo> SqliteStorage::requestBuffers(UserId user, QDateTime since) {
   QList<BufferInfo> bufferlist;
   QSqlQuery query(logDb());
   query.prepare(queryString("select_buffers"));
   QList<BufferInfo> bufferlist;
   QSqlQuery query(logDb());
   query.prepare(queryString("select_buffers"));
-  query.bindValue(":userid", user);
+  query.bindValue(":userid", user.toInt());
   query.bindValue(":time", time);
   
   query.exec();
   watchQuery(&query);
   while(query.next()) {
   query.bindValue(":time", time);
   
   query.exec();
   watchQuery(&query);
   while(query.next()) {
-    bufferlist << BufferInfo(query.value(0).value<BufferId>(), query.value(2).value<NetworkId>(), 0, query.value(3).toString(), query.value(1).toString());
+    bufferlist << BufferInfo(query.value(0).toInt(), query.value(2).toInt(), 0, query.value(3).toString(), query.value(1).toString());
   }
   return bufferlist;
 }
   }
   return bufferlist;
 }
@@ -235,7 +235,7 @@ QList<BufferInfo> SqliteStorage::requestBuffers(UserId user, QDateTime since) {
 MsgId SqliteStorage::logMessage(Message msg) {
   QSqlQuery *logMessageQuery = cachedQuery("insert_message");
   logMessageQuery->bindValue(":time", msg.timestamp().toTime_t());
 MsgId SqliteStorage::logMessage(Message msg) {
   QSqlQuery *logMessageQuery = cachedQuery("insert_message");
   logMessageQuery->bindValue(":time", msg.timestamp().toTime_t());
-  logMessageQuery->bindValue(":bufferid", msg.buffer().uid());
+  logMessageQuery->bindValue(":bufferid", msg.buffer().uid().toInt());
   logMessageQuery->bindValue(":type", msg.type());
   logMessageQuery->bindValue(":flags", msg.flags());
   logMessageQuery->bindValue(":sender", msg.sender());
   logMessageQuery->bindValue(":type", msg.type());
   logMessageQuery->bindValue(":flags", msg.flags());
   logMessageQuery->bindValue(":sender", msg.sender());
@@ -259,13 +259,13 @@ MsgId SqliteStorage::logMessage(Message msg) {
 
   QSqlQuery *getLastMessageIdQuery = cachedQuery("select_lastMessage");
   getLastMessageIdQuery->bindValue(":time", msg.timestamp().toTime_t());
 
   QSqlQuery *getLastMessageIdQuery = cachedQuery("select_lastMessage");
   getLastMessageIdQuery->bindValue(":time", msg.timestamp().toTime_t());
-  getLastMessageIdQuery->bindValue(":bufferid", msg.buffer().uid());
+  getLastMessageIdQuery->bindValue(":bufferid", msg.buffer().uid().toInt());
   getLastMessageIdQuery->bindValue(":type", msg.type());
   getLastMessageIdQuery->bindValue(":sender", msg.sender());
   getLastMessageIdQuery->exec();
 
   if(getLastMessageIdQuery->first()) {
   getLastMessageIdQuery->bindValue(":type", msg.type());
   getLastMessageIdQuery->bindValue(":sender", msg.sender());
   getLastMessageIdQuery->exec();
 
   if(getLastMessageIdQuery->first()) {
-    return getLastMessageIdQuery->value(0).value<MsgId>();
+    return getLastMessageIdQuery->value(0).toInt();
   } else { // somethin went wrong... :(
     qDebug() << getLastMessageIdQuery->lastQuery() << "time/bufferid/type/sender:" << msg.timestamp().toTime_t() << msg.buffer().uid() << msg.type() << msg.sender();
     Q_ASSERT(false);
   } else { // somethin went wrong... :(
     qDebug() << getLastMessageIdQuery->lastQuery() << "time/bufferid/type/sender:" << msg.timestamp().toTime_t() << msg.buffer().uid() << msg.type() << msg.sender();
     Q_ASSERT(false);
@@ -277,7 +277,7 @@ QList<Message> SqliteStorage::requestMsgs(BufferInfo buffer, int lastmsgs, int o
   QList<Message> messagelist;
   // we have to determine the real offset first
   QSqlQuery *requestMsgsOffsetQuery = cachedQuery("select_messagesOffset");
   QList<Message> messagelist;
   // we have to determine the real offset first
   QSqlQuery *requestMsgsOffsetQuery = cachedQuery("select_messagesOffset");
-  requestMsgsOffsetQuery->bindValue(":bufferid", buffer.uid());
+  requestMsgsOffsetQuery->bindValue(":bufferid", buffer.uid().toInt());
   requestMsgsOffsetQuery->bindValue(":messageid", offset);
   requestMsgsOffsetQuery->exec();
   requestMsgsOffsetQuery->first();
   requestMsgsOffsetQuery->bindValue(":messageid", offset);
   requestMsgsOffsetQuery->exec();
   requestMsgsOffsetQuery->first();
@@ -285,8 +285,8 @@ QList<Message> SqliteStorage::requestMsgs(BufferInfo buffer, int lastmsgs, int o
 
   // now let's select the messages
   QSqlQuery *requestMsgsQuery = cachedQuery("select_messages");
 
   // now let's select the messages
   QSqlQuery *requestMsgsQuery = cachedQuery("select_messages");
-  requestMsgsQuery->bindValue(":bufferid", buffer.uid());
-  requestMsgsQuery->bindValue(":bufferid2", buffer.uid());  // Qt can't handle the same placeholder used twice
+  requestMsgsQuery->bindValue(":bufferid", buffer.uid().toInt());
+  requestMsgsQuery->bindValue(":bufferid2", buffer.uid().toInt());  // Qt can't handle the same placeholder used twice
   requestMsgsQuery->bindValue(":limit", lastmsgs);
   requestMsgsQuery->bindValue(":offset", offset);
   requestMsgsQuery->exec();
   requestMsgsQuery->bindValue(":limit", lastmsgs);
   requestMsgsQuery->bindValue(":offset", offset);
   requestMsgsQuery->exec();
@@ -297,7 +297,7 @@ QList<Message> SqliteStorage::requestMsgs(BufferInfo buffer, int lastmsgs, int o
                 requestMsgsQuery->value(5).toString(),
                 requestMsgsQuery->value(4).toString(),
                 requestMsgsQuery->value(3).toUInt());
                 requestMsgsQuery->value(5).toString(),
                 requestMsgsQuery->value(4).toString(),
                 requestMsgsQuery->value(3).toUInt());
-    msg.setMsgId(requestMsgsQuery->value(0).value<MsgId>());
+    msg.setMsgId(requestMsgsQuery->value(0).toInt());
     messagelist << msg;
   }
   return messagelist;
     messagelist << msg;
   }
   return messagelist;
@@ -308,7 +308,7 @@ QList<Message> SqliteStorage::requestMsgs(BufferInfo buffer, QDateTime since, in
   QList<Message> messagelist;
   // we have to determine the real offset first
   QSqlQuery *requestMsgsSinceOffsetQuery = cachedQuery("select_messagesSinceOffset");
   QList<Message> messagelist;
   // we have to determine the real offset first
   QSqlQuery *requestMsgsSinceOffsetQuery = cachedQuery("select_messagesSinceOffset");
-  requestMsgsSinceOffsetQuery->bindValue(":bufferid", buffer.uid());
+  requestMsgsSinceOffsetQuery->bindValue(":bufferid", buffer.uid().toInt());
   requestMsgsSinceOffsetQuery->bindValue(":since", since.toTime_t());
   requestMsgsSinceOffsetQuery->exec();
   requestMsgsSinceOffsetQuery->first();
   requestMsgsSinceOffsetQuery->bindValue(":since", since.toTime_t());
   requestMsgsSinceOffsetQuery->exec();
   requestMsgsSinceOffsetQuery->first();
@@ -316,8 +316,8 @@ QList<Message> SqliteStorage::requestMsgs(BufferInfo buffer, QDateTime since, in
 
   // now let's select the messages
   QSqlQuery *requestMsgsSinceQuery = cachedQuery("select_messagesSince");
 
   // now let's select the messages
   QSqlQuery *requestMsgsSinceQuery = cachedQuery("select_messagesSince");
-  requestMsgsSinceQuery->bindValue(":bufferid", buffer.uid());
-  requestMsgsSinceQuery->bindValue(":bufferid2", buffer.uid());
+  requestMsgsSinceQuery->bindValue(":bufferid", buffer.uid().toInt());
+  requestMsgsSinceQuery->bindValue(":bufferid2", buffer.uid().toInt());
   requestMsgsSinceQuery->bindValue(":since", since.toTime_t());
   requestMsgsSinceQuery->bindValue(":offset", offset);
   requestMsgsSinceQuery->exec();
   requestMsgsSinceQuery->bindValue(":since", since.toTime_t());
   requestMsgsSinceQuery->bindValue(":offset", offset);
   requestMsgsSinceQuery->exec();
@@ -329,7 +329,7 @@ QList<Message> SqliteStorage::requestMsgs(BufferInfo buffer, QDateTime since, in
                 requestMsgsSinceQuery->value(5).toString(),
                 requestMsgsSinceQuery->value(4).toString(),
                 requestMsgsSinceQuery->value(3).toUInt());
                 requestMsgsSinceQuery->value(5).toString(),
                 requestMsgsSinceQuery->value(4).toString(),
                 requestMsgsSinceQuery->value(3).toUInt());
-    msg.setMsgId(requestMsgsSinceQuery->value(0).value<MsgId>());
+    msg.setMsgId(requestMsgsSinceQuery->value(0).toInt());
     messagelist << msg;
   }
 
     messagelist << msg;
   }
 
@@ -340,8 +340,8 @@ QList<Message> SqliteStorage::requestMsgs(BufferInfo buffer, QDateTime since, in
 QList<Message> SqliteStorage::requestMsgRange(BufferInfo buffer, int first, int last) {
   QList<Message> messagelist;
   QSqlQuery *requestMsgRangeQuery = cachedQuery("select_messageRange");
 QList<Message> SqliteStorage::requestMsgRange(BufferInfo buffer, int first, int last) {
   QList<Message> messagelist;
   QSqlQuery *requestMsgRangeQuery = cachedQuery("select_messageRange");
-  requestMsgRangeQuery->bindValue(":bufferid", buffer.uid());
-  requestMsgRangeQuery->bindValue(":bufferid2", buffer.uid());
+  requestMsgRangeQuery->bindValue(":bufferid", buffer.uid().toInt());
+  requestMsgRangeQuery->bindValue(":bufferid2", buffer.uid().toInt());
   requestMsgRangeQuery->bindValue(":firstmsg", first);
   requestMsgRangeQuery->bindValue(":lastmsg", last);
 
   requestMsgRangeQuery->bindValue(":firstmsg", first);
   requestMsgRangeQuery->bindValue(":lastmsg", last);
 
@@ -352,7 +352,7 @@ QList<Message> SqliteStorage::requestMsgRange(BufferInfo buffer, int first, int
                 requestMsgRangeQuery->value(5).toString(),
                 requestMsgRangeQuery->value(4).toString(),
                 requestMsgRangeQuery->value(3).toUInt());
                 requestMsgRangeQuery->value(5).toString(),
                 requestMsgRangeQuery->value(4).toString(),
                 requestMsgRangeQuery->value(3).toUInt());
-    msg.setMsgId(requestMsgRangeQuery->value(0).value<MsgId>());
+    msg.setMsgId(requestMsgRangeQuery->value(0).toInt());
     messagelist << msg;
   }
 
     messagelist << msg;
   }
 
index d035fed..c5321b5 100644 (file)
@@ -36,7 +36,7 @@ class LayoutThread;
 class BufferWidget : public QWidget {
   Q_OBJECT
 
 class BufferWidget : public QWidget {
   Q_OBJECT
 
-  Q_PROPERTY(uint currentBuffer READ currentBuffer WRITE setCurrentBuffer); // FIXME BufferId
+  Q_PROPERTY(BufferId currentBuffer READ currentBuffer WRITE setCurrentBuffer);
 
 public:
   BufferWidget(QWidget *parent = 0);
 
 public:
   BufferWidget(QWidget *parent = 0);
index 017a479..d2f55be 100644 (file)
@@ -133,8 +133,8 @@ void ChatLine::setSelection(SelectionMode mode, int start, int end) {
   }
 }
 
   }
 }
 
-uint ChatLine::msgId() const {
-  return msg.buffer().uid();
+MsgId ChatLine::msgId() const {
+  return msg.msgId();
 }
 
 BufferInfo ChatLine::bufferInfo() const {
 }
 
 BufferInfo ChatLine::bufferInfo() const {
index 520b2b9..e488f03 100644 (file)
@@ -52,8 +52,8 @@ void ChatWidget::init(BufferId id) {
   UiSettings s;
   QVariant tsDef = s.value("DefaultTimestampColumnWidth", 90);
   QVariant senderDef = s.value("DefaultSenderColumnWidth", 100);
   UiSettings s;
   QVariant tsDef = s.value("DefaultTimestampColumnWidth", 90);
   QVariant senderDef = s.value("DefaultSenderColumnWidth", 100);
-  tsWidth = s.value(QString("%1/TimestampColumnWidth").arg(bufferId), tsDef).toInt();
-  senderWidth = s.value(QString("%1/SenderColumnWidth").arg(bufferId), senderDef).toInt();
+  tsWidth = s.value(QString("%1/TimestampColumnWidth").arg(bufferId.toInt()), tsDef).toInt();
+  senderWidth = s.value(QString("%1/SenderColumnWidth").arg(bufferId.toInt()), senderDef).toInt();
   computePositions();
   adjustScrollBar();
   verticalScrollBar()->setValue(verticalScrollBar()->maximum());
   computePositions();
   adjustScrollBar();
   verticalScrollBar()->setValue(verticalScrollBar()->maximum());
@@ -77,8 +77,8 @@ ChatWidget::~ChatWidget() {
   UiSettings s;
   s.setValue("DefaultTimestampColumnWidth", tsWidth);  // FIXME stupid dirty quicky
   s.setValue("DefaultSenderColumnWidth", senderWidth);
   UiSettings s;
   s.setValue("DefaultTimestampColumnWidth", tsWidth);  // FIXME stupid dirty quicky
   s.setValue("DefaultSenderColumnWidth", senderWidth);
-  s.setValue(QString("%1/TimestampColumnWidth").arg(bufferId), tsWidth);
-  s.setValue(QString("%1/SenderColumnWidth").arg(bufferId), senderWidth);
+  s.setValue(QString("%1/TimestampColumnWidth").arg(bufferId.toInt()), tsWidth);
+  s.setValue(QString("%1/SenderColumnWidth").arg(bufferId.toInt()), senderWidth);
 }
 
 QSize ChatWidget::sizeHint() const {
 }
 
 QSize ChatWidget::sizeHint() const {
index 3b4a21a..0e3fa4f 100644 (file)
@@ -37,6 +37,7 @@ CoreConnectDlg::CoreConnectDlg(QWidget *parent, bool autoconnect) : QDialog(pare
 
   ui.stackedWidget->setCurrentWidget(ui.accountPage);
   ui.accountButtonBox->setFocus();
 
   ui.stackedWidget->setCurrentWidget(ui.accountPage);
   ui.accountButtonBox->setFocus();
+  ui.accountButtonBox->button(QDialogButtonBox::Ok)->setDefault(true);
 
   CoreAccountSettings s;
   QString lastacc = s.lastAccount();
 
   CoreAccountSettings s;
   QString lastacc = s.lastAccount();
@@ -186,6 +187,7 @@ void CoreConnectDlg::connectToCore() {
   ui.coreInfoLabel->setText("");
   ui.loginStack->setCurrentWidget(ui.loginEmptyPage);
   ui.loginButtonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
   ui.coreInfoLabel->setText("");
   ui.loginStack->setCurrentWidget(ui.loginEmptyPage);
   ui.loginButtonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
+  ui.loginButtonBox->button(QDialogButtonBox::Ok)->setDefault(true);
   ui.loginButtonBox->button(QDialogButtonBox::Ok)->setDisabled(true);
   disconnect(ui.loginButtonBox, 0, this, 0);
   connect(ui.loginButtonBox, SIGNAL(rejected()), this, SLOT(restartPhaseNull()));
   ui.loginButtonBox->button(QDialogButtonBox::Ok)->setDisabled(true);
   disconnect(ui.loginButtonBox, 0, this, 0);
   connect(ui.loginButtonBox, SIGNAL(rejected()), this, SLOT(restartPhaseNull()));
@@ -202,6 +204,7 @@ void CoreConnectDlg::initPhaseError(const QString &error) {
   ui.connectLabel->setText(tr("<div style=color:red;>Connection to %1 failed!</div>").arg(account["Host"].toString()));
   ui.coreInfoLabel->setText(error);
   ui.loginButtonBox->setStandardButtons(QDialogButtonBox::Retry|QDialogButtonBox::Cancel);
   ui.connectLabel->setText(tr("<div style=color:red;>Connection to %1 failed!</div>").arg(account["Host"].toString()));
   ui.coreInfoLabel->setText(error);
   ui.loginButtonBox->setStandardButtons(QDialogButtonBox::Retry|QDialogButtonBox::Cancel);
+  ui.loginButtonBox->button(QDialogButtonBox::Retry)->setDefault(true);
   disconnect(ui.loginButtonBox, 0, this, 0);
   connect(ui.loginButtonBox, SIGNAL(accepted()), this, SLOT(restartPhaseNull()));
   connect(ui.loginButtonBox, SIGNAL(rejected()), this, SLOT(reject()));
   disconnect(ui.loginButtonBox, 0, this, 0);
   connect(ui.loginButtonBox, SIGNAL(accepted()), this, SLOT(restartPhaseNull()));
   connect(ui.loginButtonBox, SIGNAL(rejected()), this, SLOT(reject()));
@@ -239,11 +242,13 @@ void CoreConnectDlg::startLogin() {
   ui.loginStack->setCurrentWidget(ui.loginCredentialsPage);
   ui.loginStack->setMinimumSize(ui.loginStack->sizeHint()); ui.loginStack->updateGeometry();
   ui.loginButtonBox->setStandardButtons(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
   ui.loginStack->setCurrentWidget(ui.loginCredentialsPage);
   ui.loginStack->setMinimumSize(ui.loginStack->sizeHint()); ui.loginStack->updateGeometry();
   ui.loginButtonBox->setStandardButtons(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
+  ui.loginButtonBox->button(QDialogButtonBox::Ok)->setDefault(true);
   if(!account["User"].toString().isEmpty()) {
     ui.user->setText(account["User"].toString());
     if(account["RememberPasswd"].toBool()) {
       ui.password->setText(account["Password"].toString());
       ui.rememberPasswd->setChecked(true);
   if(!account["User"].toString().isEmpty()) {
     ui.user->setText(account["User"].toString());
     if(account["RememberPasswd"].toBool()) {
       ui.password->setText(account["Password"].toString());
       ui.rememberPasswd->setChecked(true);
+      ui.loginButtonBox->setFocus();
     } else {
       ui.rememberPasswd->setChecked(false);
       ui.password->setFocus();
     } else {
       ui.rememberPasswd->setChecked(false);
       ui.password->setFocus();
index 38b07a2..7f8de3b 100644 (file)
@@ -172,16 +172,16 @@ void MainWin::setupMenus() {
 void MainWin::setupViews() {
   BufferModel *model = Client::bufferModel();
 
 void MainWin::setupViews() {
   BufferModel *model = Client::bufferModel();
 
-  addBufferView(tr("All Buffers"), model, BufferViewFilter::AllNets, QList<uint>());
-  addBufferView(tr("All Channels"), model, BufferViewFilter::AllNets|BufferViewFilter::NoQueries|BufferViewFilter::NoServers, QList<uint>());
-  addBufferView(tr("All Queries"), model, BufferViewFilter::AllNets|BufferViewFilter::NoChannels|BufferViewFilter::NoServers, QList<uint>());
-  addBufferView(tr("All Networks"), model, BufferViewFilter::AllNets|BufferViewFilter::NoChannels|BufferViewFilter::NoQueries, QList<uint>());
-  addBufferView(tr("Full Custom"), model, BufferViewFilter::FullCustom, QList<uint>());
+  addBufferView(tr("All Buffers"), model, BufferViewFilter::AllNets, QList<NetworkId>());
+  addBufferView(tr("All Channels"), model, BufferViewFilter::AllNets|BufferViewFilter::NoQueries|BufferViewFilter::NoServers, QList<NetworkId>());
+  addBufferView(tr("All Queries"), model, BufferViewFilter::AllNets|BufferViewFilter::NoChannels|BufferViewFilter::NoServers, QList<NetworkId>());
+  addBufferView(tr("All Networks"), model, BufferViewFilter::AllNets|BufferViewFilter::NoChannels|BufferViewFilter::NoQueries, QList<NetworkId>());
+  addBufferView(tr("Full Custom"), model, BufferViewFilter::FullCustom, QList<NetworkId>());
 
   ui.menuViews->addSeparator();
 }
 
 
   ui.menuViews->addSeparator();
 }
 
-void MainWin::addBufferView(const QString &viewname, QAbstractItemModel *model, const BufferViewFilter::Modes &mode, const QList<uint> &nets) {
+void MainWin::addBufferView(const QString &viewname, QAbstractItemModel *model, const BufferViewFilter::Modes &mode, const QList<NetworkId> &nets) {
   QDockWidget *dock = new QDockWidget(viewname, this);
   dock->setObjectName(QString("ViewDock-" + viewname)); // should be unique for mainwindow state!
   dock->setAllowedAreas(Qt::RightDockWidgetArea|Qt::LeftDockWidgetArea);
   QDockWidget *dock = new QDockWidget(viewname, this);
   dock->setObjectName(QString("ViewDock-" + viewname)); // should be unique for mainwindow state!
   dock->setAllowedAreas(Qt::RightDockWidgetArea|Qt::LeftDockWidgetArea);
index 00cfd68..222a6e3 100644 (file)
@@ -45,7 +45,7 @@ class MainWin : public QMainWindow {
     virtual ~MainWin();
 
     void init();
     virtual ~MainWin();
 
     void init();
-    void addBufferView(const QString &, QAbstractItemModel *, const BufferViewFilter::Modes &, const QList<uint> &);
+    void addBufferView(const QString &, QAbstractItemModel *, const BufferViewFilter::Modes &, const QList<NetworkId> &);
 
     AbstractUiMsg *layoutMsg(const Message &);
 
 
     AbstractUiMsg *layoutMsg(const Message &);
 
index d58735f..b21182d 100644 (file)
@@ -32,7 +32,7 @@ class NickView;
 class NickListWidget : public QWidget {
   Q_OBJECT
 
 class NickListWidget : public QWidget {
   Q_OBJECT
 
-  Q_PROPERTY(uint currentBuffer READ currentBuffer WRITE setCurrentBuffer); // FIXME BufferId
+  Q_PROPERTY(BufferId currentBuffer READ currentBuffer WRITE setCurrentBuffer); // FIXME BufferId
 
 public:
   NickListWidget(QWidget *parent = 0);
 
 public:
   NickListWidget(QWidget *parent = 0);
index e78e645..ab9dd83 100644 (file)
@@ -101,7 +101,7 @@ void IdentitiesSettingsPage::save() {
       Identity *temp = *i;
       i = identities.erase(i);
       toCreate.append(temp);
       Identity *temp = *i;
       i = identities.erase(i);
       toCreate.append(temp);
-      ui.identityList->removeItem(ui.identityList->findData(temp->id()));
+      ui.identityList->removeItem(ui.identityList->findData(temp->id().toInt()));
     } else {
       if(**i != *Client::identity((*i)->id())) {
         toUpdate.append(*i);
     } else {
       if(**i != *Client::identity((*i)->id())) {
         toUpdate.append(*i);
@@ -214,31 +214,31 @@ void IdentitiesSettingsPage::insertIdentity(Identity *identity) {
   identities[id] = identity;
   if(id == 1) {
     // default identity is always the first one!
   identities[id] = identity;
   if(id == 1) {
     // default identity is always the first one!
-    ui.identityList->insertItem(0, identity->identityName(), id);
+    ui.identityList->insertItem(0, identity->identityName(), id.toInt());
   } else {
     QString name = identity->identityName();
     for(int j = 0; j < ui.identityList->count(); j++) {
       if((j>0 || ui.identityList->itemData(0).toInt() != 1) && name.localeAwareCompare(ui.identityList->itemText(j)) < 0) {
   } else {
     QString name = identity->identityName();
     for(int j = 0; j < ui.identityList->count(); j++) {
       if((j>0 || ui.identityList->itemData(0).toInt() != 1) && name.localeAwareCompare(ui.identityList->itemText(j)) < 0) {
-        ui.identityList->insertItem(j, name, id);
+        ui.identityList->insertItem(j, name, id.toInt());
         widgetHasChanged();
         return;
       }
     }
     // append
         widgetHasChanged();
         return;
       }
     }
     // append
-    ui.identityList->insertItem(ui.identityList->count(), name, id);
+    ui.identityList->insertItem(ui.identityList->count(), name, id.toInt());
     widgetHasChanged();
   }
 }
 
 void IdentitiesSettingsPage::renameIdentity(IdentityId id, const QString &newName) {
   Identity *identity = identities[id];
     widgetHasChanged();
   }
 }
 
 void IdentitiesSettingsPage::renameIdentity(IdentityId id, const QString &newName) {
   Identity *identity = identities[id];
-  ui.identityList->setItemText(ui.identityList->findData(identity->id()), newName);
+  ui.identityList->setItemText(ui.identityList->findData(identity->id().toInt()), newName);
   identity->setIdentityName(newName);
 }
 
 void IdentitiesSettingsPage::removeIdentity(Identity *id) {
   identities.remove(id->id());
   identity->setIdentityName(newName);
 }
 
 void IdentitiesSettingsPage::removeIdentity(Identity *id) {
   identities.remove(id->id());
-  ui.identityList->removeItem(ui.identityList->findData(id->id()));
+  ui.identityList->removeItem(ui.identityList->findData(id->id().toInt()));
   changedIdentities.removeAll(id->id());
   if(currentId == id->id()) currentId = 0;
   id->deleteLater();
   changedIdentities.removeAll(id->id());
   if(currentId == id->id()) currentId = 0;
   id->deleteLater();
@@ -250,7 +250,7 @@ void IdentitiesSettingsPage::on_identityList_currentIndexChanged(int index) {
     //ui.identityList->setEditable(false);
     displayIdentity(0);
   } else {
     //ui.identityList->setEditable(false);
     displayIdentity(0);
   } else {
-    IdentityId id = ui.identityList->itemData(index).value<IdentityId>();
+    IdentityId id = ui.identityList->itemData(index).toInt();
     if(identities.contains(id)) displayIdentity(identities[id]);
     ui.deleteIdentity->setEnabled(id != 1); // default identity cannot be deleted
     ui.renameIdentity->setEnabled(id != 1); // ...or renamed
     if(identities.contains(id)) displayIdentity(identities[id]);
     ui.deleteIdentity->setEnabled(id != 1); // default identity cannot be deleted
     ui.renameIdentity->setEnabled(id != 1); // ...or renamed
@@ -320,9 +320,9 @@ void IdentitiesSettingsPage::on_addIdentity_clicked() {
     // find a free (negative) ID
     IdentityId id;
     for(id = 1; id <= identities.count(); id++) {
     // find a free (negative) ID
     IdentityId id;
     for(id = 1; id <= identities.count(); id++) {
-      if(!identities.keys().contains(-id)) break;
+      if(!identities.keys().contains(-id.toInt())) break;
     }
     }
-    id *= -1;
+    id = -id.toInt();
     Identity *newId = new Identity(id, this);
     if(dlg.duplicateId() != 0) {
       // duplicate
     Identity *newId = new Identity(id, this);
     if(dlg.duplicateId() != 0) {
       // duplicate
@@ -332,7 +332,7 @@ void IdentitiesSettingsPage::on_addIdentity_clicked() {
     newId->setIdentityName(dlg.identityName());
     identities[id] = newId;
     insertIdentity(newId);
     newId->setIdentityName(dlg.identityName());
     identities[id] = newId;
     insertIdentity(newId);
-    ui.identityList->setCurrentIndex(ui.identityList->findData(id));
+    ui.identityList->setCurrentIndex(ui.identityList->findData(id.toInt()));
     widgetHasChanged();
   }
 }
     widgetHasChanged();
   }
 }
@@ -431,7 +431,7 @@ QString CreateIdentityDlg::identityName() const {
 IdentityId CreateIdentityDlg::duplicateId() const {
   if(!ui.duplicateIdentity->isChecked()) return 0;
   if(ui.identityList->currentIndex() >= 0) {
 IdentityId CreateIdentityDlg::duplicateId() const {
   if(!ui.duplicateIdentity->isChecked()) return 0;
   if(ui.identityList->currentIndex() >= 0) {
-    return ui.identityList->itemData(ui.identityList->currentIndex()).value<IdentityId>();
+    return ui.identityList->itemData(ui.identityList->currentIndex()).toInt();
   }
   return 0;
 }
   }
   return 0;
 }
index c0bddb7..a0d5b28 100644 (file)
@@ -49,7 +49,7 @@ void BufferView::init() {
   connect(this, SIGNAL(activated(QModelIndex)), this, SLOT(joinChannel(QModelIndex)));
 }
 
   connect(this, SIGNAL(activated(QModelIndex)), this, SLOT(joinChannel(QModelIndex)));
 }
 
-void BufferView::setFilteredModel(QAbstractItemModel *model, BufferViewFilter::Modes mode, QList<uint> nets) {
+void BufferView::setFilteredModel(QAbstractItemModel *model, BufferViewFilter::Modes mode, QList<NetworkId> nets) {
   BufferViewFilter *filter = new BufferViewFilter(model, mode, nets);
   setModel(filter);
   connect(this, SIGNAL(removeBuffer(const QModelIndex &)), filter, SLOT(removeBuffer(const QModelIndex &)));
   BufferViewFilter *filter = new BufferViewFilter(model, mode, nets);
   setModel(filter);
   connect(this, SIGNAL(removeBuffer(const QModelIndex &)), filter, SLOT(removeBuffer(const QModelIndex &)));
index 4a752c7..511d80f 100644 (file)
@@ -36,7 +36,7 @@ public:
   BufferView(QWidget *parent = 0);
   void init();
   void setModel(QAbstractItemModel *model);
   BufferView(QWidget *parent = 0);
   void init();
   void setModel(QAbstractItemModel *model);
-  void setFilteredModel(QAbstractItemModel *model, BufferViewFilter::Modes mode, QList<uint> nets);
+  void setFilteredModel(QAbstractItemModel *model, BufferViewFilter::Modes mode, QList<NetworkId> nets);
   
 signals:
   void removeBuffer(const QModelIndex &);
   
 signals:
   void removeBuffer(const QModelIndex &);
index 4e7af88..b8a1975 100644 (file)
 /*****************************************
 * The Filter for the Tree View
 *****************************************/
 /*****************************************
 * The Filter for the Tree View
 *****************************************/
-BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, const Modes &filtermode, const QList<uint> &nets)
+BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, const Modes &filtermode, const QList<NetworkId> &nets)
   : QSortFilterProxyModel(model),
     mode(filtermode),
   : QSortFilterProxyModel(model),
     mode(filtermode),
-    networks(QSet<uint>::fromList(nets))
+    networks(QSet<NetworkId>::fromList(nets))
 {
   setSourceModel(model);
   setSortCaseSensitivity(Qt::CaseInsensitive);
 {
   setSourceModel(model);
   setSortCaseSensitivity(Qt::CaseInsensitive);
index 506cbeb..5e874f2 100644 (file)
@@ -47,7 +47,7 @@ public:
   };
   Q_DECLARE_FLAGS(Modes, Mode);
 
   };
   Q_DECLARE_FLAGS(Modes, Mode);
 
-  BufferViewFilter(QAbstractItemModel *model, const Modes &mode, const QList<uint> &nets);
+  BufferViewFilter(QAbstractItemModel *model, const Modes &mode, const QList<NetworkId> &nets);
   
   virtual Qt::ItemFlags flags(const QModelIndex &index) const;
   virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent);
   
   virtual Qt::ItemFlags flags(const QModelIndex &index) const;
   virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent);
@@ -65,8 +65,8 @@ protected:
   
 private:
   Modes mode;
   
 private:
   Modes mode;
-  QSet<uint> networks;
-  QSet<uint> buffers;
+  QSet<NetworkId> networks;
+  QSet<BufferId> buffers;
 
   bool filterAcceptBuffer(const QModelIndex &) const;
   bool filterAcceptNetwork(const QModelIndex &) const;
 
   bool filterAcceptBuffer(const QModelIndex &) const;
   bool filterAcceptNetwork(const QModelIndex &) const;
index a8ef687..3538bf3 100644 (file)
@@ -5,14 +5,14 @@
 
   quasselVersion = "0.2.0-pre";
   quasselDate = "2008-01-19";
 
   quasselVersion = "0.2.0-pre";
   quasselDate = "2008-01-19";
-  quasselBuild = 357;
+  quasselBuild = 358;
 
   //! Minimum client build number the core needs
 
   //! Minimum client build number the core needs
-  clientBuildNeeded = 355;
+  clientBuildNeeded = 358;
   clientVersionNeeded = quasselVersion;
 
   //! Minimum core build number the client needs
   clientVersionNeeded = quasselVersion;
 
   //! Minimum core build number the client needs
-  coreBuildNeeded = 355;
+  coreBuildNeeded = 358;
   coreVersionNeeded = quasselVersion;
 
 }
   coreVersionNeeded = quasselVersion;
 
 }