sorter.h
1 #ifndef SORTER_H 2 #define SORTER_H 3 4 #include <QObject> 5 6 namespace qqsfpm { 7 8 class QQmlSortFilterProxyModel; 9 10 class Sorter : public QObject 11 { 12 Q_OBJECT 13 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) 14 Q_PROPERTY(bool ascendingOrder READ ascendingOrder WRITE setAscendingOrder NOTIFY sortOrderChanged) 15 Q_PROPERTY(Qt::SortOrder sortOrder READ sortOrder WRITE setSortOrder NOTIFY sortOrderChanged) 16 Q_PROPERTY(int priority READ priority WRITE setPriority NOTIFY priorityChanged) 17 18 public: 19 Sorter(QObject* parent = nullptr); 20 virtual ~Sorter() = 0; 21 22 bool enabled() const; 23 void setEnabled(bool enabled); 24 25 bool ascendingOrder() const; 26 void setAscendingOrder(bool ascendingOrder); 27 28 Qt::SortOrder sortOrder() const; 29 void setSortOrder(Qt::SortOrder sortOrder); 30 31 int priority() const; 32 void setPriority(int priority); 33 34 int compareRows(const QModelIndex& source_left, const QModelIndex& source_right, const QQmlSortFilterProxyModel& proxyModel) const; 35 36 virtual void proxyModelCompleted(const QQmlSortFilterProxyModel& proxyModel); 37 38 Q_SIGNALS: 39 void enabledChanged(); 40 void sortOrderChanged(); 41 void priorityChanged(); 42 43 void invalidated(); 44 45 protected: 46 virtual int compare(const QModelIndex& sourceLeft, const QModelIndex& sourceRight, const QQmlSortFilterProxyModel& proxyModel) const; 47 virtual bool lessThan(const QModelIndex& sourceLeft, const QModelIndex& sourceRight, const QQmlSortFilterProxyModel& proxyModel) const; 48 void invalidate(); 49 50 private: 51 bool m_enabled = true; 52 Qt::SortOrder m_sortOrder = Qt::AscendingOrder; 53 int m_priority = 0; 54 }; 55 56 } 57 58 #endif // SORTER_H