diff -r 8ba0afbb4637 -r a15d9966050f messagingapp/msgservices/msgserviceapp/src/msgurihandlerinterface.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgservices/msgserviceapp/src/msgurihandlerinterface.cpp Fri Sep 17 08:28:39 2010 +0300 @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2010 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: + * class to manage differnt messaging views. + * + */ + +#include "msgurihandlerinterface.h" + +#include + +#include +#include +#include +#include +#include +#include + +#include "msgserviceviewmanager.h" +#include "debugtraces.h" + + +MsgUriHandlerInterface::MsgUriHandlerInterface(MsgServiceViewManager* viewManager, QObject* parent) +: +XQServiceProvider(QLatin1String("messaging.com.nokia.symbian.IUriView"), parent), +viewManager(viewManager) +{ + publishAll(); +} + +MsgUriHandlerInterface::~MsgUriHandlerInterface() +{ + +} + +bool MsgUriHandlerInterface::view(const QString& uri) +{ + QDEBUG_WRITE_FORMAT("service request for URI:", uri.toLatin1().data()); + QUrl parsedUri; + + parsedUri.setUrl(uri); + normalizeQueryItems(parsedUri); + + QDEBUG_WRITE_FORMAT("scheme: ", parsedUri.scheme().toLatin1().data()); + QDEBUG_WRITE_FORMAT("path: ", parsedUri.path().toLatin1().data()); + QDEBUG_WRITE_FORMAT("items count: ", parsedUri.queryItems().size()); + QDEBUG_WRITE_FORMAT("error: ", parsedUri.errorString()); +#ifdef _DEBUG_TRACES_ + QPair item; + foreach (item, parsedUri.queryItems()) + { + int i = 0; + QDEBUG_WRITE_FORMAT("MsgUriHandlerInterface::view(): query item # i :", i++); + QDEBUG_WRITE_FORMAT("MsgUriHandlerInterface::view(): query item # First Item :", item.first.toLatin1().data()); + QDEBUG_WRITE_FORMAT("MsgUriHandlerInterface::view(): query item # Second Item :", item.second.toLatin1().data()); + } +#endif + + ConvergedMessage message; + + if (parsedUri.scheme().compare("sms", Qt::CaseInsensitive)) + { + message.setMessageType(ConvergedMessage::Sms); + } + else if (parsedUri.scheme().compare("mmsto", Qt::CaseInsensitive)) + { + message.setMessageType(ConvergedMessage::Mms); + } + else + { + QDEBUG_WRITE_FORMAT("Unsupported scheme:", parsedUri.scheme().toLatin1().data()); + return false; + } + + QString addressLine = parsedUri.path(); + addRecipients(message, addressLine); + + QString body = parsedUri.queryItemValue("body"); + message.setBodyText(body); + + /* mms specific query values */ + + QString subject = parsedUri.queryItemValue("subject"); + message.setSubject(subject); + + QString priority = parsedUri.queryItemValue("priority"); + if (priority.compare("Low", Qt::CaseInsensitive)) + { + message.setPriority(ConvergedMessage::Low); + } + else if (priority.compare("Normal", Qt::CaseInsensitive)) + { + message.setPriority(ConvergedMessage::Normal); + } + else if (priority.compare("High", Qt::CaseInsensitive)) + { + message.setPriority(ConvergedMessage::High); + } + else + { + QDEBUG_WRITE_FORMAT("MsgUriHandlerInterface::view(): Unknown priority value: ", priority.toLatin1().data()); + return false; + } + + QStringList tos = parsedUri.allQueryItemValues("to"); + QString to; + foreach (to, tos) + { + addRecipients(message, to); + } + + QStringList ccs = parsedUri.allQueryItemValues("cc"); + QString cc; + foreach (cc, ccs) + { + addRecipients(message, cc); + } + + viewManager->send(message); + + return true; +} + +void MsgUriHandlerInterface::normalizeQueryItems(QUrl &url) +{ + QList > items = url.queryItems(); + QPair item; + int i = 0; + foreach (item, items) + { + items.replace(i++, QPair(item.first.toLower(), item.second)); + } + url.setQueryItems(items); +} + + +void MsgUriHandlerInterface::addRecipients(ConvergedMessage &message, const QString &recipientsList) +{ + QStringList addressList = recipientsList.split(","); + QString addressEntry; + + foreach (addressEntry, addressList) + { + addressEntry.trimmed(); + if (! addressEntry.isEmpty()) + { + ConvergedMessageAddress address; + address.setAddress(addressEntry); + message.addToRecipient(address); + QDEBUG_WRITE_FORMAT("MsgUriHandlerInterface::addRecipients() recipient added: ", addressEntry.toLatin1().data()); + } + } +}