phonebookengines/cntactions/src/cntemailaction.cpp
changeset 59 a642906a277a
parent 47 7cbcb2896f0e
--- a/phonebookengines/cntactions/src/cntemailaction.cpp	Tue Jul 06 14:05:47 2010 +0300
+++ b/phonebookengines/cntactions/src/cntemailaction.cpp	Wed Aug 18 09:39:00 2010 +0300
@@ -29,12 +29,10 @@
 CntEmailAction::CntEmailAction() : 
     CntAction("email")
 {
-    mRequest = m_AppManager.create(XQI_EMAIL_MESSAGE_SEND, "send(QVariant)", true);
 }
 
 CntEmailAction::~CntEmailAction()
 {
-    delete mRequest;
 }
 
 QContactFilter CntEmailAction::contactFilter(const QVariant& value) const
@@ -65,61 +63,58 @@
 void CntEmailAction::performAction()
 {
     QVariant retValue;
-
-    if (mRequest)
-    {
+    delete m_request;
+    m_request = NULL;
+    m_request = m_AppManager.create(XQI_EMAIL_MESSAGE_SEND, "send(QVariant)", true);
+    
+    if (m_request) {
         QMap<QString, QVariant> map;
         QStringList recipients;
         QList<QVariant> data;
 
+        //QContactType == TypeGroup
+        if (QContactType::TypeGroup == m_contact.type()) {
+            QStringList emails;
+            QVariant value = m_data.value("email");
+            if (value.canConvert<QStringList>()) {
+                emails = value.toStringList();
+            }
+            
+            if (!emails.isEmpty()) {
+                for (int i=0;i<emails.count();i++) {
+                    recipients.append(emails.at(i));
+                }
+                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);
+            }
+        }
+        //QContactType == TypeContact
         // If detail exists use it.
-        if (m_detail.definitionName() == QContactEmailAddress::DefinitionName)
-        {
+        else if (m_detail.definitionName() == QContactEmailAddress::DefinitionName) {
             const QContactEmailAddress &email = static_cast<const QContactEmailAddress &>(m_detail);
 
             recipients.append(email.emailAddress());
             map.insert(EMAIL_SEND_TO_KEY, recipients);
             data.append(map);
 
-            mRequest->setArguments(data);
-            mRequest->send(retValue);
-            emitResult(mRequest->lastError(), retValue);
+            m_request->setArguments(data);
+            m_request->send(retValue);
+            emitResult(m_request->lastError(), retValue);
         }
-
-        // If no detail, pick preferred.
-        // Todo : Temporary fix. Remove setting preferred when selection popup feature available.
-        else if (m_detail.isEmpty())
-        {
-            QContactDetail detail = m_contact.preferredDetail(m_actionName);
-            QContactEmailAddress email;
-
-            // If preferred is empty pick first email.
-            if(detail.isEmpty())
-            {
-                email = m_contact.detail<QContactEmailAddress>();
-            }
-            else
-            {
-                email = static_cast<QContactEmailAddress>(detail);
-            }
-
-            recipients.append(email.emailAddress());
-            map.insert(EMAIL_SEND_TO_KEY, recipients);
-            data.append(map);			
-
-            mRequest->setArguments(data);
-            mRequest->send(retValue);
-            emitResult(mRequest->lastError(), retValue);
-        }
-        else
-        {
+        else {
             emitResult(GeneralError, retValue);
         }
     }
 
     // Service not found.
-    else
-    {
+    else {
         emitResult(GeneralError, retValue);
     }
 }