phonebookui/pbkcommonui/src/cntfetchcontactsview.cpp
changeset 46 efe85016a067
parent 40 b46a585f6909
child 47 7cbcb2896f0e
--- a/phonebookui/pbkcommonui/src/cntfetchcontactsview.cpp	Fri Jun 11 13:29:23 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntfetchcontactsview.cpp	Wed Jun 23 18:02:44 2010 +0300
@@ -21,6 +21,7 @@
 #include <hbaction.h>
 #include <hblabel.h>
 #include <hbaction.h>
+#include <hblineedit.h>
 #include <hbmainwindow.h>
 #include <hblistviewitem.h>
 #include <hblistview.h>
@@ -28,7 +29,6 @@
 #include <hbstaticvkbhost.h>
 #include <QGraphicsLinearLayout>
 #include <qcontactid.h>
-#include <QDebug>
 #include <cntlistmodel.h>
 #include "cntfetchcontactsview.h"
 
@@ -55,27 +55,13 @@
     mSearchPanel->setVisible(false);
     mSearchPanel->setCancelEnabled(false);
     connect(mSearchPanel, SIGNAL(criteriaChanged(QString)), this, SLOT(setFilter(QString)));
-
+    
+    HbLineEdit *editor = static_cast<HbLineEdit*>(mSearchPanel->primitive("lineedit"));
+    editor->setInputMethodHints(Qt::ImhNoPredictiveText);
+    
     mLayout = new QGraphicsLinearLayout(Qt::Vertical);
     
     mContainerWidget = new HbWidget();
-
-    // set up the list with all contacts
-    QList<QContactSortOrder> sortOrders;
-    QContactSortOrder sortOrderFirstName;
-    sortOrderFirstName.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldFirstName);
-    sortOrderFirstName.setCaseSensitivity(Qt::CaseInsensitive);
-    sortOrders.append(sortOrderFirstName);
-
-    QContactSortOrder sortOrderLastName;
-    sortOrderLastName.setDetailDefinitionName(QContactName::DefinitionName, QContactName::FieldLastName);
-    sortOrderLastName.setCaseSensitivity(Qt::CaseInsensitive);
-    sortOrders.append(sortOrderLastName);
-
-    QContactDetailFilter contactsFilter;
-    contactsFilter.setDetailDefinitionName(QContactType::DefinitionName, QContactType::FieldType);
-    contactsFilter.setValue(QString(QLatin1String(QContactType::TypeContact)));
-    mCntModel = new CntListModel(mManager, contactsFilter, sortOrders, false);
 }
 
 CntFetchContacts::~CntFetchContacts()
@@ -130,8 +116,14 @@
         
         mLayout->addItem(mSearchPanel);
         mContainerWidget->setLayout(mLayout);
-        mContainerWidget->setPreferredHeight(mListView->mainWindow()->size().height());
+        
+        // Main window is NULL in unit tests
+        HbMainWindow* window = mListView->mainWindow();
+        if (window) {
+            mContainerWidget->setPreferredHeight(mListView->mainWindow()->size().height());
+        }
         mContainerWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
+                
         break;
     }
 
@@ -154,7 +146,7 @@
     detailfilter.setMatchFlags(QContactFilter::MatchStartsWith);
     detailfilter.setValue(searchList);
     
-    mCntModel->setFilterAndSortOrder(detailfilter);
+    mCntModel->setFilter(detailfilter);
 
     markMembersInView();
 
@@ -213,13 +205,17 @@
     if (popup && userCanceled) {
         mCurrentlySelected.clear();
         
-        // Notify that the user canceled.
         mWasCanceled = true;
     }
     else {
         mWasCanceled = false;
     }
     
+    mPopup->setVisible(false);
+    mListView->setModel(NULL);
+    delete mCntModel;
+    mCntModel = NULL;
+    
     emit clicked();
 }
 
@@ -261,6 +257,13 @@
     if (!mPopup) {
         mPopup = new HbDialog;
     }
+
+    QContactDetailFilter contactsFilter;
+    contactsFilter.setDetailDefinitionName(QContactType::DefinitionName, QContactType::FieldType);
+    contactsFilter.setValue(QString(QLatin1String(QContactType::TypeContact)));
+    if (!mCntModel) {
+        mCntModel = new CntListModel(mManager, contactsFilter, false);
+    }
     
     if (!mListView) {
         mListView = new HbListView(mPopup);
@@ -295,6 +298,11 @@
 
         mCntModel->showMyCard(false);
     }
+    
+    // Handle the case where the model was removed for the list view
+    if (!mListView->model()) {
+        mListView->setModel(mCntModel);
+    }
 }
 
 void CntFetchContacts::connectSignal()
@@ -336,7 +344,7 @@
 
 void CntFetchContacts::markMembersInView()
 {
-    // if there are no contacts matching the current filter,
+    // If there are no contacts matching the current filter,
     // show "no matching contacts" label
     if (mCntModel->rowCount() == 0) {
         if (!mEmptyListLabel) {