diff -r 2a11b5b00470 -r fd64c38c277d phonebookui/pbkcommonui/src/cntmycardview.cpp --- 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 emptyContactsSet; mFetchView->displayContacts(CntFetchContacts::popup, HbAbstractItemView::SingleSelection, @@ -157,11 +159,32 @@ if ( !mFetchView->wasCanceled() && !selectedContacts.isEmpty() ) { QList 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 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