stationListModel(model),
filterModel(new StationListProxyModel(this)),
keyPressForwarder(new KeyPressForwarder(this)),
- positionInfoSource(QGeoPositionInfoSource::createDefaultSource(this)),
- m_sortingMode(NoSorting)
-
+ m_sortingMode(StationListProxyModel::NoSorting)
{
ui->setupUi(this);
#ifdef Q_WS_MAEMO_5
viewSelectionGroup->addAction(ui->sortByDistanceAction);
viewSelectionGroup->addAction(ui->sortRecentFirstAction);
filterModel->setSourceModel(stationListModel);
- filterModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
ui->listView->setModel(filterModel);
ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->listView->setSelectionMode(QAbstractItemView::SingleSelection);
connect(viewSelectionGroup, SIGNAL(triggered(QAction*)),
SLOT(handleSortingChange(QAction*)));
- if (positionInfoSource) {
- connect(positionInfoSource, SIGNAL(positionUpdated(QGeoPositionInfo)),
- SLOT(updatePosition(QGeoPositionInfo)));
- }
-
QSettings settings;
- SortingMode mode = static_cast<SortingMode>(
+ StationListProxyModel::SortingMode mode =
+ static_cast<StationListProxyModel::SortingMode>(
settings.value("StationListView/SortingMode",
- AlphaSorting).toInt());
+ StationListProxyModel::AlphaSorting).toInt());
filterModel->setRecentStations(
settings.value("RecentStations").toString().split(","));
setSortingMode(mode);
+ emit sortingModeChanged(mode);
}
qDebug() << "Filtering for" << filter;
}
-void StationListView::updatePosition(const QtMobility::QGeoPositionInfo &update)
-{
- qDebug() << "Position update received" << update;
- filterModel->setUserPosition(update.coordinate());
- filterModel->invalidate();
- filterModel->sort(0);
-}
-
void StationListView::handleSortingChange(QAction *action)
{
- SortingMode mode = NoSorting;
+ StationListProxyModel::SortingMode mode = StationListProxyModel::NoSorting;
if (action == ui->sortByNameAction) {
- mode = AlphaSorting;
+ mode = StationListProxyModel::AlphaSorting;
qDebug() << "sort by name";
} else if (action == ui->sortByDistanceAction) {
- mode = DistanceSorting;
+ mode = StationListProxyModel::DistanceSorting;
qDebug() << "sort by distance";
} else if (action == ui->sortRecentFirstAction) {
- mode = RecentUsageSorting;
+ mode = StationListProxyModel::RecentUsageSorting;
qDebug() << "sort by recent use";
}
setSortingMode(mode);
}
-void StationListView::setSortingMode(StationListView::SortingMode mode)
+void StationListView::setSortingMode(StationListProxyModel::SortingMode mode)
{
qDebug() << "setSorting Mode" << mode << "called";
if (mode != m_sortingMode) {
- m_sortingMode = mode;
- filterModel->setRecentOnlyFilter(false);
-
switch (mode) {
- case AlphaSorting:
- filterModel->setSortRole(Qt::DisplayRole);
+ case StationListProxyModel::AlphaSorting:
ui->sortByNameAction->setChecked(true);
break;
- case DistanceSorting:
- filterModel->setSortRole(StationListModel::PositionRole);
+ case StationListProxyModel::DistanceSorting:
ui->sortByDistanceAction->setChecked(true);
break;
- case RecentUsageSorting:
+ case StationListProxyModel::RecentUsageSorting:
ui->sortRecentFirstAction->setChecked(true);
- filterModel->setRecentOnlyFilter(true);
break;
- case NoSorting:
+ case StationListProxyModel::NoSorting:
default:
break;
}
- if (mode == DistanceSorting) {
- positionInfoSource->startUpdates();
- } else {
- positionInfoSource->stopUpdates();
- }
- filterModel->invalidate();
- filterModel->sort(0);
- emit sortingModeChanged(mode);
+ m_sortingMode = mode;
+ filterModel->setSortingMode(mode);
+
}
}
-StationListView::SortingMode StationListView::sortingMode()
+StationListProxyModel::SortingMode StationListView::sortingMode()
{
return m_sortingMode;
}