projects
/
quassel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Testing a new concept for the SyncableObjects.
[quassel.git]
/
src
/
common
/
syncableobject.h
diff --git
a/src/common/syncableobject.h
b/src/common/syncableobject.h
index
1eb8ed4
..
201c002
100644
(file)
--- a/
src/common/syncableobject.h
+++ b/
src/common/syncableobject.h
@@
-1,5
+1,5
@@
/***************************************************************************
/***************************************************************************
- * Copyright (C) 2005-0
8 by the Quassel IRC Team
*
+ * Copyright (C) 2005-0
9 by the Quassel Project
*
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
@@
-18,21
+18,26
@@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
* 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>
#include <QObject>
#include <QVariantMap>
#include <QDataStream>
#include <QMetaType>
#include <QObject>
#include <QVariantMap>
+#include "signalproxy.h"
+
class SyncableObject : public QObject {
Q_OBJECT
public:
SyncableObject(QObject *parent = 0);
class SyncableObject : public QObject {
Q_OBJECT
public:
SyncableObject(QObject *parent = 0);
+ SyncableObject(const QString &objectName, QObject *parent = 0);
SyncableObject(const SyncableObject &other, QObject *parent = 0);
SyncableObject(const SyncableObject &other, QObject *parent = 0);
+ void synchronize(SignalProxy *proxy);
+
//! Stores the object's state into a QVariantMap.
/** The default implementation takes dynamic properties as well as getters that have
* names starting with "init" and stores them in a QVariantMap. Override this method in
//! Stores the object's state into a QVariantMap.
/** The default implementation takes dynamic properties as well as getters that have
* names starting with "init" and stores them in a QVariantMap. Override this method in
@@
-45,30
+50,49
@@
public:
* \return The object's state in a QVariantMap
*/
virtual QVariantMap toVariantMap();
* \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.
*/
//! 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 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();
public slots:
virtual void setInitialized();
+ void requestUpdate(const QVariantMap &properties);
+ virtual void update(const QVariantMap &properties);
protected:
protected:
+ void sync_call__(SignalProxy::ProxyMode modeType, const char *funcname, ...);
+
void renameObject(const QString &newName);
void renameObject(const QString &newName);
-
+ SyncableObject &operator=(const SyncableObject &other);
+
signals:
void initDone();
void updatedRemotely();
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);
void objectRenamed(QString newName, QString oldName);
private:
bool setInitValue(const QString &property, const QVariant &value);
-
+
bool _initialized;
bool _initialized;
+ bool _allowClientUpdates;
+ QList<SignalProxy *> _signalProxies;
};
};
+#define so_sync(...) sync_call__(SignalProxy::Server, __func__, __VA_ARGS__);
+#define so_request(...) sync_call__(SignalProxy::Client, __func__, __VA_ARGS__);
+#define so_arg_cast(x) const_cast<void *>(reinterpret_cast<const void*>(&x))
+
+
#endif
#endif