Page {
property alias html: view.html
+ property alias url: view.url
anchors.fill: parent
tools: ToolBarLayout {
StationListProxyModel::StationListProxyModel(QObject *parent) :
QSortFilterProxyModel(parent),
+ positionInfoSource(QGeoPositionInfoSource::createDefaultSource(this)),
m_here(44.5, 9.0),
- m_sortingMode(NoSorting),
+ m_sortingMode(AlphaSorting),
m_filterRecentOnly(false)
{
QHash<int, QByteArray> roles;
setFilterCaseSensitivity(Qt::CaseInsensitive);
setSortCaseSensitivity(Qt::CaseInsensitive);
+ if (positionInfoSource) {
+ qDebug() << "position info source available";
+ connect(positionInfoSource, SIGNAL(positionUpdated(QGeoPositionInfo)),
+ SLOT(updatePosition(QGeoPositionInfo)));
+ } else {
+ qDebug() << "No position info source available";
+ }
}
bool StationListProxyModel::lessThan(const QModelIndex &left,
case StationListProxyModel::RecentUsageSorting:
setRecentOnlyFilter(true);
break;
- case StationListProxyModel::NoSorting:
default:
break;
}
+ if (mode == StationListProxyModel::DistanceSorting) {
+ positionInfoSource->startUpdates();
+ } else {
+ positionInfoSource->stopUpdates();
+ }
invalidate();
sort(0);
emit sortingModeChanged(mode);
}
}
+
+void StationListProxyModel::updatePosition(const QtMobility::QGeoPositionInfo &update)
+{
+ qDebug() << "Position update received" << update;
+ setUserPosition(update.coordinate());
+ invalidate();
+ sort(0);
+}
#include <QSortFilterProxyModel>
#include <QGeoCoordinate>
+#include <QGeoPositionInfoSource>
#include <QStringList>
QTM_USE_NAMESPACE
public:
enum SortingMode {
- NoSorting,
AlphaSorting,
DistanceSorting,
RecentUsageSorting
virtual bool filterAcceptsRow(int sourceRow,
const QModelIndex &sourceParent) const;
+private slots:
+ void updatePosition(const QGeoPositionInfo &update);
+
private:
QString m_searchPattern;
+ QGeoPositionInfoSource *positionInfoSource;
QGeoCoordinate m_here;
QStringList m_stations;
SortingMode m_sortingMode;
stationListModel(model),
filterModel(new StationListProxyModel(this)),
keyPressForwarder(new KeyPressForwarder(this)),
- positionInfoSource(QGeoPositionInfoSource::createDefaultSource(this)),
m_sortingMode(StationListProxyModel::NoSorting)
{
connect(viewSelectionGroup, SIGNAL(triggered(QAction*)),
SLOT(handleSortingChange(QAction*)));
- if (positionInfoSource) {
- connect(positionInfoSource, SIGNAL(positionUpdated(QGeoPositionInfo)),
- SLOT(updatePosition(QGeoPositionInfo)));
- }
-
QSettings settings;
StationListProxyModel::SortingMode mode =
static_cast<StationListProxyModel::SortingMode>(
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)
{
StationListProxyModel::SortingMode mode = StationListProxyModel::NoSorting;
default:
break;
}
- if (mode == StationListProxyModel::DistanceSorting) {
- positionInfoSource->startUpdates();
- } else {
- positionInfoSource->stopUpdates();
- }
m_sortingMode = mode;
filterModel->setSortingMode(mode);
#include <QMainWindow>
#include <QModelIndex>
-#include <QGeoPositionInfoSource>
namespace Ui {
class StationListView;
void settingsChangeRequested(void);
void sortingModeChanged(StationListProxyModel::SortingMode mode);
-public slots:
- void updatePosition(const QGeoPositionInfo &update);
-
private slots:
void showStation(const QModelIndex &index);
void handleFilterChanges(const QString &filter);
StationListModel *stationListModel;
StationListProxyModel *filterModel;
KeyPressForwarder *keyPressForwarder;
- QGeoPositionInfoSource *positionInfoSource;
StationListProxyModel::SortingMode m_sortingMode;
};