phonebookui/pbkcommonui/src/cntmycardview.cpp
changeset 31 2a11b5b00470
parent 27 de1630741fbe
child 37 fd64c38c277d
--- a/phonebookui/pbkcommonui/src/cntmycardview.cpp	Mon May 03 12:24:20 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntmycardview.cpp	Fri May 14 15:42:23 2010 +0300
@@ -16,6 +16,7 @@
 */
 
 #include "cntmycardview.h"
+#include "cntfetchcontactsview.h"
 #include "qtpbkglobal.h"
 #include <hbpushbutton.h>
 #include <hbaction.h>
@@ -26,7 +27,8 @@
 
 CntMyCardView::CntMyCardView() :
     mContact(NULL),
-    mViewManager(NULL)
+    mViewManager(NULL),
+    mFetchView(NULL)
 {
     bool ok = false;
     mDocumentLoader.load(CNT_MYCARD_UI_XML, &ok);
@@ -51,6 +53,9 @@
     
     delete mContact;
     mContact = 0;
+    
+    delete mFetchView;
+    mFetchView = NULL;
 }
 
 /*!
@@ -67,6 +72,8 @@
 */
 void CntMyCardView::activate(CntAbstractViewManager* aMgr, const CntViewParameters aArgs)
 {
+    mViewManager = aMgr;
+    
     if (mView->navigationAction() != mSoftkey)
         mView->setNavigationAction(mSoftkey);
     
@@ -75,8 +82,6 @@
     setOrientation(window->orientation());
     
     mContact = new QContact(aArgs.value(ESelectedContact).value<QContact>());
-    mViewManager = aMgr;
-    
     HbPushButton *newButton = static_cast<HbPushButton*>(mDocumentLoader.findWidget(QString("cnt_button_new")));
     connect(newButton, SIGNAL(clicked()), this, SLOT(openNameEditor()));
 
@@ -91,6 +96,9 @@
     {
         chooseButton->setEnabled(false);
     }
+    
+    mFetchView = new CntFetchContacts(mViewManager->contactManager( SYMBIAN_BACKEND ));
+    connect(mFetchView, SIGNAL(clicked()), this, SLOT(handleMultiCardSelection()));
 }
 
 void CntMyCardView::deactivate()
@@ -117,13 +125,10 @@
 */
 void CntMyCardView::openNameEditor()
 {
-    //create a new my card contact
-    QContactManager* mgr = mViewManager->contactManager( SYMBIAN_BACKEND );
-    mgr->saveContact(mContact);
-    mgr->setSelfContactId(mContact->localId());
-    //open the contact editor
     CntViewParameters viewParameters;
     viewParameters.insert(EViewId, editView);
+    viewParameters.insert(EMyCard, "myCard" );
+    
     QVariant var;
     var.setValue(*mContact);
     viewParameters.insert(ESelectedContact, var);
@@ -135,8 +140,27 @@
 */
 void CntMyCardView::openMyCardSelectionView()
 {
+    // Display a list of contacts to choose a mycard from.
+    mFetchView->setDetails(hbTrId("txt_phob_subtitle_my_card"),hbTrId("Save"));
+    QSet<QContactLocalId> emptyContactsSet;
+    mFetchView->displayContacts(CntFetchContacts::popup,
+                                HbAbstractItemView::SingleSelection,
+                                emptyContactsSet);
+}
+
+void CntMyCardView::handleMultiCardSelection()
+{
+    QContactManager* manager = mViewManager->contactManager( SYMBIAN_BACKEND );
+
+    QSet<QContactLocalId> selectedContacts = mFetchView->getSelectedContacts();
+
+    if ( !mFetchView->wasCanceled() && !selectedContacts.isEmpty() ) {
+        QList<QContactLocalId> selectedContactsList = selectedContacts.values();
+        manager->setSelfContactId(selectedContactsList.front());
+    }
+    
     CntViewParameters viewParameters;
-    viewParameters.insert(EViewId, myCardSelectionView);
+    viewParameters.insert(EViewId, namesView);
     mViewManager->changeView(viewParameters);
 }