phonebookui/pbkcommonui/src/cntgroupmemberview.cpp
changeset 47 7cbcb2896f0e
parent 46 efe85016a067
child 50 77bc263e1626
child 59 a642906a277a
equal deleted inserted replaced
46:efe85016a067 47:7cbcb2896f0e
    64     mImageLabel(NULL), 
    64     mImageLabel(NULL), 
    65     mListView(NULL),
    65     mListView(NULL),
    66     mFetchView(NULL),
    66     mFetchView(NULL),
    67     mAvatar(NULL)
    67     mAvatar(NULL)
    68 {
    68 {
    69 
       
    70     mDocument = new CntDocumentLoader;
    69     mDocument = new CntDocumentLoader;
    71     
    70     
    72     bool ok;
    71     bool ok;
    73     mDocument->load( CNT_GROUPMEMBERVIEW_XML, &ok );
    72     mDocument->load( CNT_GROUPMEMBERVIEW_XML, &ok );
    74     if ( !ok ){
    73     if ( !ok ){
   200     frame.setFrameType(HbFrameDrawer::NinePieces);
   199     frame.setFrameType(HbFrameDrawer::NinePieces);
   201     mListView->itemPrototypes().first()->setDefaultFrame(frame);
   200     mListView->itemPrototypes().first()->setDefaultFrame(frame);
   202     
   201     
   203     createModel();
   202     createModel();
   204     
   203     
   205     if (mArgs.value(ESelectedAction).toString() == "save")
   204     if (mArgs.value(ESelectedAction).toString() == CNT_SAVE_ACTION)
   206     {
   205     {
   207         QString name = getContactManager()->synthesizedDisplayLabel(*mGroupContact);
   206         QString name = getContactManager()->synthesizedDisplayLabel(*mGroupContact);
   208         HbNotificationDialog::launchDialog(HbParameterLengthLimiter(hbTrId("txt_phob_dpophead_new_group_1_created").arg(name)));
   207         HbNotificationDialog::launchDialog(HbParameterLengthLimiter(hbTrId("txt_phob_dpophead_new_group_1_created").arg(name)));
   209     }
   208     }
   210     
   209     
   211     mFetchView = new CntFetchContacts(mViewManager->contactManager( SYMBIAN_BACKEND ));
   210     mFetchView = new CntFetchContacts(*mViewManager->contactManager( SYMBIAN_BACKEND ));
   212     connect(mFetchView, SIGNAL(clicked()), this, SLOT(handleManageMembers()));
   211     connect(mFetchView, SIGNAL(clicked()), this, SLOT(handleManageMembers()));
   213 }
   212 }
   214 
   213 
   215 void CntGroupMemberView::deactivate()
   214 void CntGroupMemberView::deactivate()
   216 {
   215 {
   221 {
   220 {
   222     //save the contact if avatar has been changed.
   221     //save the contact if avatar has been changed.
   223     QContact contact = mViewManager->contactManager( SYMBIAN_BACKEND )->contact(mGroupContact->localId());
   222     QContact contact = mViewManager->contactManager( SYMBIAN_BACKEND )->contact(mGroupContact->localId());
   224     if ( contact != *mGroupContact )
   223     if ( contact != *mGroupContact )
   225     {
   224     {
   226         QList<QContactAvatar> details = mGroupContact->details<QContactAvatar>();
   225         getContactManager()->saveContact(mGroupContact);
   227         for (int i = 0; i < details.count(); i++)
       
   228         {
       
   229             if (!details.at(i).imageUrl().isEmpty())
       
   230             {
       
   231                 getContactManager()->saveContact(mGroupContact);
       
   232                 break;
       
   233             }
       
   234         }
       
   235     }
   226     }
   236     mViewManager->back(mArgs);
   227     mViewManager->back(mArgs);
   237 }
   228 }
   238 
   229 
   239 void CntGroupMemberView::openGroupActions()
   230 void CntGroupMemberView::openGroupActions()
   257     QSet<QContactLocalId> contactsSet = mOriginalGroupMembers.toSet();
   248     QSet<QContactLocalId> contactsSet = mOriginalGroupMembers.toSet();
   258     QContactName groupContactName = mGroupContact->detail( QContactName::DefinitionName );
   249     QContactName groupContactName = mGroupContact->detail( QContactName::DefinitionName );
   259     QString groupName(groupContactName.value( QContactName::FieldCustomLabel ));
   250     QString groupName(groupContactName.value( QContactName::FieldCustomLabel ));
   260     
   251     
   261     if (!mFetchView) {
   252     if (!mFetchView) {
   262         mFetchView = new CntFetchContacts(mViewManager->contactManager( SYMBIAN_BACKEND ));
   253         mFetchView = new CntFetchContacts(*mViewManager->contactManager( SYMBIAN_BACKEND ));
   263         connect(mFetchView, SIGNAL(clicked()), this, SLOT(handleManageMembers()));
   254         connect(mFetchView, SIGNAL(clicked()), this, SLOT(handleManageMembers()));
   264     }
   255     }
   265     mFetchView->setDetails(HbParameterLengthLimiter(hbTrId("txt_phob_title_members_of_1_group")).arg(groupName),
   256     mFetchView->setDetails(HbParameterLengthLimiter(hbTrId("txt_phob_title_members_of_1_group")).arg(groupName),
   266                            hbTrId("txt_common_button_save"));
   257                            hbTrId("txt_common_button_save"));
   267     mFetchView->displayContacts(CntFetchContacts::popup,
   258     mFetchView->displayContacts(HbAbstractItemView::MultiSelection, contactsSet);
   268                                 HbAbstractItemView::MultiSelection,
       
   269                                 contactsSet);
       
   270 }
   259 }
   271 
   260 
   272 void CntGroupMemberView::handleManageMembers()
   261 void CntGroupMemberView::handleManageMembers()
   273 {
   262 {
   274     
   263     
   295     }
   284     }
   296     
   285     
   297     if (!removedMemberships.isEmpty()) {
   286     if (!removedMemberships.isEmpty()) {
   298         getContactManager()->removeRelationships(removedMemberships, &errors);
   287         getContactManager()->removeRelationships(removedMemberships, &errors);
   299     }
   288     }
   300     
       
   301     // delete the model and recreate it with relationship changes
       
   302     delete mModel;
       
   303     mModel = 0;
       
   304     
       
   305     createModel();
       
   306 }
   289 }
   307 
   290 
   308 void CntGroupMemberView::createModel()
   291 void CntGroupMemberView::createModel()
   309 {
   292 {
   310     QContactRelationshipFilter rFilter;
   293     QContactRelationshipFilter rFilter;
   311     rFilter.setRelationshipType(QContactRelationship::HasMember);
   294     rFilter.setRelationshipType(QContactRelationship::HasMember);
   312     rFilter.setRelatedContactRole(QContactRelationship::First);
   295     rFilter.setRelatedContactRole(QContactRelationship::First);
   313     rFilter.setRelatedContactId(mGroupContact->id());
   296     rFilter.setRelatedContactId(mGroupContact->id());
   314 
       
   315 
   297 
   316     mModel = new CntListModel(getContactManager(), rFilter, false);
   298     mModel = new CntListModel(getContactManager(), rFilter, false);
   317     mListView->setModel(mModel);
   299     mListView->setModel(mModel);
   318 }
   300 }
   319 
   301 
   419     QContactRelationship relationship;
   401     QContactRelationship relationship;
   420     relationship.setRelationshipType(QContactRelationship::HasMember);
   402     relationship.setRelationshipType(QContactRelationship::HasMember);
   421     relationship.setFirst(mGroupContact->id());
   403     relationship.setFirst(mGroupContact->id());
   422     relationship.setSecond(selectedContact.id());
   404     relationship.setSecond(selectedContact.id());
   423     getContactManager()->removeRelationship(relationship);
   405     getContactManager()->removeRelationship(relationship);
   424     
       
   425     // delete the model and recreate it with relationship changes
       
   426     delete mModel;
       
   427     mModel = NULL;
       
   428     
       
   429     createModel();
       
   430 }
   406 }
   431 
   407 
   432 void CntGroupMemberView::editContact(const QModelIndex &index)
   408 void CntGroupMemberView::editContact(const QModelIndex &index)
   433 {
   409 {
   434 
   410 
   510 {
   486 {
   511     if (mAvatar) 
   487     if (mAvatar) 
   512     {
   488     {
   513         if (!mAvatar->imageUrl().isEmpty())
   489         if (!mAvatar->imageUrl().isEmpty())
   514         {
   490         {
   515             mGroupContact->removeDetail(mAvatar);
   491             bool success = mGroupContact->removeDetail(mAvatar);
   516             // Check if image removable.
   492             // Check if image removable.
   517             CntImageUtility imageUtility;
   493             CntImageUtility imageUtility;
   518             if(imageUtility.isImageRemovable(mAvatar->imageUrl().toString()))
   494             if(imageUtility.isImageRemovable(mAvatar->imageUrl().toString()))
   519             {
   495             {
   520                 imageUtility.removeImage(mAvatar->imageUrl().toString());
   496                 imageUtility.removeImage(mAvatar->imageUrl().toString());
   521             }
   497             }
       
   498             mAvatar->setImageUrl(QUrl());
       
   499             mImageLabel->clear();
       
   500             mImageLabel->setIcon(HbIcon("qtg_large_add_group_picture"));
       
   501             mHeadingItem->setIcon(HbIcon("qtg_large_add_group_picture"));
   522             mViewManager->contactManager( SYMBIAN_BACKEND )->saveContact(mGroupContact);
   502             mViewManager->contactManager( SYMBIAN_BACKEND )->saveContact(mGroupContact);
   523             mHeadingItem->setIcon(HbIcon("qtg_large_avatar"));
   503        }
   524         }
       
   525     }
   504     }
   526 }
   505 }
   527 
   506 
   528 
   507 
   529 
   508