You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.9 KiB
94 lines
2.9 KiB
#ifndef AUTOPROPERTY_H
|
|
#define AUTOPROPERTY_H
|
|
|
|
#include <QObject>
|
|
|
|
//See Gist Comment for description, usage, warnings and license information
|
|
|
|
#define US_PROPERTY(TYPE, NAME, DEFAULT_VALUE) \
|
|
Q_PROPERTY(TYPE NAME READ NAME WRITE NAME NOTIFY NAME ## Changed) \
|
|
public: \
|
|
TYPE NAME() const { return _ ## NAME; } \
|
|
void NAME ## Internal(TYPE value) { \
|
|
if(_ ## NAME == value)return; \
|
|
_ ## NAME = value; \
|
|
emit NAME ## Changed(value); \
|
|
} \
|
|
void NAME(TYPE value) { \
|
|
if(_ ## NAME == value)return; \
|
|
_ ## NAME = value; \
|
|
emit NAME ## Changed(value); \
|
|
send(); \
|
|
} \
|
|
Q_SIGNAL void NAME ## Changed(TYPE value); \
|
|
private: \
|
|
TYPE _ ## NAME = DEFAULT_VALUE; \
|
|
|
|
/*************************************************************************************************/
|
|
#define US_PROPERTY_CUSTOM_SETTER(TYPE, NAME, DEFAULT_VALUE) \
|
|
Q_PROPERTY(TYPE NAME READ NAME WRITE NAME NOTIFY NAME ## Changed) \
|
|
public: \
|
|
TYPE NAME() const { return _ ## NAME; } \
|
|
void NAME ## Internal(TYPE value) { \
|
|
if(_ ## NAME == value)return; \
|
|
_ ## NAME = value; \
|
|
emit NAME ## Changed(value); \
|
|
} \
|
|
void NAME(TYPE value) { \
|
|
if(_ ## NAME == value)return; \
|
|
_ ## NAME = value; \
|
|
NAME ## Handle(); \
|
|
emit NAME ## Changed(value); \
|
|
send(); \
|
|
} \
|
|
Q_SIGNAL void NAME ## Changed(TYPE value); \
|
|
private: \
|
|
TYPE _ ## NAME = DEFAULT_VALUE; \
|
|
void NAME ## Handle();
|
|
|
|
/*************************************************************************************************/
|
|
#define US_PROPERTY_VIEW_ONLY(TYPE, NAME, DEFAULT_VALUE) \
|
|
Q_PROPERTY(TYPE NAME READ NAME WRITE NAME NOTIFY NAME ## Changed) \
|
|
public: \
|
|
TYPE NAME() const { return _ ## NAME; } \
|
|
void NAME(TYPE value) { \
|
|
if(_ ## NAME == value)return; \
|
|
_ ## NAME = value; \
|
|
emit NAME ## Changed(value); \
|
|
} \
|
|
Q_SIGNAL void NAME ## Changed(TYPE value); \
|
|
protected: \
|
|
TYPE _ ## NAME = DEFAULT_VALUE; \
|
|
|
|
/*************************************************************************************************/
|
|
#define US_PROPERTY_INTERNAL(TYPE, NAME, DEFAULT_VALUE) \
|
|
Q_PROPERTY(TYPE NAME READ NAME WRITE NAME NOTIFY NAME ## Changed) \
|
|
public: \
|
|
TYPE NAME() const { return _ ## NAME; } \
|
|
void NAME(TYPE value) { \
|
|
if(_ ## NAME == value)return; \
|
|
_ ## NAME = value; \
|
|
emit NAME ## Changed(value); \
|
|
} \
|
|
Q_SIGNAL void NAME ## Changed(TYPE value); \
|
|
private: \
|
|
TYPE _ ## NAME = DEFAULT_VALUE; \
|
|
|
|
|
|
/*************************************************************************************************/
|
|
#define US_PROPERTY_CUSTOM_SETTER_INTERNAL(TYPE, NAME, DEFAULT_VALUE) \
|
|
Q_PROPERTY(TYPE NAME READ NAME WRITE NAME NOTIFY NAME ## Changed) \
|
|
public: \
|
|
TYPE NAME() const { return _ ## NAME; } \
|
|
void NAME(TYPE value) { \
|
|
if(_ ## NAME == value)return; \
|
|
_ ## NAME = value; \
|
|
NAME ## Handle(); \
|
|
emit NAME ## Changed(value); \
|
|
} \
|
|
Q_SIGNAL void NAME ## Changed(TYPE value); \
|
|
private: \
|
|
TYPE _ ## NAME = DEFAULT_VALUE; \
|
|
void NAME ## Handle();
|
|
|
|
#endif //AUTOPROPERTY_H
|
|
|