viewSelectionGroup(new QActionGroup(0)),
stationListModel(model),
filterModel(new StationListProxyModel(this)),
- keyPressForwarder(new KeyPressForwarder(this))
+ keyPressForwarder(new KeyPressForwarder(this)),
+ m_sortingMode(NoSorting)
{
#ifdef Q_WS_MAEMO_5
SIGNAL(activated(QModelIndex)), SLOT(showStation(QModelIndex)));
connect(ui->filterEdit, SIGNAL(textChanged(const QString &)),
SLOT(handleFilterChanges(const QString &)));
- //filterModel->setSortRole(StationListModel::PositionRole);
- filterModel->setSortRole(Qt::DisplayRole);
- filterModel->sort(0);
+ connect(viewSelectionGroup, SIGNAL(triggered(QAction*)),
+ SLOT(handleSortingChange(QAction*)));
+
+ setSortingMode(AlphaSorting);
}
filterModel->sort(0);
}
-void StationListView::handleSortingChange(const QAction *action)
+void StationListView::handleSortingChange(QAction *action)
{
- SortingMode mode;
+ SortingMode mode = NoSorting;
if (action == ui->sortByNameAction) {
mode = AlphaSorting;
qDebug() << "sort by name";
void StationListView::setSortingMode(StationListView::SortingMode mode)
{
- m_sortingMode = mode;
+ if (mode != m_sortingMode) {
+ m_sortingMode = mode;
+ switch (mode) {
+ case AlphaSorting:
+ filterModel->setSortRole(Qt::DisplayRole);
+ break;
+ case DistanceSorting:
+ filterModel->setSortRole(StationListModel::PositionRole);
+ break;
+ case RecentUsageSorting:
+ break;
+ case NoSorting:
+ default:
+ break;
+ }
+ filterModel->invalidate();
+ filterModel->sort(0);
+ emit sortingModeChanged(mode);
+ }
}
StationListView::SortingMode StationListView::sortingMode()
Q_OBJECT
enum SortingMode {
+ NoSorting,
AlphaSorting,
DistanceSorting,
RecentUsageSorting
signals:
void stationSelected(const QString &);
void aboutTriggered(void);
+ void sortingModeChanged(SortingMode mode);
public slots:
void updatePosition(const QGeoPositionInfo &update);
void showSettings(void);
void showStation(const QModelIndex &index);
void handleFilterChanges(const QString &filter);
- void handleSortingChange(const QAction *action);
+ void handleSortingChange(QAction *action);
private:
Ui::StationListView *ui;