diff -r 2a11b5b00470 -r fd64c38c277d phonebookui/pbkcommonui/src/cntactionmenubuilder.cpp --- a/phonebookui/pbkcommonui/src/cntactionmenubuilder.cpp Fri May 14 15:42:23 2010 +0300 +++ b/phonebookui/pbkcommonui/src/cntactionmenubuilder.cpp Thu May 27 12:45:19 2010 +0300 @@ -51,12 +51,12 @@ actions << d.actionName(); } - if ( actions.contains("call", Qt::CaseInsensitive) ) + if ( actions.contains("call", Qt::CaseInsensitive) && isSupportedDetails("call", aContact)) { createCallAction( *menu, aContact ); } - if ( actions.contains("message", Qt::CaseInsensitive) ) + if ( actions.contains("message", Qt::CaseInsensitive) && isSupportedDetails("message", aContact) ) { createMessageAction( *menu, aContact ); } @@ -80,8 +80,9 @@ return menu; } -HbMenu* CntActionMenuBuilder::actionMenu( QContact& aContact ) +HbMenu* CntActionMenuBuilder::actionMenu( QContact& aContact, QContactLocalId myCardId) { + iMyCardId = myCardId; mContact = new QContact( aContact ); return buildActionMenu( aContact ); } @@ -143,5 +144,29 @@ aMenu.addAction(hbTrId("txt_phob_menu_send_message"), this, SLOT(emitSmsContact())); } + +bool CntActionMenuBuilder::isSupportedDetails( const QString &actionName, const QContact &contact ) + { + QList actionDescriptors = QContactAction::actionDescriptors(actionName, "symbian"); + if (actionDescriptors.isEmpty()) + { + return false; + } + + QContactAction* contactAction = QContactAction::action(actionDescriptors.first()); + QList details = contactAction->supportedDetails(contact); + + delete contactAction; + + for (int i = 0; i < details.count(); i++) + { + if (contact.details().contains(details[i])) + { + return true; + } + } + + return false; + } // End of File