libqutim
0.3.2.0
|
00001 #ifndef QUTIM_SDK_0_3_DATASETTINGSOBJECT_H 00002 #define QUTIM_SDK_0_3_DATASETTINGSOBJECT_H 00003 00004 #include "menucontroller.h" 00005 #include "settingslayer.h" 00006 #include "dataforms.h" 00007 00008 namespace qutim_sdk_0_3 { 00009 00010 class DataSettingsItemPrivate; 00011 class DataSettingsGenerator; 00012 class DataSettingsObjectPrivate; 00013 00014 class LIBQUTIM_EXPORT DataSettingsObject : public QObject 00015 { 00016 Q_OBJECT 00017 Q_DECLARE_PRIVATE(DataSettingsObject) 00018 Q_PROPERTY(qutim_sdk_0_3::DataItem item READ item NOTIFY itemChanged) 00019 Q_PROPERTY(QObject *controller READ controller WRITE setController NOTIFY controllerChanged) 00020 public: 00021 DataSettingsObject(QObject *parent = 0); 00022 ~DataSettingsObject(); 00023 00024 qutim_sdk_0_3::DataItem item() const; 00025 void setController(QObject *controller); 00026 QObject *controller() const; 00027 00028 public slots: 00029 void load(); 00030 void save(const qutim_sdk_0_3::DataItem &item); 00031 void cancel(); 00032 00033 protected: 00034 virtual void loadImpl() = 0; 00035 virtual void saveImpl(const qutim_sdk_0_3::DataItem &item) = 0; 00036 virtual void cancelImpl(); 00037 virtual void setControllerImpl(QObject *controller); 00038 void setItem(const qutim_sdk_0_3::DataItem &item); 00039 00040 signals: 00041 void itemChanged(const qutim_sdk_0_3::DataItem &item); 00042 void controllerChanged(QObject *controller); 00043 00044 private: 00045 QScopedPointer<DataSettingsObjectPrivate> d_ptr; 00046 }; 00047 00048 class LIBQUTIM_EXPORT DataSettingsItem : public SettingsItem 00049 { 00050 Q_DECLARE_PRIVATE(DataSettingsItem) 00051 public: 00052 DataSettingsItem(Settings::Type type, const QIcon &icon, const LocalizedString &text); 00053 DataSettingsItem(Settings::Type type, const LocalizedString &text); 00054 virtual ~DataSettingsItem(); 00055 00056 protected: 00057 virtual DataSettingsObject *createObject() = 0; 00058 virtual const ObjectGenerator *generator() const; 00059 friend class DataSettingsGenerator; 00060 }; 00061 00062 template<typename T> 00063 class GeneralDataSettingsItem : public DataSettingsItem 00064 { 00065 public: 00066 GeneralDataSettingsItem(Settings::Type type, const QIcon &icon, const LocalizedString &text) 00067 : DataSettingsItem(type, icon, text) {} 00068 GeneralDataSettingsItem(Settings::Type type, const LocalizedString &text) 00069 : DataSettingsItem(type, text) {} 00070 virtual ~GeneralDataSettingsItem() {} 00071 protected: 00072 virtual DataSettingsObject *createObject() 00073 { 00074 return new T(); 00075 } 00076 }; 00077 00078 } // namespace qutim_sdk_0_3 00079 00080 #endif // QUTIM_SDK_0_3_DATASETTINGSOBJECT_H