/***************************************************************************
- * Copyright (C) 2005-08 by the Quassel IRC Team *
+ * Copyright (C) 2005-09 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
-#ifndef _SYNCABLEOBJECT_H_
-#define _SYNCABLEOBJECT_H_
+#ifndef SYNCABLEOBJECT_H
+#define SYNCABLEOBJECT_H
#include <QDataStream>
#include <QMetaType>
public:
SyncableObject(QObject *parent = 0);
+ SyncableObject(const QString &objectName, QObject *parent = 0);
SyncableObject(const SyncableObject &other, QObject *parent = 0);
//! Stores the object's state into a QVariantMap.
* \return The object's state in a QVariantMap
*/
virtual QVariantMap toVariantMap();
-
+
//! Initialize the object's state from a given QVariantMap.
/** \see toVariantMap() for important information concerning this method.
*/
- virtual void fromVariantMap(const QVariantMap &map);
+ virtual void fromVariantMap(const QVariantMap &properties);
virtual bool isInitialized() const;
+ virtual const QMetaObject *syncMetaObject() const { return metaObject(); };
+
+ inline void setAllowClientUpdates(bool allow) { _allowClientUpdates = allow; }
+ inline bool allowClientUpdates() const { return _allowClientUpdates; }
+
public slots:
virtual void setInitialized();
+ void requestUpdate(const QVariantMap &properties);
+ virtual void update(const QVariantMap &properties);
protected:
void renameObject(const QString &newName);
-
+ SyncableObject &operator=(const SyncableObject &other);
+
signals:
void initDone();
void updatedRemotely();
+ void updated(const QVariantMap &properties);
+ void updateRequested(const QVariantMap &properties);
void objectRenamed(QString newName, QString oldName);
private:
bool setInitValue(const QString &property, const QVariant &value);
-
+
bool _initialized;
+ bool _allowClientUpdates;
};