diff -r e8a69c93c830 -r ecf6a73a9186 messagingapp/msgui/msguiutils/src/msgservicelaunchutil.cpp --- /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 +#include +#include +#include +#include + +#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 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 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