diff -r d4f567ce2e7c -r 5b6f26637ad3 phonebookengines/cntactions/src/cntemailaction.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookengines/cntactions/src/cntemailaction.cpp Tue Aug 31 15:05:21 2010 +0300 @@ -0,0 +1,123 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#include "cntemailaction.h" + +#include +#include +#include +#include +#include + +static const QString EMAIL_SEND_TO_KEY = "to"; + +//Action class +CntEmailAction::CntEmailAction() : + CntAction("email") +{ +} + +CntEmailAction::~CntEmailAction() +{ +} + +QContactFilter CntEmailAction::contactFilter(const QVariant& value) const +{ + Q_UNUSED(value); + + QContactDetailFilter emailFilter; + emailFilter.setDetailDefinitionName(QContactEmailAddress::DefinitionName); + + return emailFilter; +} + +bool CntEmailAction::isDetailSupported(const QContactDetail &detail, const QContact &/*contact*/) const +{ + return (detail.definitionName() == QContactEmailAddress::DefinitionName); +} + +QList CntEmailAction::supportedDetails(const QContact& contact) const +{ + return contact.details(QContactEmailAddress::DefinitionName); +} + +CntEmailAction* CntEmailAction::clone() const +{ + return new CntEmailAction(); +} + +void CntEmailAction::performAction() +{ + QVariant retValue; + delete m_request; + m_request = NULL; + m_request = m_AppManager.create(XQI_EMAIL_MESSAGE_SEND, "send(QVariant)", true); + + if (m_request) { + QMap map; + QStringList recipients; + QList data; + + //QContactType == TypeGroup + if (QContactType::TypeGroup == m_contact.type()) { + QStringList emails; + QVariant value = m_data.value("email"); + if (value.canConvert()) { + emails = value.toStringList(); + } + + if (!emails.isEmpty()) { + for (int i=0;isetArguments(data); + m_request->send(retValue); + emitResult(m_request->lastError(), retValue); + } + else { + emitResult(GeneralError, retValue); + } + } + //QContactType == TypeContact + // If detail exists use it. + else if (m_detail.definitionName() == QContactEmailAddress::DefinitionName) { + const QContactEmailAddress &email = static_cast(m_detail); + + recipients.append(email.emailAddress()); + map.insert(EMAIL_SEND_TO_KEY, recipients); + data.append(map); + + m_request->setArguments(data); + m_request->send(retValue); + emitResult(m_request->lastError(), retValue); + } + else { + emitResult(GeneralError, retValue); + } + } + + // Service not found. + else { + emitResult(GeneralError, retValue); + } +} + + +