X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fsyncableobject.h;h=388ed90ac27c1b1c518f443e319d8694a9b1fb24;hp=f89c1680040ca3839af9845f31bf0146abf325ed;hb=8ec76e512d20ce5d1dc76de556bb98a06b75d695;hpb=b797e5f581b10a517c30f78cb53f813af741e261 diff --git a/src/common/syncableobject.h b/src/common/syncableobject.h index f89c1680..388ed90a 100644 --- a/src/common/syncableobject.h +++ b/src/common/syncableobject.h @@ -29,35 +29,48 @@ class SyncableObject : public QObject { Q_OBJECT - public: - SyncableObject(QObject *parent = 0); - SyncableObject(const SyncableObject &other, QObject *parent = 0); - - //! 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 - * derived classes in order to store the object state in a custom form. - * \Note: This is used by SignalProxy to transmit the state of the object to clients - * that request the initial object state. Later updates use a different mechanism - * and assume that the state is completely covered by properties and init* getters. - * DO NOT OVERRIDE THIS unless you know exactly what you do! - * \return The object's state in a QVariantMap - */ - virtual QVariantMap toVariantMap(); - - //! Initialize the object's state from a given QVariantMap. - /** \see toVarianMap() for important information concerning this method. - */ - virtual void fromVariantMap(const QVariantMap &map); - - private: - bool setInitValue(const QString &property, const QVariant &value); +public: + SyncableObject(QObject *parent = 0); + SyncableObject(const SyncableObject &other, QObject *parent = 0); -}; + //! 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 + * derived classes in order to store the object state in a custom form. + * \note This is used by SignalProxy to transmit the state of the object to clients + * that request the initial object state. Later updates use a different mechanism + * and assume that the state is completely covered by properties and init* getters. + * DO NOT OVERRIDE THIS unless you know exactly what you do! + * + * \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 bool isInitialized() const; + + virtual const QMetaObject *syncMetaObject() const { return metaObject(); }; -QDataStream &operator<<(QDataStream &out, SyncableObject object); -QDataStream &operator>>(QDataStream &in, SyncableObject &object); +public slots: + virtual void setInitialized(); -Q_DECLARE_METATYPE(SyncableObject); +protected: + void renameObject(const QString &newName); + +signals: + void initDone(); + void updatedRemotely(); + void objectRenamed(QString newName, QString oldName); + +private: + bool setInitValue(const QString &property, const QVariant &value); + + bool _initialized; + +}; #endif