Implemented Station List filtering
authorLuciano Montanaro <mikelima@cirulla.net>
Wed, 18 May 2011 23:49:13 +0000 (01:49 +0200)
committerLuciano Montanaro <mikelima@zaphod>
Wed, 18 May 2011 23:49:13 +0000 (01:49 +0200)
It is now possible to reduce filter the station list by typing
characters in the TextEdit widget at the bottom of the Station List.

application/stationlistview.cpp
application/stationlistview.h
application/stationlistview.ui

index afd83bf..18552df 100644 (file)
@@ -27,13 +27,15 @@ Boston, MA 02110-1301, USA.
 
 #include <QActionGroup>
 #include <QDebug>
+#include <QSortFilterProxyModel>
 #include <QStringListModel>
 
 StationListView::StationListView(QWidget *parent) :
     QMainWindow(parent),
     ui(new Ui::StationListView),
     viewSelectionGroup(new QActionGroup(0)),
-    stationListModel(new QStringListModel()),
+    stationListModel(new QStringListModel(this)),
+    filterModel(new QSortFilterProxyModel(this)),
     stationView(0)
 
 {
@@ -46,26 +48,49 @@ StationListView::StationListView(QWidget *parent) :
     viewSelectionGroup->addAction(ui->sortNearFirstAction);
     viewSelectionGroup->addAction(ui->sortRecentFirstAction);
     QStringList stationList;
-    stationList << "Genova Voltri"
+    stationList << "Savona"
+                << "Albisola"
+                << "Celle"
+                << "Varazze"
+                << "Cogoleto"
+                << "Arenzano"
+                << "Genova Voltri"
                 << "Genova Pra"
                 << "Genova Pegli"
                 << "Genova Sestri Ponente"
                 << "Genova Cornigliano"
                 << "Genova Sampierdarena"
+                << "Genova Rivarolo"
+                << "Genova Bolzaneto"
+                << "Genova San Biagio"
+                << "Genova Pontedecimo"
+                << "Piano Orzzontale dei Giovi"
+                << "Mignanego"
+                << "Busalla"
                 << "Genova Via di Francia"
                 << "Genova Piazza Principe"
                 << "Genova Brignole"
                 << "Genova Sturla"
                 << "Genova Quarto dei Mille"
                 << "Genova Quinto al Mare"
-                << "Genova Nervi";
+                << "Genova Nervi"
+                << "Bogliasco"
+                << "Pontetto"
+                << "Pieve Ligure"
+                << "Sori"
+                << "Mulinetti"
+                << "Recco"
+                << "Camogli";
     stationListModel->setStringList(stationList);
-    ui->listView->setModel(stationListModel);
+    filterModel->setSourceModel(stationListModel);
+    ui->listView->setModel(filterModel);
     ui->listView->setEditTriggers(QAbstractItemView::NoEditTriggers);
     ui->listView->setSelectionMode(QAbstractItemView::SingleSelection);
-
+    //ui->filterEdit->hide();
     connect(ui->listView,
             SIGNAL(activated(QModelIndex)), SLOT(showStation(QModelIndex)));
+    connect(ui->filterEdit, SIGNAL(textChanged(const QString &)),
+            filterModel, SLOT(setFilterFixedString(const QString &)));
 }
 
 StationListView::~StationListView()
index f8cd371..d44bf15 100644 (file)
@@ -10,6 +10,7 @@ namespace Ui {
 
 class QActionGroup;
 class QStringListModel;
+class QSortFilterProxyModel;
 
 class StationView;
 
@@ -32,6 +33,7 @@ private:
     Ui::StationListView *ui;
     QActionGroup *viewSelectionGroup;
     QStringListModel *stationListModel;
+    QSortFilterProxyModel *filterModel;
     StationView *stationView;
 };
 
index 9bc36b4..31771c9 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>784</width>
-    <height>464</height>
+    <width>782</width>
+    <height>462</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -18,6 +18,9 @@
     <item>
      <widget class="QListView" name="listView"/>
     </item>
+    <item>
+     <widget class="QLineEdit" name="filterEdit"/>
+    </item>
    </layout>
   </widget>
   <widget class="QMenuBar" name="menuBar">
@@ -25,7 +28,7 @@
     <rect>
      <x>0</x>
      <y>0</y>
-     <width>784</width>
+     <width>782</width>
      <height>25</height>
     </rect>
    </property>