X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fglobal.h;h=777be21521d242f59a59250413c0ff09b8662fd2;hp=efa27aa18aab57d182b2d803fd880ff0d329ae17;hb=3982589b93aa14c3cede148b8a5158b63055d65c;hpb=44b22c4419f478a20f6324f9f3a700a2dec56302 diff --git a/src/common/global.h b/src/common/global.h index efa27aa1..777be215 100644 --- a/src/common/global.h +++ b/src/common/global.h @@ -1,11 +1,11 @@ /*************************************************************************** - * Copyright (C) 2005 by The Quassel 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 * @@ -18,129 +18,44 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ +// This file needs probably to go away at some point. Not much left anymore. + #ifndef _GLOBAL_H_ #define _GLOBAL_H_ -/** The protocol version we use fo the communication between core and GUI */ -#define GUI_PROTOCOL 3 - -#define BACKLOG_FORMAT 2 -#define BACKLOG_STRING "QuasselIRC Backlog File" - -#define DEFAULT_PORT 4242 - -class Global; - -#include -#include #include -#include - -/* Some global stuff */ -typedef QMap VarMap; - -typedef uint UserId; -typedef uint MsgId; - -/** - * This class is mostly a globally synchronized data store, meant for storing systemwide settings such - * as identities or network lists. This class is a singleton, but not static as we'd like to use signals and - * slots with it. - * The global object is used in both Core and GUI clients. Storing and retrieving data is thread-safe. - * \note While updated data is propagated to all the remote parts of Quassel quite quickly, the synchronization - * protocol is in no way designed to guarantee strict consistency at all times. In other words, it may - * well happen that different instances of global data differ from one another for a little while until - * all update messages have been processed. You should never rely on all global data stores being consistent. -*/ -class Global : public QObject { - Q_OBJECT - - public: - //static Logger *getLogger(); - //static void setLogger(Logger *); - -// static QIcon *getIcon(QString symbol); - - static Global *instance(); - static void destroy(); - static void setGuiUser(UserId); - - static QVariant data(QString key, QVariant defaultValue = QVariant()); - static QVariant data(UserId, QString key, QVariant defaultValue = QVariant()); - static QStringList keys(); - static QStringList keys(UserId); - static void putData(QString key, QVariant data); ///< Store data changed locally, will be propagated to all other clients and the core - static void putData(UserId, QString key, QVariant data); +// Enable some shortcuts and stuff +//#define DEVELMODE - static void updateData(QString key, QVariant data); ///< Update stored data if requested by the core or other clients - static void updateData(UserId, QString key, QVariant data); - - signals: - void dataPutLocally(UserId, QString key); - void dataUpdatedRemotely(UserId, QString key); // sent by remote update only! - - public: - enum RunMode { Monolithic, ClientOnly, CoreOnly }; - static RunMode runMode; - static QString quasselDir; - - private: - Global(); - ~Global(); - static Global *instanceptr; - - static UserId guiUser; - //static void initIconMap(); - - //static Logger *logger; - -// static QString iconPath; - //QHash iconMap; - static QMutex mutex; - QHash > datastore; -}; - -struct Exception { - Exception(QString msg = "Unknown Exception") : _msg(msg) {}; - virtual ~Exception() {}; // make gcc happy - virtual inline QString msg() { return _msg; } +/* Some global stuff */ - protected: - QString _msg; +namespace Global { -}; + extern QString quasselVersion; + extern QString quasselBaseVersion; + extern QString quasselBuildDate; + extern QString quasselBuildTime; + extern uint protocolVersion; -class BufferId { - public: - BufferId() { id = gid = 0; } // FIXME - BufferId(uint uid, QString net, QString buf, uint gid = 0); + extern uint clientNeedsProtocol; //< Minimum protocol version the client needs + extern uint coreNeedsProtocol; //< Minimum protocol version the core needs - inline uint uid() const { return id; } - inline uint groupId() const { return gid; } - inline QString network() const { return net; } - QString buffer() const; // nickfrommask? + extern QString quasselGeneratedVersion; //< This is possibly set in version.gen - void setGroupId(uint _gid) { gid = _gid; } + // We need different config (QSettings) files for client and gui, since the core cannot work with GUI types + // Set these here. They're used in ClientSettings and CoreSettings. + const QString coreApplicationName = "Quassel Core"; + const QString clientApplicationName = "Quassel Client"; - inline bool operator==(const BufferId &other) const { return id == other.id; } + enum RunMode { Monolithic, ClientOnly, CoreOnly }; + extern RunMode runMode; + extern unsigned int defaultPort; - private: - uint id; - uint gid; - QString net; - QString buf; + extern bool DEBUG; - friend uint qHash(const BufferId &); - friend QDataStream &operator<<(QDataStream &out, const BufferId &bufferId); - friend QDataStream &operator>>(QDataStream &in, BufferId &bufferId); + void registerMetaTypes(); + void setupVersion(); }; -QDataStream &operator<<(QDataStream &out, const BufferId &bufferId); -QDataStream &operator>>(QDataStream &in, BufferId &bufferId); - -Q_DECLARE_METATYPE(BufferId); - -uint qHash(const BufferId &); - #endif