StationListProxyModel::StationListProxyModel(QObject *parent) :
QSortFilterProxyModel(parent),
m_here(44.5, 9.0),
+ m_sortingMode(NoSorting),
m_filterRecentOnly(false)
{
QHash<int, QByteArray> roles;
return m_sortingMode;
}
-void StationListProxyModel::setSortingMode(StationListProxyModel::SortingMode mode)
+void StationListProxyModel::setSortingMode(SortingMode mode)
{
- m_sortingMode = mode;
- invalidate();
- sort(0);
+ if (mode != m_sortingMode) {
+ 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;
+ }
+ invalidate();
+ sort(0);
+ emit sortingModeChanged(mode);
+ }
}
{
Q_OBJECT
Q_PROPERTY(QString searchPattern READ searchPattern WRITE setSearchPattern)
- Q_PROPERTY(SortingMode sortingMode READ sortingMode WRITE setSortingMode)
+ Q_PROPERTY(SortingMode sortingMode READ sortingMode WRITE setSortingMode NOTIFY sortingModeChanged)
Q_ENUMS(SortingMode)
public:
Q_INVOKABLE void setRecentStations(const QStringList &stations);
Q_INVOKABLE void setRecentOnlyFilter(bool);
+signals:
+ void sortingModeChanged(SortingMode mode);
+
protected:
virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
virtual bool filterAcceptsRow(int sourceRow,
filterModel->setRecentStations(
settings.value("RecentStations").toString().split(","));
setSortingMode(mode);
+ emit sortingModeChanged(mode);
}
{
qDebug() << "setSorting Mode" << mode << "called";
if (mode != m_sortingMode) {
- m_sortingMode = mode;
- filterModel->setRecentOnlyFilter(false);
-
switch (mode) {
case StationListProxyModel::AlphaSorting:
- filterModel->setSortRole(Qt::DisplayRole);
ui->sortByNameAction->setChecked(true);
break;
case StationListProxyModel::DistanceSorting:
- filterModel->setSortRole(StationListModel::PositionRole);
ui->sortByDistanceAction->setChecked(true);
break;
case StationListProxyModel::RecentUsageSorting:
ui->sortRecentFirstAction->setChecked(true);
- filterModel->setRecentOnlyFilter(true);
break;
case StationListProxyModel::NoSorting:
default:
} else {
positionInfoSource->stopUpdates();
}
- filterModel->invalidate();
- filterModel->sort(0);
- emit sortingModeChanged(mode);
+ m_sortingMode = mode;
+ filterModel->setSortingMode(mode);
+
}
}