locationpickerservice/src/locationpickerproxymodel.cpp
changeset 15 13ae750350c9
child 17 0f22fb80ebba
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locationpickerservice/src/locationpickerproxymodel.cpp	Fri Apr 16 14:54:12 2010 +0300
@@ -0,0 +1,72 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: LocationPickerProxyModel implementation
+*
+*/
+
+#include <QStandardItemModel>
+#include "locationpickerproxymodel.h"
+
+// ----------------------------------------------------
+// LocationPickerProxyModel::LocationPickerProxyModel()
+// ----------------------------------------------------
+
+LocationPickerProxyModel::LocationPickerProxyModel(QObject *parent)
+     : QSortFilterProxyModel(parent)
+{
+}
+
+// ----------------------------------------------------
+// LocationPickerProxyModel::lessThan()
+// ----------------------------------------------------
+ bool LocationPickerProxyModel::lessThan(const QModelIndex &left,
+                                      const QModelIndex &right) const
+{
+    // 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);
+
+    QStringList leftStringList = leftData.toStringList();
+
+    QStringList rightStringList = rightData.toStringList();
+
+    return QString::compare( QString( leftStringList[0] + " " + leftStringList[1] ),
+                                            QString( rightStringList[0] + " " + rightStringList[1] ), Qt::CaseInsensitive ) < 0;
+
+}
+
+ // ----------------------------------------------------
+// LocationPickerProxyModel::filterAcceptsRow()
+// ----------------------------------------------------
+
+bool LocationPickerProxyModel::filterAcceptsRow(int sourceRow,
+        const QModelIndex &sourceParent) const
+{
+     // 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));
+}
+
+ // ----------------------------------------------------
+// LocationPickerProxyModel::filterParameterChanged()
+// ----------------------------------------------------
+void LocationPickerProxyModel::filterParameterChanged(QString aSearchText)
+{
+    mSearchText = " " + aSearchText;
+}