* 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 <QtCore>
//#include <QMutex>
/* Some global stuff */
typedef QMap<QString, QVariant> 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 };
private:
static void initIconMap();
-
+
//static Logger *logger;
// static QString iconPath;