/***************************************************************************
- * Copyright (C) 2005-07 by The Quassel IRC Development 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 *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
+ * (at your option) version 3. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
+#include <QDateTime>
#include <QObject>
-#include <QStringList>
+#include <QMetaType>
#include "global.h"
-#include "logger.h"
#include "message.h"
-#include "util.h"
+#include "identity.h"
+#include "network.h"
+#include "bufferinfo.h"
+#include "types.h"
+#include "syncableobject.h"
extern void messageHandler(QtMsgType type, const char *msg);
}
*/
-/**************************************************************************************/
-
-
-
-BufferId::BufferId(uint _id, QString _net, QString _buf, uint _gid) : id(_id), gid(_gid), net(_net), buf(_buf) {
-
-
-}
-
-QString BufferId::buffer() const {
- if(isChannelName(buf)) return buf;
- else return nickFromMask(buf);
-}
-
-QDataStream &operator<<(QDataStream &out, const BufferId &bufferId) {
- out << bufferId.id << bufferId.gid << bufferId.net.toUtf8() << bufferId.buf.toUtf8();
-}
-
-QDataStream &operator>>(QDataStream &in, BufferId &bufferId) {
- QByteArray n, b;
- BufferId i;
- in >> bufferId.id >> bufferId.gid >> n >> b;
- bufferId.net = QString::fromUtf8(n);
- bufferId.buf = QString::fromUtf8(b);
-}
-
-uint qHash(const BufferId &bid) {
- return qHash(bid.id);
-}
-
/**
* Retrieves an icon determined by its symbolic name. The mapping shall later
* be performed by a theme manager or something like that.
// return 0;
//}
+//! Register our custom types with Qt's Meta Object System.
+/** This makes them available for QVariant and in signals/slots, among other things.
+ *
+ */
+void Global::registerMetaTypes() {
+ // Complex types
+ qRegisterMetaType<QVariant>("QVariant");
+ qRegisterMetaType<Message>("Message");
+ qRegisterMetaType<BufferInfo>("BufferInfo");
+ qRegisterMetaType<NetworkInfo>("NetworkInfo");
+ qRegisterMetaType<Identity>("Identity");
+ qRegisterMetaType<Network::ConnectionState>("Network::ConnectionState");
+
+ qRegisterMetaTypeStreamOperators<QVariant>("QVariant");
+ qRegisterMetaTypeStreamOperators<Message>("Message");
+ qRegisterMetaTypeStreamOperators<BufferInfo>("BufferInfo");
+ qRegisterMetaTypeStreamOperators<NetworkInfo>("NetworkInfo");
+ qRegisterMetaTypeStreamOperators<Identity>("Identity");
+ qRegisterMetaTypeStreamOperators<qint8>("Network::ConnectionState");
+
+ qRegisterMetaType<IdentityId>("IdentityId");
+ qRegisterMetaType<BufferId>("BufferId");
+ qRegisterMetaType<NetworkId>("NetworkId");
+ qRegisterMetaType<UserId>("UserId");
+ qRegisterMetaType<AccountId>("AccountId");
+ qRegisterMetaType<MsgId>("MsgId");
+
+ qRegisterMetaTypeStreamOperators<IdentityId>("IdentityId");
+ qRegisterMetaTypeStreamOperators<BufferId>("BufferId");
+ qRegisterMetaTypeStreamOperators<NetworkId>("NetworkId");
+ qRegisterMetaTypeStreamOperators<UserId>("UserId");
+ qRegisterMetaTypeStreamOperators<AccountId>("AccountId");
+ qRegisterMetaTypeStreamOperators<MsgId>("MsgId");
+}
+
+//! This includes version.inc and possibly version.gen and sets up our version numbers.
+void Global::setupVersion() {
+
+# include "version.inc"
+# include "version.gen"
+
+ if(quasselGeneratedVersion.isEmpty()) {
+ if(quasselCommit.isEmpty())
+ quasselVersion = QString("v%1 (unknown rev)").arg(quasselBaseVersion);
+ else
+ quasselVersion = QString("v%1 (dist-%2, %3)").arg(quasselBaseVersion).arg(quasselCommit.left(7))
+ .arg(QDateTime::fromTime_t(quasselArchiveDate).toLocalTime().toString("yyyy-MM-dd"));
+ } else {
+ QStringList parts = quasselGeneratedVersion.split(':');
+ quasselVersion = QString("v%1").arg(parts[0]);
+ if(parts.count() >= 2) quasselVersion.append(QString(" (%1)").arg(parts[1]));
+ }
+ quasselBuildDate = __DATE__;
+ quasselBuildTime = __TIME__;
+}
+
+// Static variables
+
+QString Global::quasselVersion;
+QString Global::quasselBaseVersion;
+QString Global::quasselGeneratedVersion;
+QString Global::quasselBuildDate;
+QString Global::quasselBuildTime;
+QString Global::quasselCommit;
+uint Global::quasselArchiveDate;
+uint Global::protocolVersion;
+uint Global::clientNeedsProtocol;
+uint Global::coreNeedsProtocol;
+
Global::RunMode Global::runMode;
-QString Global::quasselDir;
+uint Global::defaultPort;
+
+bool Global::DEBUG;
+CliParser Global::parser;