phonebookui/pbkcommonui/src/cntgroupmemberview.cpp
changeset 31 2a11b5b00470
parent 27 de1630741fbe
child 37 fd64c38c277d
equal deleted inserted replaced
27:de1630741fbe 31:2a11b5b00470
    14 * Description:
    14 * Description:
    15 *
    15 *
    16 */
    16 */
    17 
    17 
    18 #include "cntgroupmemberview.h"
    18 #include "cntgroupmemberview.h"
       
    19 #include "cntfetchcontactsview.h"
    19 #include "cntcontactcardheadingitem.h"
    20 #include "cntcontactcardheadingitem.h"
    20 #include "cntgroupselectionpopup.h"
       
    21 #include "qtpbkglobal.h"
    21 #include "qtpbkglobal.h"
    22 #include "cntimagelabel.h"
    22 #include "cntimagelabel.h"
       
    23 #include "cntimageutility.h"
    23 #include <hbnotificationdialog.h>
    24 #include <hbnotificationdialog.h>
       
    25 #include <hbmessagebox.h>
    24 #include <hbmenu.h>
    26 #include <hbmenu.h>
    25 #include <hblistview.h>
    27 #include <hblistview.h>
    26 #include <hblistviewitem.h>
    28 #include <hblistviewitem.h>
    27 #include <hbframebackground.h>
    29 #include <hbframebackground.h>
       
    30 #include <hbindexfeedback.h>
       
    31 #include <hbscrollbar.h>
    28 #include <hbview.h>
    32 #include <hbview.h>
    29 #include <hbaction.h>
    33 #include <hbaction.h>
    30 #include <hblabel.h>
    34 #include <hblabel.h>
       
    35 #include <hbparameterlengthlimiter.h>
    31 #include <thumbnailmanager_qt.h>
    36 #include <thumbnailmanager_qt.h>
    32 #include <mobcntmodel.h>
    37 #include <mobcntmodel.h>
    33 #include <hbmainwindow.h>
    38 #include <hbmainwindow.h>
    34 
    39 
    35 
       
    36 #include <QGraphicsLinearLayout>
       
    37 
       
    38 #include <hbdocumentloader.h>
       
    39 #include "cntdocumentloader.h"
    40 #include "cntdocumentloader.h"
    40 
    41 
    41 const char *CNT_GROUPMEMBERVIEW_XML = ":/xml/contacts_groupmembers.docml";
    42 const char *CNT_GROUPMEMBERVIEW_XML = ":/xml/contacts_groupmembers.docml";
    42 
    43 
    43 /*!
    44 /*!
    58 CntGroupMemberView::CntGroupMemberView() :
    59 CntGroupMemberView::CntGroupMemberView() :
    59     mGroupContact(NULL),
    60     mGroupContact(NULL),
    60     mViewManager(NULL),
    61     mViewManager(NULL),
    61     mHeadingItem(NULL),
    62     mHeadingItem(NULL),
    62     mModel(NULL),
    63     mModel(NULL),
       
    64     mImageLabel(NULL), 
    63     mListView(NULL),
    65     mListView(NULL),
    64     mImageLabel(NULL)    
    66     mFetchView(NULL),
       
    67     mIsPreviousImageEditorView(false),
       
    68     mAvatar(NULL)
    65 {
    69 {
    66 
    70 
    67     mDocument = new CntDocumentLoader;
    71     mDocument = new CntDocumentLoader;
    68     
    72     
    69     bool ok;
    73     bool ok;
    86         SLOT(showContextMenu(HbAbstractViewItem*,QPointF)));
    90         SLOT(showContextMenu(HbAbstractViewItem*,QPointF)));
    87     connect(mListView, SIGNAL(activated (const QModelIndex&)), this,
    91     connect(mListView, SIGNAL(activated (const QModelIndex&)), this,
    88         SLOT(showContactView(const QModelIndex&)));
    92         SLOT(showContactView(const QModelIndex&)));
    89     
    93     
    90     mHeadingItem = static_cast<CntContactCardHeadingItem*>( mDocument->findWidget("editViewHeading") );
    94     mHeadingItem = static_cast<CntContactCardHeadingItem*>( mDocument->findWidget("editViewHeading") );
       
    95     connect(mHeadingItem, SIGNAL(passLongPressed(const QPointF&)), this, SLOT(drawImageMenu(const QPointF&)));
    91 
    96 
    92     // menu actions
    97     // menu actions
    93     mEditGroupAction = static_cast<HbAction*>( mDocument->findObject("cnt:editgroupdetails"));
    98     mEditGroupAction = static_cast<HbAction*>( mDocument->findObject("cnt:editgroupdetails"));
    94     connect(mEditGroupAction, SIGNAL(triggered()), this, SLOT(editGroup()));
    99     connect(mEditGroupAction, SIGNAL(triggered()), this, SLOT(editGroup()));
    95     
   100     
   103     
   108     
   104     // thumbnail manager
   109     // thumbnail manager
   105     mThumbnailManager = new ThumbnailManager(this);
   110     mThumbnailManager = new ThumbnailManager(this);
   106     mThumbnailManager->setMode(ThumbnailManager::Default);
   111     mThumbnailManager->setMode(ThumbnailManager::Default);
   107     mThumbnailManager->setQualityPreference(ThumbnailManager::OptimizeForQuality);
   112     mThumbnailManager->setQualityPreference(ThumbnailManager::OptimizeForQuality);
   108     mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailMedium);
   113     mThumbnailManager->setThumbnailSize(ThumbnailManager::ThumbnailLarge);
   109    
   114    
   110     connect(mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void*, int, int)),
   115     connect(mThumbnailManager, SIGNAL(thumbnailReady(QPixmap, void*, int, int)),
   111                this, SLOT(thumbnailReady(QPixmap, void*, int, int)));
   116                this, SLOT(thumbnailReady(QPixmap, void*, int, int)));
   112 }
   117 }
   113 
   118 
   121     delete mGroupContact;
   126     delete mGroupContact;
   122     mGroupContact = 0;
   127     mGroupContact = 0;
   123     
   128     
   124     delete mModel;
   129     delete mModel;
   125     mModel = 0;
   130     mModel = 0;
       
   131     
       
   132     delete mFetchView;
       
   133     mFetchView = 0;
       
   134     
       
   135     delete mAvatar;
       
   136     mAvatar = NULL;
   126 }
   137 }
   127 
   138 
   128 void CntGroupMemberView::setOrientation(Qt::Orientation orientation)
   139 void CntGroupMemberView::setOrientation(Qt::Orientation orientation)
   129 {
   140 {
   130     if (orientation == Qt::Vertical) 
   141     if (orientation == Qt::Vertical) 
   149         }
   160         }
   150         
   161         
   151     QVariant contact = aArgs.value( ESelectedContact );
   162     QVariant contact = aArgs.value( ESelectedContact );
   152     mGroupContact = new QContact( contact.value<QContact>() );
   163     mGroupContact = new QContact( contact.value<QContact>() );
   153     
   164     
       
   165     if (aArgs.value(ECustomParam).toInt() == imageEditorView)
       
   166         {    
       
   167             mIsPreviousImageEditorView = true;   
       
   168         }
       
   169     
   154     HbMainWindow* window = mView->mainWindow();
   170     HbMainWindow* window = mView->mainWindow();
   155     if ( window )
   171     if ( window )
   156     {
   172     {
   157         connect(window, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(setOrientation(Qt::Orientation)));
   173         connect(window, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(setOrientation(Qt::Orientation)));
   158         setOrientation(window->orientation());
   174         setOrientation(window->orientation());
   164     QList<QContactAvatar> details = mGroupContact->details<QContactAvatar>();
   180     QList<QContactAvatar> details = mGroupContact->details<QContactAvatar>();
   165     for (int i = 0;i < details.count();i++)
   181     for (int i = 0;i < details.count();i++)
   166     {
   182     {
   167         if (details.at(i).imageUrl().isValid())
   183         if (details.at(i).imageUrl().isValid())
   168             {
   184             {
   169             mThumbnailManager->getThumbnail(details.at(i).imageUrl().toString());
   185             mAvatar = new QContactAvatar(details.at(i));
       
   186             mThumbnailManager->getThumbnail(mAvatar->imageUrl().toString());
   170             break;
   187             break;
   171             }
   188             }
   172     }
   189     }
   173     
   190     
   174     // create list & model
   191     // create list & model
   175     mListView->setFrictionEnabled(true);
   192     mListView->setFrictionEnabled(true);
   176     mListView->setScrollingStyle(HbScrollArea::PanOrFlick);
   193     mListView->setScrollingStyle(HbScrollArea::PanWithFollowOn);
       
   194     mListView->verticalScrollBar()->setInteractive(true);
   177     mListView->setUniformItemSizes(true);
   195     mListView->setUniformItemSizes(true);
   178     mListView->listItemPrototype()->setGraphicsSize(HbListViewItem::Thumbnail);
   196     mListView->listItemPrototype()->setGraphicsSize(HbListViewItem::Thumbnail);
       
   197     HbIndexFeedback *indexFeedback = new HbIndexFeedback(mView);
       
   198     indexFeedback->setIndexFeedbackPolicy(HbIndexFeedback::IndexFeedbackSingleCharacter);
       
   199     indexFeedback->setItemView(mListView);
   179 
   200 
   180     HbFrameBackground frame;
   201     HbFrameBackground frame;
   181     frame.setFrameGraphicsName("qtg_fr_list_normal");
   202     frame.setFrameGraphicsName("qtg_fr_list_normal");
   182     frame.setFrameType(HbFrameDrawer::NinePieces);
   203     frame.setFrameType(HbFrameDrawer::NinePieces);
   183     mListView->itemPrototypes().first()->setDefaultFrame(frame);
   204     mListView->itemPrototypes().first()->setDefaultFrame(frame);
   199 
   220 
   200     QList<QContactSortOrder> sortOrders;
   221     QList<QContactSortOrder> sortOrders;
   201     sortOrders.append(sortOrderFirstName);
   222     sortOrders.append(sortOrderFirstName);
   202     sortOrders.append(sortOrderLastName);
   223     sortOrders.append(sortOrderLastName);
   203 
   224 
   204     mModel = new MobCntModel(mViewManager->contactManager(SYMBIAN_BACKEND), rFilter, sortOrders, false);
   225     mModel = new MobCntModel(getContactManager(), rFilter, sortOrders, false);
   205     mListView->setModel(mModel);
   226     mListView->setModel(mModel);
   206     
   227     
   207     if (aArgs.value(ESelectedAction).toString() == "save")
   228     if (aArgs.value(ESelectedAction).toString() == "save")
   208     {
   229     {
   209         QString name = mViewManager->contactManager(SYMBIAN_BACKEND)->synthesizedDisplayLabel(*mGroupContact);
   230         QString name = getContactManager()->synthesizedDisplayLabel(*mGroupContact);
   210         HbNotificationDialog::launchDialog(hbTrId("Group \"%1\" saved").arg(name));
   231         HbNotificationDialog::launchDialog(hbTrId("Group \"%1\" saved").arg(name));
   211     }
   232     }
       
   233     
       
   234     mFetchView = new CntFetchContacts(mViewManager->contactManager( SYMBIAN_BACKEND ));
       
   235     connect(mFetchView, SIGNAL(clicked()), this, SLOT(handleManageMembers()));
   212 }
   236 }
   213 
   237 
   214 void CntGroupMemberView::deactivate()
   238 void CntGroupMemberView::deactivate()
   215 {
   239 {
   216     
   240     
   217 }
   241 }
   218 
   242 
   219 void CntGroupMemberView::showPreviousView()
   243 void CntGroupMemberView::showPreviousView()
   220 {
   244 {
       
   245     //save an avatar
       
   246     if (mIsPreviousImageEditorView)
       
   247     {
       
   248         if (!mAvatar->imageUrl().isEmpty())
       
   249         {
       
   250             mViewManager->contactManager( SYMBIAN_BACKEND )->saveContact(mGroupContact);
       
   251         }
       
   252     }
       
   253     
   221     CntViewParameters viewParameters;
   254     CntViewParameters viewParameters;
   222     mViewManager->back(viewParameters);
   255     mViewManager->back(viewParameters);
   223 }
   256 }
   224 
   257 
   225 void CntGroupMemberView::openGroupActions()
   258 void CntGroupMemberView::openGroupActions()
   232     mViewManager->changeView(viewParameters);
   265     mViewManager->changeView(viewParameters);
   233 }
   266 }
   234 
   267 
   235 void CntGroupMemberView::manageMembers()
   268 void CntGroupMemberView::manageMembers()
   236 {
   269 {
   237     // save the group here
   270     QContactRelationshipFilter membersFilter;
   238     CntGroupSelectionPopup *groupSelectionPopup = 
   271     membersFilter.setRelationshipType(QContactRelationship::HasMember);
   239         new CntGroupSelectionPopup(mViewManager->contactManager(SYMBIAN_BACKEND), mGroupContact);
   272     membersFilter.setRelatedContactRole(QContactRelationshipFilter::First);
   240     mListView->setModel(0);
   273     membersFilter.setRelatedContactId(mGroupContact->id());   
   241     groupSelectionPopup->populateListOfContact();
   274     mOriginalGroupMembers = getContactManager()->contactIds(membersFilter);
   242     
   275     
   243     HbAction* action = groupSelectionPopup->exec();
   276     QSet<QContactLocalId> contactsSet = mOriginalGroupMembers.toSet();
   244     if (action == groupSelectionPopup->primaryAction())
   277     QContactName groupContactName = mGroupContact->detail( QContactName::DefinitionName );
   245     {
   278     QString groupName(groupContactName.value( QContactName::FieldCustomLabel ));
   246         groupSelectionPopup->saveOldGroup();
   279     mFetchView->setDetails(HbParameterLengthLimiter(hbTrId("txt_phob_subtitle_1_group")).arg(groupName),
   247     }
   280                            hbTrId("Save"));
   248     delete groupSelectionPopup;
   281     mFetchView->displayContacts(CntFetchContacts::popup,
   249     mListView->setModel(mModel);
   282                                 HbAbstractItemView::MultiSelection,
       
   283                                 contactsSet);
       
   284 }
       
   285 
       
   286 void CntGroupMemberView::handleManageMembers()
       
   287 {
       
   288     QSet<QContactLocalId> selectedContacts = mFetchView->getSelectedContacts();
       
   289     
       
   290     if (mFetchView->wasCanceled()) {
       
   291         delete mFetchView;
       
   292         mFetchView = 0;
       
   293         return;
       
   294     }
       
   295 
       
   296     QList<QContactRelationship> removedMemberships;
       
   297     QList<QContactRelationship> addedMemberships;
       
   298 
       
   299     QSet<QContactLocalId> removedMembers = mOriginalGroupMembers.toSet() - selectedContacts;
       
   300     
       
   301     // TODO Notice the duplication with these loops. Refactor to use one only
       
   302     foreach (QContactLocalId id, removedMembers) {
       
   303         QContact contact = getContactManager()->contact(id);
       
   304 
       
   305         // new contact added to the group
       
   306         QContactRelationship membership;
       
   307         membership.setRelationshipType(QContactRelationship::HasMember);
       
   308         membership.setFirst(mGroupContact->id());
       
   309         membership.setSecond(contact.id());
       
   310         removedMemberships.append(membership);
       
   311     }
       
   312 
       
   313     QSet<QContactLocalId> addedMembers = selectedContacts - mOriginalGroupMembers.toSet();
       
   314     foreach (QContactLocalId id, addedMembers) {
       
   315         QContact contact = getContactManager()->contact(id);
       
   316 
       
   317         // new contact added to the group
       
   318         QContactRelationship membership;
       
   319         membership.setRelationshipType(QContactRelationship::HasMember);
       
   320         membership.setFirst(mGroupContact->id());
       
   321         membership.setSecond(contact.id());
       
   322         addedMemberships.append(membership);
       
   323     }
       
   324         
       
   325     if (!addedMemberships.isEmpty()) {
       
   326         getContactManager()->saveRelationships(&addedMemberships);
       
   327     }
       
   328     
       
   329     if (!removedMemberships.isEmpty()) {
       
   330         getContactManager()->removeRelationships(removedMemberships);
       
   331     }
   250 }
   332 }
   251 
   333 
   252 void CntGroupMemberView::editGroup()
   334 void CntGroupMemberView::editGroup()
   253 {
   335 {
   254     CntViewParameters viewParameters;
   336     CntViewParameters viewParameters;
   259     mViewManager->changeView(viewParameters);
   341     mViewManager->changeView(viewParameters);
   260 }
   342 }
   261 
   343 
   262 void CntGroupMemberView::deleteGroup()
   344 void CntGroupMemberView::deleteGroup()
   263 {
   345 {
   264     // the delete command
   346     QString groupName = mGroupContact->displayLabel();
   265      HbDialog popup;
   347     HbLabel *headingLabel = new HbLabel();
   266 
   348     headingLabel->setPlainText(HbParameterLengthLimiter(hbTrId("txt_phob_dialog_delete_1_group")).arg(groupName));
   267      // disable dismissing & timout
   349     
   268      popup.setDismissPolicy(HbDialog::NoDismiss);
   350     HbMessageBox::question(hbTrId("txt_phob_dialog_only_group_will_be_removed_contac"), this, SLOT(handleDeleteGroup(HbAction*)),
   269      popup.setTimeout(HbDialog::NoTimeout);
   351             hbTrId("txt_phob_button_delete"), hbTrId("txt_common_button_cancel"), headingLabel);
   270      
   352 }
   271      QString groupName = mGroupContact->displayLabel();
   353 
   272      HbLabel *headingLabel = new HbLabel(hbTrId("Delete %1 group?").arg(groupName), &popup);
   354 void CntGroupMemberView::handleDeleteGroup(HbAction *action)
   273      headingLabel->setFontSpec(HbFontSpec(HbFontSpec::Primary));
   355 {
   274      popup.setHeadingWidget(headingLabel);
   356     HbDialog *popup = static_cast<HbDialog*>(sender());
   275 
   357     
   276      // Set a label widget as content widget in the dialog
   358     if (popup && action == popup->actions().first())
   277      HbLabel *label = new HbLabel(&popup);
   359     {
   278      label->setPlainText("Only group will be removed, contacts can be found from All contacts list");
   360         getContactManager()->removeContact(mGroupContact->localId());
   279      label->setTextWrapping(Hb::TextWordWrap);
   361         showPreviousView();
   280      label->setElideMode(Qt::ElideNone);
   362     }
   281      label->setFontSpec(HbFontSpec(HbFontSpec::Secondary));
       
   282      popup.setContentWidget(label);
       
   283      
       
   284      // Sets the primary action and secondary action
       
   285      popup.setPrimaryAction(new HbAction(hbTrId("txt_phob_button_delete"),&popup));
       
   286      popup.setSecondaryAction(new HbAction(hbTrId("txt_common_button_cancel"),&popup));
       
   287 
       
   288      HbAction* action = popup.exec();
       
   289      if (action == popup.primaryAction())
       
   290      {
       
   291          mViewManager->contactManager(SYMBIAN_BACKEND)->removeContact(mGroupContact->localId());
       
   292          showPreviousView();
       
   293      }
       
   294 }
   363 }
   295 
   364 
   296 /*!
   365 /*!
   297 Called when a list item is longpressed
   366 Called when a list item is longpressed
   298 */
   367 */
   299 void CntGroupMemberView::showContextMenu(HbAbstractViewItem *aItem, const QPointF &aCoords)
   368 void CntGroupMemberView::showContextMenu(HbAbstractViewItem *aItem, const QPointF &aCoords)
   300 {
   369 {
       
   370     QVariant data( aItem->modelIndex().row() );
       
   371    
   301     QModelIndex index = aItem->modelIndex();
   372     QModelIndex index = aItem->modelIndex();
   302 
   373 
   303     HbMenu *menu = new HbMenu();
   374     HbMenu *menu = new HbMenu();
       
   375     menu->setAttribute(Qt::WA_DeleteOnClose);
       
   376     menu->setPreferredPos( aCoords );
       
   377     
   304     HbAction *removeFromGroupAction = 0;
   378     HbAction *removeFromGroupAction = 0;
   305     HbAction *openContactAction = 0;
   379     HbAction *openContactAction = 0;
   306     HbAction *editContactAction = 0;
   380     HbAction *editContactAction = 0;
   307 
   381 
   308     openContactAction = menu->addAction(hbTrId("txt_common_menu_open"));
   382     openContactAction = menu->addAction(hbTrId("txt_common_menu_open"));
   309     editContactAction = menu->addAction(hbTrId("txt_common_menu_edit"));
   383     editContactAction = menu->addAction(hbTrId("txt_common_menu_edit"));
   310     removeFromGroupAction = menu->addAction(hbTrId("txt_phob_menu_remove_from_group"));
   384     removeFromGroupAction = menu->addAction(hbTrId("txt_phob_menu_remove_from_group"));
   311     
   385     
   312 
   386     openContactAction->setData( data );
   313     HbAction *selectedAction = menu->exec(aCoords);
   387     editContactAction->setData( data );
   314 
   388     removeFromGroupAction->setData( data );
   315     if (selectedAction)
   389 
   316     {
   390     menu->open(this, SLOT(handleMenu(HbAction*)));
   317         if (selectedAction == removeFromGroupAction)
   391 }
       
   392 
       
   393 void CntGroupMemberView::handleMenu(HbAction* action)
       
   394 {
       
   395     int row = action->data().toInt();
       
   396     HbMenu *menuItem = static_cast<HbMenu*>(sender());
       
   397     QModelIndex index = mModel->index(row, 0);
       
   398     
       
   399     int id = index.data(Qt::UserRole).toInt();
       
   400     
       
   401     if ( action == menuItem->actions().first() )
   318         {
   402         {
   319             removeFromGroup(index);
   403         showContactView(index);
   320         }
   404         }
   321         else if (selectedAction == editContactAction)
   405     else if (action == menuItem->actions().at(1))
   322         {
   406         {
   323             editContact(index);
   407         editContact(index);
   324         }
   408         }
   325         else if (selectedAction == openContactAction)
   409     else if (action == menuItem->actions().at(2))
   326         {
   410         {
   327             showContactView(index);
   411         removeFromGroup(index);
   328         }
   412         }
   329     }
   413 }
   330     menu->deleteLater();
   414 
   331 }
       
   332 
   415 
   333 /*!
   416 /*!
   334 Called after user clicked on the listview.
   417 Called after user clicked on the listview.
   335 */
   418 */
   336 void CntGroupMemberView::showContactView(const QModelIndex &index)
   419 void CntGroupMemberView::showContactView(const QModelIndex &index)
   354     QContact selectedContact = mModel->contact(index);
   437     QContact selectedContact = mModel->contact(index);
   355     QContactRelationship relationship;
   438     QContactRelationship relationship;
   356     relationship.setRelationshipType(QContactRelationship::HasMember);
   439     relationship.setRelationshipType(QContactRelationship::HasMember);
   357     relationship.setFirst(mGroupContact->id());
   440     relationship.setFirst(mGroupContact->id());
   358     relationship.setSecond(selectedContact.id());
   441     relationship.setSecond(selectedContact.id());
   359     mViewManager->contactManager(SYMBIAN_BACKEND)->removeRelationship(relationship);
   442     getContactManager()->removeRelationship(relationship);
   360 }
   443 }
   361 
   444 
   362 void CntGroupMemberView::editContact(const QModelIndex &index)
   445 void CntGroupMemberView::editContact(const QModelIndex &index)
   363 {
   446 {
   364     CntViewParameters viewParameters;
   447     CntViewParameters viewParameters;
   395     viewParameters.insert(EViewId, imageEditorView );
   478     viewParameters.insert(EViewId, imageEditorView );
   396         
   479         
   397     mViewManager->changeView( viewParameters );
   480     mViewManager->changeView( viewParameters );
   398 }
   481 }
   399 
   482 
       
   483 QContactManager* CntGroupMemberView::getContactManager()
       
   484 {
       
   485     if (!mViewManager) return NULL;
       
   486 
       
   487     return mViewManager->contactManager(SYMBIAN_BACKEND);
       
   488 }
       
   489 
       
   490 /*!
       
   491 Draw the image specific content menu
       
   492 */
       
   493 void CntGroupMemberView::drawImageMenu(const QPointF &aCoords)
       
   494 {
       
   495     HbMenu *menu = new HbMenu();
       
   496     HbAction *changeImageAction = menu->addAction(hbTrId("txt_phob_menu_change_picture"));
       
   497     HbAction *removeAction = menu->addAction(hbTrId("txt_phob_menu_remove_image"));
       
   498     menu->setPreferredPos(aCoords);
       
   499     menu->open(this, SLOT(handleImageMenu(HbAction*)));
       
   500 }
       
   501 
       
   502 void CntGroupMemberView::handleImageMenu(HbAction* action)
       
   503 {
       
   504     HbMenu *menuItem = static_cast<HbMenu*>(sender());
       
   505     if ( action == menuItem->actions().first() ) {
       
   506         changeImage();
       
   507     }
       
   508     else if (action == menuItem->actions().at(1)) {
       
   509         removeImage();
       
   510     }
       
   511 }
       
   512 
       
   513 void CntGroupMemberView::changeImage()
       
   514 {
       
   515     CntViewParameters viewParameters;
       
   516     viewParameters.insert(EViewId, imageEditorView);
       
   517     QVariant var;
       
   518     var.setValue(*mGroupContact);
       
   519     viewParameters.insert(ESelectedContact, var);
       
   520     mViewManager->changeView(viewParameters);
       
   521 }
       
   522 
       
   523 void CntGroupMemberView::removeImage()
       
   524 {
       
   525 if (mAvatar) 
       
   526     {
       
   527     if (!mAvatar->imageUrl().isEmpty())
       
   528             {
       
   529                 mGroupContact->removeDetail(mAvatar);
       
   530                 // Check if image removable.
       
   531                 CntImageUtility imageUtility;
       
   532                 if(imageUtility.isImageRemovable(mAvatar->imageUrl().toString()))
       
   533                 {
       
   534                     imageUtility.removeImage(mAvatar->imageUrl().toString());
       
   535                 }
       
   536                 mViewManager->contactManager( SYMBIAN_BACKEND )->saveContact(mGroupContact);
       
   537                 mHeadingItem->setIcon(HbIcon("qtg_large_avatar"));
       
   538                 
       
   539             }
       
   540     }
       
   541 }
       
   542 
   400 
   543 
   401 
   544 
   402 // end of file
   545 // end of file