-// 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); }
+};
+
+struct AccountId : public SignedId {
+ inline AccountId(int _id = 0) : SignedId(_id) {}
+};
+
+Q_DECLARE_METATYPE(UserId)
+Q_DECLARE_METATYPE(MsgId)
+Q_DECLARE_METATYPE(BufferId)
+Q_DECLARE_METATYPE(NetworkId)
+Q_DECLARE_METATYPE(IdentityId)
+Q_DECLARE_METATYPE(AccountId)
+
+Q_DECLARE_METATYPE(QHostAddress)
+
+// a few typedefs
+typedef QList<MsgId> MsgIdList;
+typedef QList<BufferId> BufferIdList;