Moved sortingMode to StationListProxyModel
[quandoparte] / application / stationlistproxymodel.h
1 #ifndef STATIONLISTPROXYMODEL_H
2 #define STATIONLISTPROXYMODEL_H
3
4 #include <QSortFilterProxyModel>
5 #include <QGeoCoordinate>
6 #include <QStringList>
7
8 QTM_USE_NAMESPACE
9
10 class StationListProxyModel : public QSortFilterProxyModel
11 {
12     Q_OBJECT
13     Q_PROPERTY(QString searchPattern READ searchPattern WRITE setSearchPattern)
14     Q_PROPERTY(SortingMode sortingMode READ sortingMode WRITE setSortingMode NOTIFY sortingModeChanged)
15     Q_ENUMS(SortingMode)
16 public:
17
18     enum SortingMode {
19         NoSorting,
20         AlphaSorting,
21         DistanceSorting,
22         RecentUsageSorting
23     };
24
25     explicit StationListProxyModel(QObject *parent = 0);
26
27     QString searchPattern() const;
28     void setSearchPattern(const QString &pattern);
29
30     SortingMode sortingMode();
31     void setSortingMode(SortingMode mode);
32
33     Q_INVOKABLE void setUserPosition(const QGeoCoordinate &pos);
34     Q_INVOKABLE void setRecentStations(const QStringList &stations);
35     Q_INVOKABLE void setRecentOnlyFilter(bool);
36
37 signals:
38     void sortingModeChanged(SortingMode mode);
39
40 protected:
41     virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
42     virtual bool filterAcceptsRow(int sourceRow,
43             const QModelIndex &sourceParent) const;
44
45 private:
46     QString m_searchPattern;
47     QGeoCoordinate m_here;
48     QStringList m_stations;
49     SortingMode m_sortingMode;
50     bool m_filterRecentOnly;
51 };
52
53 #endif // STATIONLISTPROXYMODEL_H