X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;ds=inline;f=main%2Fquassel.h;h=ad4cb1db9a7d856fefda9b9bd40d0c896be48118;hb=04e21ce26ebabdde9586ca9d2a3168431e448df5;hp=3d2b54128e820e8863e13c8299b7c9a8312bb56b;hpb=91ee3f5533474f265553a0870bb1c07a4b686906;p=quassel.git diff --git a/main/quassel.h b/main/quassel.h index 3d2b5412..ad4cb1db 100644 --- a/main/quassel.h +++ b/main/quassel.h @@ -18,40 +18,51 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#ifndef _QUASSEL_H_ -#define _QUASSEL_H_ +#ifndef _GLOBAL_H_ +#define _GLOBAL_H_ -class Quassel; +/** The protocol version we use fo the communication between core and GUI */ +#define GUI_PROTOCOL 1 + +class Global; #include //#include /* Some global stuff */ typedef QMap VarMap; -extern Quassel *quassel; +extern Global *global; /** - * A static class containing global data. - * This is used in both core and GUI modules. Where appropriate, accessors are thread-safe - * to account for that fact. - */ -class Quassel : public QObject { + * 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: - Quassel(); + Global(); //static Logger *getLogger(); //static void setLogger(Logger *); // static QIcon *getIcon(QString symbol); - QVariant getData(QString key); + QVariant getData(QString key, QVariant defaultValue = QVariant()); + QStringList getKeys(); public slots: - void putData(QString key, const QVariant &data); + void putData(QString key, QVariant data); ///< Store data changed locally, will be propagated to all other clients and the core + void updateData(QString key, QVariant data); ///< Update stored data if requested by the core or other clients signals: - void dataChanged(QString key, const QVariant &data); + void dataPutLocally(QString key); + void dataUpdatedRemotely(QString key); // sent by remote update only! public: enum RunMode { Monolithic, GUIOnly, CoreOnly }; @@ -59,7 +70,7 @@ class Quassel : public QObject { private: static void initIconMap(); - + //static Logger *logger; // static QString iconPath;