1 #include "stationlistproxymodel.h"
2 #include "stationlistmodel.h"
5 #include <QGeoCoordinate>
9 Q_DECLARE_METATYPE(QGeoCoordinate)
11 StationListProxyModel::StationListProxyModel(QObject *parent) :
12 QSortFilterProxyModel(parent),
14 m_filterRecentOnly(false)
18 bool StationListProxyModel::lessThan(const QModelIndex &left,
19 const QModelIndex &right) const
21 int role = sortRole();
23 if (role == StationListModel::PositionRole) {
24 QGeoCoordinate first = left.data(role).value<QGeoCoordinate>();
25 QGeoCoordinate second = right.data(role).value<QGeoCoordinate>();
26 return first.distanceTo(m_here) < second.distanceTo(m_here);
28 return QString::compare(left.data(role).toString(),
29 right.data(role).toString(),
30 sortCaseSensitivity()) < 0;
34 void StationListProxyModel::setUserPosition(const QtMobility::QGeoCoordinate &pos)
39 void StationListProxyModel::setRecentStations(const QStringList &stations)
41 m_stations = stations;
44 bool StationListProxyModel::filterAcceptsRow(int sourceRow,
45 const QModelIndex &sourceParent) const
47 if (m_filterRecentOnly) {
48 QModelIndex i = sourceModel()->index(sourceRow, 0, sourceParent);
49 return m_stations.contains(sourceModel()->data(i).toString());
54 void StationListProxyModel::setRecentOnlyFilter(bool)
56 m_filterRecentOnly = true;