locationpickerservice/src/locationpickerproxymodel.cpp
changeset 17 0f22fb80ebba
parent 15 13ae750350c9
child 20 cd10d5b85554
--- a/locationpickerservice/src/locationpickerproxymodel.cpp	Fri Apr 16 14:54:12 2010 +0300
+++ b/locationpickerservice/src/locationpickerproxymodel.cpp	Mon May 03 12:27:22 2010 +0300
@@ -22,8 +22,9 @@
 // LocationPickerProxyModel::LocationPickerProxyModel()
 // ----------------------------------------------------
 
-LocationPickerProxyModel::LocationPickerProxyModel(QObject *parent)
-     : QSortFilterProxyModel(parent)
+LocationPickerProxyModel::LocationPickerProxyModel(Qt::Orientations aOrientation , QObject *parent)
+     :QSortFilterProxyModel(parent),
+     mOrientation( aOrientation )
 {
 }
 
@@ -33,18 +34,28 @@
  bool LocationPickerProxyModel::lessThan(const QModelIndex &left,
                                       const QModelIndex &right) const
 {
-    // get left and right items data and implement sort logic
+     // get left and right items data and implement sort logic
      // return true if left is less than right
-    QVariant leftData = sourceModel()->data(left);
-    QVariant rightData = sourceModel()->data(right);
+	 QVariant leftData = sourceModel()->data(left);
+     QVariant rightData = sourceModel()->data(right);
+
+    if( mOrientation == Qt::Vertical )
+    {
+        QStringList leftStringList = leftData.toStringList();
+
+        QStringList rightStringList = rightData.toStringList();
 
-    QStringList leftStringList = leftData.toStringList();
-
-    QStringList rightStringList = rightData.toStringList();
+        return QString::compare( QString( leftStringList[0] + " " + leftStringList[1] ),
+                                            QString( rightStringList[0] + " " + rightStringList[1] ), Qt::CaseInsensitive ) < 0;
+    }
+    else
+    {
+        QString leftString = leftData.toString();
 
-    return QString::compare( QString( leftStringList[0] + " " + leftStringList[1] ),
-                                            QString( rightStringList[0] + " " + rightStringList[1] ), Qt::CaseInsensitive ) < 0;
+        QString rightString = rightData.toString();
 
+        return QString::compare( leftString, rightString, Qt::CaseInsensitive ) < 0;
+    }
 }
 
  // ----------------------------------------------------
@@ -54,13 +65,18 @@
 bool LocationPickerProxyModel::filterAcceptsRow(int sourceRow,
         const QModelIndex &sourceParent) const
 {
-     // implement logic for search.
+    if( mOrientation == Qt::Vertical)
+    {
+    // implement logic for search.
     QModelIndex index0 = sourceModel()->index(sourceRow, 0, sourceParent);
 
     QStringList stringList = sourceModel()->data(index0).toStringList();
     QString fullString = " " + stringList[0] + " " + stringList[1];
 
     return (fullString.contains(mSearchText, Qt::CaseInsensitive));
+    }
+    else
+    return true;
 }
 
  // ----------------------------------------------------