Added sortingMode property 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)
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 protected:
38     virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
39     virtual bool filterAcceptsRow(int sourceRow,
40             const QModelIndex &sourceParent) const;
41
42 private:
43     QString m_searchPattern;
44     QGeoCoordinate m_here;
45     QStringList m_stations;
46     SortingMode m_sortingMode;
47     bool m_filterRecentOnly;
48 };
49
50 #endif // STATIONLISTPROXYMODEL_H