Bump version to 0.9.0
[quandoparte] / application / stationlistview.cpp
index 88cf929..ef18b39 100644 (file)
@@ -40,41 +40,50 @@ StationListView::StationListView(StationListModel *model, QWidget *parent) :
     stationListModel(model),
     filterModel(new StationListProxyModel(this)),
     keyPressForwarder(new KeyPressForwarder(this)),
-    m_sortingMode(NoSorting)
-
+    m_sortingMode(StationListProxyModel::NoSorting)
 {
+    ui->setupUi(this);
 #ifdef Q_WS_MAEMO_5
     setAttribute(Qt::WA_Maemo5StackedWindow);
     setAttribute(Qt::WA_Maemo5AutoOrientation);
+    ui->filterClear->setIcon(QIcon::fromTheme("general_close"));
+#else
+    ui->filterClear->setIcon(QIcon::fromTheme("edit-clear"));
 #endif
-    ui->setupUi(this);
+
     viewSelectionGroup->addAction(ui->sortByNameAction);
     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);
-    ui->filterEdit->hide();
+    ui->filterFrame->hide();
 
     keyPressForwarder->setTarget(ui->filterEdit);
     ui->listView->installEventFilter(keyPressForwarder);
 
     connect(ui->showAboutAction, SIGNAL(triggered()),
             this, SIGNAL(aboutTriggered()));
-    connect(ui->listView,
-            SIGNAL(activated(QModelIndex)), SLOT(showStation(QModelIndex)));
+    connect(ui->showSettingsAction, SIGNAL(triggered()),
+            this, SIGNAL(settingsChangeRequested()));
+    connect(ui->listView, SIGNAL(activated(QModelIndex)),
+            SLOT(showStation(QModelIndex)));
     connect(ui->filterEdit, SIGNAL(textChanged(const QString &)),
             SLOT(handleFilterChanges(const QString &)));
+    connect(ui->filterClear, SIGNAL(clicked()), SLOT(handlefilterClearClick()));
     connect(viewSelectionGroup, SIGNAL(triggered(QAction*)),
             SLOT(handleSortingChange(QAction*)));
 
     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);
 }
 
 
@@ -83,17 +92,6 @@ StationListView::~StationListView()
     delete ui;
 }
 
-void StationListView::showSettings(void)
-{
-    qDebug() << "Show Settings";
-    SettingsDialog *settingsDialog = new SettingsDialog(this);
-    if (settingsDialog->exec() == QDialog::Accepted) {
-        // TODO Use new settings
-    }
-
-    delete settingsDialog;
-}
-
 void StationListView::showStation(const QModelIndex &index)
 {
     qDebug() << "Show Station" << index.data();
@@ -103,31 +101,24 @@ void StationListView::showStation(const QModelIndex &index)
 void StationListView::handleFilterChanges(const QString &filter)
 {
     if (!filter.isEmpty())
-        ui->filterEdit->show();
+        ui->filterFrame->show();
     else
-        ui->filterEdit->hide();
+        ui->filterFrame->hide();
     filterModel->setFilterFixedString(filter);
-}
-
-void StationListView::updatePosition(const QtMobility::QGeoPositionInfo &update)
-{
-    qDebug() << "Position update received" << update;
-    filterModel->setUserPosition(update.coordinate());
-    filterModel->invalidate();
-    filterModel->sort(0);
+    qDebug() << "Filtering for" << filter;
 }
 
 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";
     }
 
@@ -137,36 +128,36 @@ void StationListView::handleSortingChange(QAction *action)
     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;
         }
-        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;
 }
+
+void StationListView::handlefilterClearClick()
+{
+    ui->filterEdit->clear();
+}