Sort favorites before other items
authorLuciano Montanaro <mikelima@cirulla.net>
Sun, 17 Nov 2013 22:22:07 +0000 (23:22 +0100)
committerLuciano Montanaro <mikelima@cirulla.net>
Sun, 17 Nov 2013 22:22:07 +0000 (23:22 +0100)
application/stationlistproxymodel.cpp

index 919f17a..07fa3fc 100644 (file)
@@ -68,9 +68,16 @@ bool StationListProxyModel::lessThan(const QModelIndex &left,
         QGeoCoordinate second = right.data(role).value<QGeoCoordinate>();
        return first.distanceTo(m_here) < second.distanceTo(m_here);
     } else {
-        return QString::compare(left.data(role).toString(),
-                                right.data(role).toString(),
-                                sortCaseSensitivity()) < 0;
+        bool leftIsFavorite = left.data(StationListModel::FavoriteIndicatorRole).toBool();
+        bool rightIsFavorite = right.data(StationListModel::FavoriteIndicatorRole).toBool();
+        if (leftIsFavorite && !rightIsFavorite) {
+            return true;
+        } else if (rightIsFavorite && !leftIsFavorite) {
+            return false;
+        } else
+            return QString::compare(left.data(role).toString(),
+                                    right.data(role).toString(),
+                                    sortCaseSensitivity()) < 0;
     }
 }