/ sorters / stringsorter.h
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