phonebookui/pbkcommonui/src/cntgroupmemberview.cpp
changeset 53 e6aff7b69165
parent 50 77bc263e1626
child 54 47627ab5d7a4
--- a/phonebookui/pbkcommonui/src/cntgroupmemberview.cpp	Wed Jul 21 11:37:51 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntgroupmemberview.cpp	Fri Jul 23 12:43:48 2010 +0300
@@ -16,7 +16,7 @@
 */
 
 #include "cntgroupmemberview.h"
-#include "cntfetchcontactsview.h"
+#include "cntfetchcontactpopup.h"
 #include "cntcontactcardheadingitem.h"
 #include "cntglobal.h"
 #include "cntimagelabel.h"
@@ -36,6 +36,7 @@
 #include <thumbnailmanager_qt.h>
 #include <cntlistmodel.h>
 #include <hbmainwindow.h>
+#include <xqservicerequest.h>
 
 #include "cntdocumentloader.h"
 
@@ -63,7 +64,6 @@
     mModel(NULL),
     mImageLabel(NULL), 
     mListView(NULL),
-    mFetchView(NULL),
     mAvatar(NULL)
 {
     mDocument = new CntDocumentLoader;
@@ -124,13 +124,10 @@
     mView->deleteLater();
     
     delete mGroupContact;
-    mGroupContact = 0;
+    mGroupContact = NULL;
     
     delete mModel;
-    mModel = 0;
-    
-    delete mFetchView;
-    mFetchView = 0;
+    mModel = NULL;
     
     delete mAvatar;
     mAvatar = NULL;
@@ -203,7 +200,7 @@
     
     if (mArgs.value(ESelectedAction).toString() == CNT_SAVE_ACTION)
     {
-        QString name = getContactManager()->synthesizedDisplayLabel(*mGroupContact);
+        QString name = getContactManager()->synthesizedContactDisplayLabel(*mGroupContact);
         HbNotificationDialog::launchDialog(HbParameterLengthLimiter(hbTrId("txt_phob_dpophead_new_group_1_created").arg(name)));
     }
 }
@@ -240,56 +237,46 @@
     membersFilter.setRelationshipType(QContactRelationship::HasMember);
     membersFilter.setRelatedContactRole(QContactRelationship::First);
     membersFilter.setRelatedContactId(mGroupContact->id());   
+    
     mOriginalGroupMembers = getContactManager()->contactIds(membersFilter);
     
-    QSet<QContactLocalId> contactsSet = mOriginalGroupMembers.toSet();
-
-    QString groupName = mGroupContact->displayLabel();
+    QContactName contactName = mGroupContact->detail( QContactName::DefinitionName );
+    QString groupName = contactName.value( QContactName::FieldCustomLabel );
     if (groupName.isEmpty())
     {
         groupName = hbTrId("txt_phob_list_unnamed");
     }
     
-    if (!mFetchView) {
-        mFetchView = new CntFetchContacts(*mViewManager->contactManager( SYMBIAN_BACKEND ));
-        connect(mFetchView, SIGNAL(clicked()), this, SLOT(handleManageMembers()));
-    }
-    mFetchView->setDetails(HbParameterLengthLimiter(hbTrId("txt_phob_title_members_of_1_group")).arg(groupName),
-                           hbTrId("txt_common_button_save"));
-    mFetchView->displayContacts(HbAbstractItemView::MultiSelection, contactsSet);
+    CntFetchContactPopup* popup = CntFetchContactPopup::createMultiSelectionPopup(
+            HbParameterLengthLimiter(hbTrId("txt_phob_title_members_of_1_group")).arg(groupName),
+            hbTrId("txt_common_button_save"),
+            *mViewManager->contactManager(SYMBIAN_BACKEND));
+    connect( popup, SIGNAL(fetchReady(QSet<QContactLocalId>)),this, SLOT(handleManageMembers(QSet<QContactLocalId>)) );
+    popup->setSelectedContacts( mOriginalGroupMembers.toSet() );
+    popup->showPopup();
 }
 
-void CntGroupMemberView::handleManageMembers()
+void CntGroupMemberView::handleManageMembers(QSet<QContactLocalId> aIds)
 {
-    
-    QSet<QContactLocalId> selectedContacts = mFetchView->getSelectedContacts();
-    
-    if (mFetchView->wasCanceled()) {
-        delete mFetchView;
-        mFetchView = 0;
-        return;
-    }
-
     QList<QContactRelationship> removedMemberships;
     QList<QContactRelationship> addedMemberships;
 
-    QSet<QContactLocalId> removedMembers = mOriginalGroupMembers.toSet() - selectedContacts;
+    QSet<QContactLocalId> removedMembers = mOriginalGroupMembers.toSet() - aIds;
     setRelationship(removedMembers, removedMemberships);
 
-    QSet<QContactLocalId> addedMembers = selectedContacts - mOriginalGroupMembers.toSet();
+    QSet<QContactLocalId> addedMembers = aIds - mOriginalGroupMembers.toSet();
     setRelationship(addedMembers, addedMemberships);
     
     QMap<int, QContactManager::Error> errors;
-    if (!addedMemberships.isEmpty()) {
+    if (!addedMemberships.isEmpty()) 
+    {
         getContactManager()->saveRelationships(&addedMemberships, &errors);
     }
     
-    if (!removedMemberships.isEmpty()) {
+    if (!removedMemberships.isEmpty()) 
+    {
         getContactManager()->removeRelationships(removedMemberships, &errors);
     }
-    
-    delete mFetchView;
-    mFetchView = 0;
 }
 
 void CntGroupMemberView::createModel()
@@ -314,7 +301,8 @@
 
 void CntGroupMemberView::deleteGroup()
 {
-    QString groupName = mGroupContact->displayLabel();
+    QContactName contactName = mGroupContact->detail( QContactName::DefinitionName );
+    QString groupName = contactName.value( QContactName::FieldCustomLabel );
     if (groupName.isNull())
     {
         groupName = hbTrId("txt_phob_list_unnamed");
@@ -352,14 +340,17 @@
     HbAction *removeFromGroupAction = 0;
     HbAction *openContactAction = 0;
     HbAction *editContactAction = 0;
+    HbAction *sendToHsAction = 0;
 
     openContactAction = menu->addAction(hbTrId("txt_common_menu_open"));
     editContactAction = menu->addAction(hbTrId("txt_common_menu_edit"));
     removeFromGroupAction = menu->addAction(hbTrId("txt_phob_menu_remove_from_group"));
+    sendToHsAction = menu->addAction(hbTrId("txt_phob_menu_send_to_homescreen"));
     
     openContactAction->setData( data );
     editContactAction->setData( data );
     removeFromGroupAction->setData( data );
+    sendToHsAction->setData( data );
 
     menu->open(this, SLOT(handleMenu(HbAction*)));
 }
@@ -382,15 +373,34 @@
         {
         removeFromGroup(index);
         }
+    else if (action == menuItem->actions().at(3))
+        {
+        sendToHs(index);
+        }
 }
 
+/*!
+Called after user clicked on the listview.
+*/
+void CntGroupMemberView::sendToHs(const QModelIndex &index)
+{
+    QVariantHash preferences;
+    preferences["contactId"] = mModel->contact(index).id().localId();
+    
+    XQServiceRequest snd("com.nokia.symbian.IHomeScreenClient",
+                         "addWidget(QString,QVariantHash)",
+                         false);
+    snd << QString("contactwidgethsplugin");
+    snd << preferences;
+    snd.send();
+}
 
 /*!
 Called after user clicked on the listview.
 */
 void CntGroupMemberView::showContactView(const QModelIndex &index)
 {
-    mArgs.insert(EViewId, commLauncherView);
+    mArgs.insert(EViewId, contactCardView);
     QVariant var;
     var.setValue(mModel->contact(index));
     mArgs.insert(ESelectedContact, var);
@@ -429,12 +439,11 @@
     Q_UNUSED(error);
     if (!error)
     {
-        QIcon qicon(pixmap);
-        HbIcon icon(qicon);
+        HbIcon icon(pixmap);
         mHeadingItem->setIcon(icon);
         
         mImageLabel->clear();
-        mImageLabel->setIcon(icon);
+        mImageLabel->setIcon(pixmap);
     }
 }
 
@@ -504,7 +513,7 @@
             }
             mAvatar->setImageUrl(QUrl());
             mImageLabel->clear();
-            mImageLabel->setIcon(HbIcon("qtg_large_add_group_picture"));
+            mImageLabel->setAvatarIcon(HbIcon("qtg_large_add_group_picture"));
             mHeadingItem->setIcon(HbIcon("qtg_large_add_group_picture"));
             mViewManager->contactManager( SYMBIAN_BACKEND )->saveContact(mGroupContact);
        }