phonebookui/pbkcommonui/src/cntnamesview_p.cpp
changeset 59 a642906a277a
parent 47 7cbcb2896f0e
child 65 ae724a111993
--- a/phonebookui/pbkcommonui/src/cntnamesview_p.cpp	Tue Jul 06 14:05:47 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntnamesview_p.cpp	Wed Aug 18 09:39:00 2010 +0300
@@ -17,15 +17,15 @@
 
 #include "cntnamesview_p.h"
 #include "cntactionlauncher.h"
-#include "cntfetchcontactsview.h"
+#include "cntfetchcontactpopup.h"
 #include "cntextensionmanager.h"
 #include "cntglobal.h"
 #include "cntdebug.h"
+#include "cntapplication.h"
 
 #include <cntuiextensionfactory.h>
 #include <cntuisocialextension.h>
 
-#include <qapplication.h>
 #include <hbabstractviewitem.h>
 #include <hbaction.h>
 #include <hbmenu.h>
@@ -47,6 +47,8 @@
 #include <hbmessagebox.h>
 #include <hbparameterlengthlimiter.h>
 
+#include <QInputContext>
+
 const char *CNT_CONTACTLIST_XML = ":/xml/contacts_namelist.docml";
 static const int CNT_MIN_ROW_COUNT = 2;
 
@@ -64,7 +66,6 @@
     mNamesAction(NULL),
     mMenuBuilder(NULL),
     mHandledContactId(0),
-    mFetchView(NULL),
     mIsDefault(true),
     mId( namesView ),
     mActionGroup(NULL),
@@ -137,9 +138,24 @@
     connect(mSearchPanel, SIGNAL(exitClicked()), this, SLOT(hideFinder()));
     connect(mSearchPanel, SIGNAL(criteriaChanged(QString)), this, SLOT(setFilter(QString)));
     
+    HbMainWindow* win = mView->mainWindow();
+    CntApplication* cntApp = static_cast<CntApplication*>(qApp);
+    connect(win, SIGNAL(viewReady()), cntApp, SIGNAL(applicationReady()));
+    
+#ifdef __WINS__
+    mView->menu()->addAction("Change Orientation", this, SLOT(switchOrientation()) );
+#endif
     CNT_EXIT
 }
 
+void CntNamesViewPrivate::switchOrientation()
+{
+    HbMainWindow* win = mView->mainWindow();
+    Qt::Orientation orientation = win->orientation();
+    
+    win->setOrientation( orientation == Qt::Horizontal ? Qt::Vertical : Qt::Horizontal );
+}
+
 CntNamesViewPrivate::~CntNamesViewPrivate()
 {
     CNT_ENTRY
@@ -172,6 +188,10 @@
     CNT_ENTRY
     
     mViewManager = aMgr;
+    if (mView->mainWindow() != NULL && !(mView->visibleItems() & Hb::AllItems))
+    {
+        hideFinder();
+    }
     
     if (!mListModel) {
         QContactDetailFilter filter;
@@ -212,18 +232,23 @@
         setScrollPosition(aArgs.value(ESelectedContact).value<QContact>().localId());
     }
    
+    if ( aArgs.value( EExtraAction ).toString() == CNT_FIND_ACTION  )
+    {
+        showFinder();
+    }
+    
     CNT_EXIT
 }
 
 void CntNamesViewPrivate::deactivate()
 {
     CNT_ENTRY
-    
-    if (!(mView->visibleItems() & Hb::AllItems))
+    HbMainWindow* win = mView->mainWindow();
+    if ( win != NULL)
     {
-        hideFinder();
+        CntApplication* cntApp = static_cast<CntApplication*>(qApp);
+        disconnect(win, SIGNAL(viewReady()), cntApp, SIGNAL(applicationReady()));
     }
-
     delete mMenuBuilder;
     mMenuBuilder = NULL;
     
@@ -252,6 +277,16 @@
     {
         editor->setText("");
         editor->setFocus();
+        
+        // This opens the VKB
+        QInputContext *ic = qApp->inputContext();
+        if (ic)
+        {
+            QEvent *event = new QEvent(QEvent::RequestSoftwareInputPanel);
+            ic->filterEvent(event);
+            delete event;
+        }
+
     }
 
     CNT_EXIT
@@ -295,6 +330,8 @@
     mImportSim->setVisible(false);
     mNewContact->setVisible(false);
     mMultipleDeleter->setVisible(false);
+    HbAction* settings = static_cast<HbAction*>(document()->findObject("cnt:settings") );
+    settings->setVisible(false);
     
     CNT_EXIT
 }
@@ -303,9 +340,6 @@
 {
     CNT_ENTRY
     
-    mVirtualKeyboard->closeKeypad();
-    mView->setMaximumHeight(-1);
-    
     document()->load( CNT_CONTACTLIST_XML, "no_find" );
     mView->showItems(Hb::AllItems);
     
@@ -324,6 +358,8 @@
     mNewContact->setVisible(true);
     mImportSim->setVisible(true);
     mMultipleDeleter->setVisible(true);
+    HbAction* settings = static_cast<HbAction*>(document()->findObject("cnt:settings") );
+    settings->setVisible(true);
 
     CNT_EXIT    
 }
@@ -397,12 +433,16 @@
     CNT_ENTRY
     
     QContactManager* manager = mViewManager->contactManager( SYMBIAN_BACKEND );
-    QString name = manager->synthesizedDisplayLabel(aContact);
+    QString name = manager->synthesizedContactDisplayLabel(aContact);
+    if (name.isEmpty())
+    {
+        name = hbTrId("txt_phob_list_unnamed");
+    }
     
     mHandledContactId = aContact.localId();
     
-    HbMessageBox::question(HbParameterLengthLimiter(hbTrId("txt_phob_info_delete_1")).arg(name), this, SLOT(handleDeleteContact(HbAction*)),
-            hbTrId("txt_common_button_delete"), hbTrId("txt_common_button_cancel"));
+    HbMessageBox::question(HbParameterLengthLimiter(hbTrId("txt_phob_info_delete_1")).arg(name), this, SLOT(handleDeleteContact(int)),
+            HbMessageBox::Delete | HbMessageBox::Cancel);
     
     CNT_EXIT
 }
@@ -410,36 +450,26 @@
 void CntNamesViewPrivate::deleteMultipleContacts()
 {
     CNT_ENTRY
+    CntFetchContactPopup* popup = CntFetchContactPopup::createMultiSelectionPopup(
+            hbTrId("txt_phob_title_delete_contacts"),
+            hbTrId("txt_common_button_delete"),
+            *mViewManager->contactManager(SYMBIAN_BACKEND));
+    connect(popup, SIGNAL(fetchReady(QSet<QContactLocalId>)), 
+            this, SLOT(handleDeleteMultipleContacts(QSet<QContactLocalId>)) );
     
-    if (!mFetchView) {
-        mFetchView = new CntFetchContacts(*mViewManager->contactManager( SYMBIAN_BACKEND ));
-        connect(mFetchView, SIGNAL(clicked()), this, SLOT(handleDeleteMultipleContacts()));
-    }
-
-    mFetchView->setDetails(hbTrId("txt_phob_title_delete_contacts"),hbTrId("txt_common_button_delete"));
-    QSet<QContactLocalId> emptyContactsSet;
-
-    // Pop up a list of contacts for deletion
-    mFetchView->displayContacts(HbAbstractItemView::MultiSelection, emptyContactsSet);
+    popup->showPopup();
     CNT_EXIT
 }
 
-void CntNamesViewPrivate::handleDeleteMultipleContacts()
+void CntNamesViewPrivate::handleDeleteMultipleContacts( QSet<QContactLocalId> aIds )
 {
     CNT_ENTRY
     
-    QSet<QContactLocalId> selectedContacts = mFetchView->getSelectedContacts();
-
     QContactManager* manager = mViewManager->contactManager( SYMBIAN_BACKEND );
-    if ( !mFetchView->wasCanceled() && !selectedContacts.isEmpty() ) {
-        foreach ( QContactLocalId id, selectedContacts.values() )
-        {
-            manager->removeContact( id );
-        }
+    foreach ( QContactLocalId id, aIds )
+    {
+        manager->removeContact( id );
     }
-
-    delete mFetchView;
-    mFetchView = NULL;
     
     CNT_EXIT
 }
@@ -459,7 +489,7 @@
     CNT_ENTRY
     
     CntViewParameters args;
-    args.insert(EViewId, commLauncherView);
+    args.insert(EViewId, contactCardView);
     if (aContact.localId() == mListModel->myCardId() && aContact.details().count() <= 4)
     {
         args.insert(EViewId, myCardView);
@@ -485,6 +515,7 @@
         if (mMenu) 
         {
             delete mMenu;
+            mMenu = NULL;
         }
         mMenu = mMenuBuilder->actionMenu( contact, mListModel->myCardId() );
         mMenu->setPreferredPos( aPoint );
@@ -514,13 +545,11 @@
     CNT_EXIT
 }
 
-void CntNamesViewPrivate::handleDeleteContact( HbAction* aAction )
+void CntNamesViewPrivate::handleDeleteContact( int aAction )
 {
     CNT_ENTRY
     
-    HbMessageBox *note = static_cast<HbMessageBox*>(sender());
-    
-    if (note && aAction == note->actions().first())
+    if (aAction == HbMessageBox::Delete)
     {
         mViewManager->contactManager( SYMBIAN_BACKEND )->removeContact(mHandledContactId);
     }