phonebookui/pbkcommonui/src/cntmycardview.cpp
changeset 37 fd64c38c277d
parent 31 2a11b5b00470
child 40 b46a585f6909
--- a/phonebookui/pbkcommonui/src/cntmycardview.cpp	Fri May 14 15:42:23 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntmycardview.cpp	Thu May 27 12:45:19 2010 +0300
@@ -74,8 +74,9 @@
 {
     mViewManager = aMgr;
     
-    if (mView->navigationAction() != mSoftkey)
+    if (mView->navigationAction() != mSoftkey) {
         mView->setNavigationAction(mSoftkey);
+    }
     
     HbMainWindow* window = mView->mainWindow();
     connect(window, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(setOrientation(Qt::Orientation)));
@@ -97,13 +98,14 @@
         chooseButton->setEnabled(false);
     }
     
-    mFetchView = new CntFetchContacts(mViewManager->contactManager( SYMBIAN_BACKEND ));
-    connect(mFetchView, SIGNAL(clicked()), this, SLOT(handleMultiCardSelection()));
+    if (!mFetchView) {
+        mFetchView = new CntFetchContacts(mViewManager->contactManager( SYMBIAN_BACKEND ));
+        connect(mFetchView, SIGNAL(clicked()), this, SLOT(handleMultiCardSelection()));
+    }
 }
 
 void CntMyCardView::deactivate()
 {
-
 }
 
 void CntMyCardView::setOrientation(Qt::Orientation orientation)
@@ -141,7 +143,7 @@
 void CntMyCardView::openMyCardSelectionView()
 {
     // Display a list of contacts to choose a mycard from.
-    mFetchView->setDetails(hbTrId("txt_phob_subtitle_my_card"),hbTrId("Save"));
+    mFetchView->setDetails(hbTrId("txt_phob_title_select_contact"), "");
     QSet<QContactLocalId> emptyContactsSet;
     mFetchView->displayContacts(CntFetchContacts::popup,
                                 HbAbstractItemView::SingleSelection,
@@ -157,11 +159,32 @@
     if ( !mFetchView->wasCanceled() && !selectedContacts.isEmpty() ) {
         QList<QContactLocalId> selectedContactsList = selectedContacts.values();
         manager->setSelfContactId(selectedContactsList.front());
+
+        QContact contact = mViewManager->contactManager(SYMBIAN_BACKEND)->contact(selectedContactsList.front());
+        removeFromGroup(&contact);
+
+        showPreviousView();
     }
-    
-    CntViewParameters viewParameters;
-    viewParameters.insert(EViewId, namesView);
-    mViewManager->changeView(viewParameters);
+}
+
+void CntMyCardView::removeFromGroup(const QContact* aContact)
+{
+    QContactDetailFilter groupFilter;
+    groupFilter.setDetailDefinitionName(QContactType::DefinitionName, QContactType::FieldType);
+    groupFilter.setValue(QLatin1String(QContactType::TypeGroup));
+
+    QContactManager* mgr = mViewManager->contactManager(SYMBIAN_BACKEND);
+    QList<QContactLocalId> groupContactIds = mgr->contactIds(groupFilter);
+    if (!groupContactIds.isEmpty()) {
+        for(int i = 0;i < groupContactIds.count();i++) {
+            QContact groupContact = mgr->contact(groupContactIds.at(i));
+            QContactRelationship relationship;
+            relationship.setRelationshipType(QContactRelationship::HasMember);
+            relationship.setFirst(groupContact.id());
+            relationship.setSecond(aContact->id());
+            mgr->removeRelationship(relationship);  
+        }
+    }
 }
 
 // EOF