-/**
- * 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);
-
- 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<QString, QString> iconMap;
- static QMutex mutex;
- QHash<UserId, QHash<QString, QVariant> > datastore;
-};