--- 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<QContactActionDescriptor> actionDescriptors = QContactAction::actionDescriptors(actionName, "symbian");
+ if (actionDescriptors.isEmpty())
+ {
+ return false;
+ }
+
+ QContactAction* contactAction = QContactAction::action(actionDescriptors.first());
+ QList<QContactDetail> 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