phonebookui/pbkcommonui/src/cntmycardselectionview.cpp
changeset 27 de1630741fbe
parent 25 76a2435edfd4
child 40 b46a585f6909
--- a/phonebookui/pbkcommonui/src/cntmycardselectionview.cpp	Fri Apr 16 14:53:18 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntmycardselectionview.cpp	Mon May 03 12:24:20 2010 +0300
@@ -16,51 +16,58 @@
 */
 
 #include "cntmycardselectionview.h"
+#include <QModelIndex>
+#include <mobcntmodel.h>
+#include <hblistview.h>
+#include <qcontact.h>
 
-/*!
-Constructor, initialize member variables.
-\a viewManager is the parent that creates this view. \a parent is a pointer to parent QGraphicsItem (by default this is 0)
-*/
-CntMyCardSelectionView::CntMyCardSelectionView(CntViewManager *viewManager, QGraphicsItem *parent, HbAbstractItemView::SelectionMode newMode)
-    : CntBaseSelectionView(viewManager, parent, newMode)
+CntMyCardSelectionView::CntMyCardSelectionView() : CntBaseSelectionView()
 {
-    QContactDetailFilter contactsFilter;
-    contactsFilter.setDetailDefinitionName(QContactType::DefinitionName, QContactType::FieldType);
-    contactsFilter.setValue(QString(QLatin1String(QContactType::TypeContact)));
-    contactModel()->setFilterAndSortOrder(contactsFilter);
-    contactModel()->showMyCard(false);
+    connect(mListView, SIGNAL(activated(const QModelIndex&)), this, SLOT(onListViewActivated(const QModelIndex&)));
 }
 
-/*!
-Destructor
-*/
 CntMyCardSelectionView::~CntMyCardSelectionView()
 {
-    
 }
 
 /*!
-Set selection to mycard
-*/
-void CntMyCardSelectionView::aboutToCloseView()
-{
-    CntViewParameters args;
-    viewManager()->back( args );
-}
-
-
-/*!
 Set index to mycard
 */
 void CntMyCardSelectionView::onListViewActivated(const QModelIndex& index)
 {
     if (index.isValid())
     {  
-        QContact contact = contactModel()->contact(index);
-        contactManager()->setSelfContactId(contact.localId());
-        viewManager()->changeView(CntViewParameters::namesView);
+        QContact contact = mListModel->contact(index);
+        QContactManager* mgr = mMgr->contactManager(SYMBIAN_BACKEND);
+        mgr->setSelfContactId(contact.localId());
+        
+        removeFromGroup(&contact);
+        
+        CntViewParameters params;
+        params.insert(EViewId, namesView);
+        mMgr->changeView(params);
     }
 }
     
+void CntMyCardSelectionView::removeFromGroup(const QContact* aContact)
+{
+    QContactDetailFilter groupFilter;
+    groupFilter.setDetailDefinitionName(QContactType::DefinitionName, QContactType::FieldType);
+    groupFilter.setValue(QLatin1String(QContactType::TypeGroup));
 
+    QContactManager* mgr = mMgr->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);  
+         }
+    }
+}