/ 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