- qDebug() << "setSorting Mode" << mode << m_sortingMode << "called";
- m_sortingMode = mode;
- setRecentOnlyFilter(false);
-
- switch (mode) {
- case StationListProxyModel::AlphaSorting:
- setSortRole(Qt::DisplayRole);
- break;
- case StationListProxyModel::DistanceSorting:
- setSortRole(StationListModel::PositionRole);
- break;
- case StationListProxyModel::RecentUsageSorting:
- setRecentOnlyFilter(true);
- break;
- case StationListProxyModel::NoSorting:
- default:
- break;
+ beginResetModel();
+ forceSortingMode(mode);
+ endResetModel();
+ }
+ Settings *settings = Settings::instance();
+ settings->setStationListSortingMode(m_sortingMode);
+
+ emit sortingModeChanged(mode);
+}
+
+void StationListProxyModel::forceSortingMode(SortingMode mode)
+{
+ m_sortingMode = mode;
+ setRecentOnlyFilter(false);
+
+ switch (mode) {
+ case StationListProxyModel::AlphaSorting:
+ setSortRole(Qt::DisplayRole);
+ break;
+ case StationListProxyModel::DistanceSorting:
+ setSortRole(StationListModel::PositionRole);
+ break;
+ case StationListProxyModel::RecentUsageSorting:
+ setRecentOnlyFilter(true);
+ break;
+ default:
+ break;
+ }
+#ifndef TARGET_PLATFORM_SAILFISH
+ if (mode == StationListProxyModel::DistanceSorting) {
+ positionInfoSource->startUpdates();
+ } else {
+ positionInfoSource->stopUpdates();
+ }
+#endif
+ invalidate();
+ sort(0);
+}
+
+#ifndef TARGET_PLATFORM_SAILFISH
+void StationListProxyModel::updatePosition(const QtMobility::QGeoPositionInfo &update)
+{
+ qDebug() << "Position update received" << update;
+ if (update.isValid()) {
+ QGeoCoordinate newPosition = update.coordinate();
+ if (newPosition.distanceTo(m_here) > 50.0) {
+ setUserPosition(update.coordinate());
+ invalidate();
+ sort(0);