stringsorter.h
1 #ifndef STRINGSORTER_H 2 #define STRINGSORTER_H 3 4 #include "rolesorter.h" 5 #include <QCollator> 6 7 namespace qqsfpm { 8 9 class StringSorter : public RoleSorter 10 { 11 Q_OBJECT 12 Q_PROPERTY(Qt::CaseSensitivity caseSensitivity READ caseSensitivity WRITE setCaseSensitivity NOTIFY caseSensitivityChanged) 13 Q_PROPERTY(bool ignorePunctation READ ignorePunctation WRITE setIgnorePunctation NOTIFY ignorePunctationChanged) 14 Q_PROPERTY(QLocale locale READ locale WRITE setLocale NOTIFY localeChanged) 15 Q_PROPERTY(bool numericMode READ numericMode WRITE setNumericMode NOTIFY numericModeChanged) 16 17 public: 18 using RoleSorter::RoleSorter; 19 20 Qt::CaseSensitivity caseSensitivity() const; 21 void setCaseSensitivity(Qt::CaseSensitivity caseSensitivity); 22 23 bool ignorePunctation() const; 24 void setIgnorePunctation(bool ignorePunctation); 25 26 QLocale locale() const; 27 void setLocale(const QLocale& locale); 28 29 bool numericMode() const; 30 void setNumericMode(bool numericMode); 31 32 Q_SIGNALS: 33 void caseSensitivityChanged(); 34 void ignorePunctationChanged(); 35 void localeChanged(); 36 void numericModeChanged(); 37 38 protected: 39 int compare(const QModelIndex& sourceLeft, const QModelIndex& sourceRight, const QQmlSortFilterProxyModel& proxyModel) const override; 40 41 private: 42 QCollator m_collator; 43 }; 44 45 } 46 47 #endif // STRINGSORTER_H