/ proxyroles / proxyrolecontainer.h
proxyrolecontainer.h
1 #ifndef PROXYROLECONTAINER_H 2 #define PROXYROLECONTAINER_H 3 4 #include <QList> 5 #include <QQmlListProperty> 6 7 namespace qqsfpm { 8 9 class ProxyRole; 10 class QQmlSortFilterProxyModel; 11 12 class ProxyRoleContainer { 13 public: 14 virtual ~ProxyRoleContainer() = default; 15 16 QList<ProxyRole*> proxyRoles() const; 17 void appendProxyRole(ProxyRole* proxyRole); 18 void removeProxyRole(ProxyRole* proxyRole); 19 void clearProxyRoles(); 20 21 QQmlListProperty<ProxyRole> proxyRolesListProperty(); 22 23 protected: 24 QList<ProxyRole*> m_proxyRoles; 25 26 private: 27 virtual void onProxyRoleAppended(ProxyRole* proxyRole) = 0; 28 virtual void onProxyRoleRemoved(ProxyRole* proxyRole) = 0; 29 virtual void onProxyRolesCleared() = 0; 30 31 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 32 using sizetype = int; 33 #else 34 using sizetype = qsizetype; 35 #endif 36 37 static void append_proxyRole(QQmlListProperty<ProxyRole>* list, ProxyRole* proxyRole); 38 static sizetype count_proxyRole(QQmlListProperty<ProxyRole>* list); 39 static ProxyRole* at_proxyRole(QQmlListProperty<ProxyRole>* list, sizetype index); 40 static void clear_proxyRoles(QQmlListProperty<ProxyRole>* list); 41 }; 42 43 } 44 45 #define ProxyRoleContainer_iid "fr.grecko.SortFilterProxyModel.ProxyRoleContainer" 46 Q_DECLARE_INTERFACE(qqsfpm::ProxyRoleContainer, ProxyRoleContainer_iid) 47 48 #endif // PROXYROLECONTAINER_H