diff -r de1630741fbe -r 2a11b5b00470 phonebookui/pbkcommonui/src/cntfavoritesmemberview.cpp --- a/phonebookui/pbkcommonui/src/cntfavoritesmemberview.cpp Mon May 03 12:24:20 2010 +0300 +++ b/phonebookui/pbkcommonui/src/cntfavoritesmemberview.cpp Fri May 14 15:42:23 2010 +0300 @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include #include #include @@ -92,8 +94,15 @@ mFavoriteListView = static_cast (mDocumentLoader.findWidget("listView")); mFavoriteListView->setUniformItemSizes(true); + mFavoriteListView->setFrictionEnabled(true); + mFavoriteListView->setScrollingStyle(HbScrollArea::PanWithFollowOn); + mFavoriteListView->verticalScrollBar()->setInteractive(true); connect(mFavoriteListView, SIGNAL(longPressed(HbAbstractViewItem *, const QPointF &)), this, SLOT(onLongPressed(HbAbstractViewItem *, const QPointF &))); + + HbIndexFeedback *indexFeedback = new HbIndexFeedback(mView); + indexFeedback->setIndexFeedbackPolicy(HbIndexFeedback::IndexFeedbackSingleCharacter); + indexFeedback->setItemView(mFavoriteListView); HbFrameBackground frame; frame.setFrameGraphicsName("qtg_fr_list_normal"); @@ -141,17 +150,20 @@ { // call a dialog to display the contacts CntGroupSelectionPopup *groupSelectionPopup = new CntGroupSelectionPopup(mViewManager->contactManager(SYMBIAN_BACKEND), mContact); - mFavoriteListView->setModel(0); + groupSelectionPopup->populateListOfContact(); - HbAction* action = groupSelectionPopup->exec(); - if (action == groupSelectionPopup->primaryAction()) + groupSelectionPopup->open(this, SLOT(handleManageFavorites(HbAction*))); +} + +void CntFavoritesMemberView::handleManageFavorites(HbAction *action) +{ + CntGroupSelectionPopup *groupSelectionPopup = static_cast(sender()); + + if (groupSelectionPopup && action == groupSelectionPopup->actions().first()) { groupSelectionPopup->saveOldGroup(); } - delete groupSelectionPopup; - - mFavoriteListView->setModel(mModel); } @@ -160,11 +172,15 @@ */ void CntFavoritesMemberView::onLongPressed (HbAbstractViewItem *aItem, const QPointF &aCoords) { + QVariant data( aItem->modelIndex().row() ); + QModelIndex index = aItem->modelIndex(); QVariant variant = index.data(Qt::UserRole+1); const QMap map = variant.toMap(); HbMenu *menu = new HbMenu(); + menu->setAttribute(Qt::WA_DeleteOnClose); + menu->setPreferredPos( aCoords ); HbAction *openContactAction = 0; HbAction *editContactAction = 0; @@ -177,30 +193,40 @@ editContactAction = menu->addAction(hbTrId("txt_common_menu_edit")); removeFromFavoritesAction = menu->addAction(hbTrId("txt_phob_menu_remove_from_favorites")); sendToHsAction = menu->addAction(hbTrId("Send to HS")); + + openContactAction->setData( data ); + editContactAction->setData( data ); + removeFromFavoritesAction->setData( data ); + sendToHsAction->setData( data ); - HbAction *selectedAction = menu->exec(aCoords); + menu->open(this, SLOT(handleMenu(HbAction*))); +} - if (selectedAction) +void CntFavoritesMemberView::handleMenu(HbAction* action) { - if (selectedAction == openContactAction) + int row = action->data().toInt(); + HbMenu *menuItem = static_cast(sender()); + QModelIndex index = mModel->index(row, 0); + + int id = index.data(Qt::UserRole).toInt(); + + if ( action == menuItem->actions().first() ) { openContact(index); } - else if (selectedAction == editContactAction) + else if (action == menuItem->actions().at(1)) { editContact(index); } - else if (selectedAction == removeFromFavoritesAction) - { - removeFromFavorites(index); - } - else if (selectedAction == sendToHsAction) + else if (action == menuItem->actions().at(2)) { -// sendToHs(index); + removeFromFavorites(index); } + else if (action == menuItem->actions().at(3)) + { + // sendToHs(index); + } } - menu->deleteLater(); -} void CntFavoritesMemberView::openContact(const QModelIndex &index) { @@ -236,11 +262,11 @@ void CntFavoritesMemberView::removeFromFavorites(const QModelIndex &index) { // get contact id using index - QContact selectedContact = mModel->contact(index); - QContactRelationship relationship; - relationship.setRelationshipType(QContactRelationship::HasMember); - relationship.setFirst(mContact->id()); - relationship.setSecond(selectedContact.id()); - mViewManager->contactManager(SYMBIAN_BACKEND)->removeRelationship(relationship); + QContact selectedContact = mModel->contact(index); + QContactRelationship relationship; + relationship.setRelationshipType(QContactRelationship::HasMember); + relationship.setFirst(mContact->id()); + relationship.setSecond(selectedContact.id()); + mViewManager->contactManager(SYMBIAN_BACKEND)->removeRelationship(relationship); }