00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KOGENCOMMAND_H
00021 #define KOGENCOMMAND_H
00022
00023 #include <kcommand.h>
00024
00029 template<class Property, class Object, void (Object::* Function) (Property)> class KoSetBasicPropCommand : public KNamedCommand {
00030
00031 public:
00032 KoSetBasicPropCommand(Object *object, const QString &name) : KNamedCommand(name), m_object(object) {}
00033 KoSetBasicPropCommand(Object *object, const QString &name,
00034 const Property &oldProperty, const Property &newProperty) : KNamedCommand(name),
00035 m_object(object), m_oldProperty(oldProperty), m_newProperty(newProperty) {}
00036 virtual ~KoSetBasicPropCommand() {}
00037
00038 virtual void execute() { if(m_object) (m_object->*Function)(m_newProperty); }
00039 virtual void unexecute() { if(m_object) (m_object->*Function)(m_oldProperty); }
00040
00041 void setOldProperty(const Property &oldProperty) { m_oldProperty=oldProperty; }
00042 const Property &oldProperty() const { return m_oldProperty; }
00043 void setNewProperty(const Property &newProperty) { m_newProperty=newProperty; }
00044 const Property &newProperty() const { return m_newProperty; }
00045
00046 private:
00047
00048 KoSetBasicPropCommand(const KoSetBasicPropCommand<Property, Object, Function> &rhs);
00049 KoSetBasicPropCommand &operator=(const KoSetBasicPropCommand<Property, Object, Function> &rhs);
00050
00051 Object *m_object;
00052 Property m_oldProperty, m_newProperty;
00053 };
00054
00059 template<class Property, class Object, void (Object::* Function) (const Property &)> class KoSetPropCommand : public KNamedCommand {
00060
00061 public:
00062 KoSetPropCommand(Object *object, const QString &name) : KNamedCommand(name), m_object(object) {}
00063 KoSetPropCommand(Object *object, const QString &name,
00064 const Property &oldProperty, const Property &newProperty) : KNamedCommand(name),
00065 m_object(object), m_oldProperty(oldProperty), m_newProperty(newProperty) {}
00066 virtual ~KoSetPropCommand() {}
00067
00068 virtual void execute() { if(m_object) (m_object->*Function)(m_newProperty); }
00069 virtual void unexecute() { if(m_object) (m_object->*Function)(m_oldProperty); }
00070
00071 void setOldProperty(const Property &oldProperty) { m_oldProperty=oldProperty; }
00072 const Property &oldProperty() const { return m_oldProperty; }
00073 void setNewProperty(const Property &newProperty) { m_newProperty=newProperty; }
00074 const Property &newProperty() const { return m_newProperty; }
00075
00076 private:
00077
00078 KoSetPropCommand(const KoSetPropCommand<Property, Object, Function> &rhs);
00079 KoSetPropCommand &operator=(const KoSetPropCommand<Property, Object, Function> &rhs);
00080
00081 Object *m_object;
00082 Property m_oldProperty, m_newProperty;
00083 };
00084
00085 #endif
00086