messagingapp/msgui/msguiutils/src/msgservicelaunchutil.cpp
changeset 73 ecf6a73a9186
child 76 60a8a215b0ec
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/msguiutils/src/msgservicelaunchutil.cpp	Tue Oct 05 13:58:47 2010 +0530
@@ -0,0 +1,194 @@
+/*
+ * 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:Message service launch utility
+ *
+ */
+
+// SYSTEM INCLUDES
+#include <xqaiwrequest.h>
+#include <xqrequestinfo.h>
+#include <xqappmgr.h>
+#include <hbglobal.h>
+#include <xqconversions.h>
+
+#include "msgservicelaunchutil.h"
+#include "msgcontactsutil.h"
+#include "msgservicelaunchutilprivate.h"
+#include "debugtraces.h"
+
+// LOCAL CONSTANTS
+#define LOC_TITLE   hbTrId("txt_messaging_title_messaging")
+const QString VCARD_MIMETYPE("text/X-vCard");
+
+//--------------------------------------------------------------
+// MsgServiceLaunchUtil::MsgServiceLaunchUtil
+// Constructor
+//--------------------------------------------------------------
+MsgServiceLaunchUtil::MsgServiceLaunchUtil(QObject* parent):
+QObject(parent)
+{
+    //nothing required
+}
+
+//--------------------------------------------------------------
+// MsgServiceLaunchUtil::~MsgServiceLaunchUtil
+// Destructor
+//--------------------------------------------------------------
+MsgServiceLaunchUtil::~MsgServiceLaunchUtil()
+{
+    //nothing required
+}
+
+//---------------------------------------------------------------
+// MsgServiceLaunchUtil::launchContentViewer
+// @see header file
+//---------------------------------------------------------------
+void MsgServiceLaunchUtil::launchContentViewer(
+        const QString &mimeType, 
+        const QString &filePath)
+{
+    if (mimeType.contains(VCARD_MIMETYPE, Qt::CaseInsensitive)) {
+        MsgContactsUtil::launchVCardViewer(filePath);
+    }
+    else {
+        MsgServiceLaunchUtil::launchViaSharableFile(filePath);
+    }
+}
+
+//---------------------------------------------------------------
+// MsgServiceLaunchUtil::launchContentViewer
+// @see header file
+//---------------------------------------------------------------
+void MsgServiceLaunchUtil::launchContentViewer(
+        int messageId)
+{
+    // get the mimeType and filepath from messageId
+    CMsgServiceLaunchUtilPrivate* util_p = 0;
+        
+    TRAPD(error, util_p = CMsgServiceLaunchUtilPrivate::NewL());
+    
+    if(error == KErrNone)
+        {
+        HBufC* fileName = 0;
+        fileName = util_p->GetMessagePath(messageId, error);
+        
+        if(error == KErrNone)
+            {
+            QString attachmentFName = XQConversions::s60DescToQString(
+                    fileName->Des());
+            QString mimeType = XQConversions::s60Desc8ToQString(
+                    util_p->GetMimeType()->Des());
+            
+            launchContentViewer(mimeType, attachmentFName);
+                
+            }
+        if (fileName){
+            delete fileName;
+        }
+        }
+    if(util_p){
+        delete util_p; 
+    }    
+}
+
+//---------------------------------------------------------------
+// MsgServiceLaunchUtil::launchViaSharableFile
+// @see header file
+//---------------------------------------------------------------
+void MsgServiceLaunchUtil::launchViaSharableFile(
+        const QString &filePath)
+{
+    XQSharableFile sf;
+    XQAiwRequest* request = 0;
+
+    if (!sf.open(filePath)) {
+        return;
+    }
+
+    // Get handlers
+    XQApplicationManager appManager;
+    QList<XQAiwInterfaceDescriptor> fileHandlers = appManager.list(sf);
+    if (fileHandlers.count() > 0) {
+        XQAiwInterfaceDescriptor d = fileHandlers.first();
+        request = appManager.create(sf, d);
+
+        if (!request) {
+            sf.close();
+            return;
+        }
+    }
+    else {
+        sf.close();
+        return;
+    }
+
+    // Result handlers
+    connect(request, 
+            SIGNAL(requestOk(const QVariant&)), 
+            this, 
+            SLOT(handleOk(const QVariant&)),
+            Qt::UniqueConnection);
+    connect(request, 
+            SIGNAL(requestError(int,const QString&)), 
+            this,
+            SLOT(handleError(int,const QString&)), 
+            Qt::UniqueConnection);
+
+    request->setEmbedded(true);
+    request->setSynchronous(false);
+
+    // Fill args
+    QList<QVariant> args;
+    args << qVariantFromValue(sf);
+    request->setArguments(args);
+
+    // Fill headers
+    QString key("WindowTitle");
+    QVariant value(QString(LOC_TITLE));
+    XQRequestInfo info;
+    info.setInfo(key, value);
+    request->setInfo(info);
+
+    request->send();
+
+    // Cleanup
+    sf.close();
+    delete request;
+}
+
+//---------------------------------------------------------------
+// MsgServiceLaunchUtil::handleOk
+// @see header file
+//---------------------------------------------------------------
+void MsgServiceLaunchUtil::handleOk(
+        const QVariant& result)
+{
+   //do nothing
+    Q_UNUSED(result)
+}
+
+//---------------------------------------------------------------
+// MsgServiceLaunchUtil::handleError
+// @see header file
+//---------------------------------------------------------------
+void MsgServiceLaunchUtil::handleError(
+        int errorCode, 
+        const QString& errorMessage)
+{
+    //do nothing
+    Q_UNUSED(errorCode)
+    Q_UNUSED(errorMessage)
+}
+
+//eof