--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailservices/nmutilities/src/nmuriparser.cpp Thu Sep 30 11:43:07 2010 +0300
@@ -0,0 +1,168 @@
+/*
+* 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: A utility class for parsing URI strings
+*
+*/
+#include "nmuriparser.h"
+#include "emailtrace.h"
+
+#include <QUrl>
+
+
+/*!
+ Keys for parsing data.
+*/
+static const QString NmUriParserEmailSendSubjectKey = "subject";
+static const QString NmUriParserEmailEmailSendToKey = "to";
+static const QString NmUriParserEmailSendCcKey = "cc";
+static const QString NmUriParserEmailSendBccKey = "bcc";
+static const QString NmUriParserEmailSendBodyTextKey = "body";
+
+/*!
+ Class constructor.
+*/
+NmUriParser::NmUriParser()
+{
+ NM_FUNCTION;
+}
+
+/*!
+ Class destructor.
+*/
+NmUriParser::~NmUriParser()
+{
+ NM_FUNCTION;
+}
+
+/*!
+ Extracts the data from the given QString into the class members.
+ \param data QString containing the data.
+ \return True if success, false otherwise.
+*/
+bool NmUriParser::extractData(const QString &data)
+{
+ NM_FUNCTION;
+
+ bool success(false);
+
+ QUrl uri(data);
+
+ if (uri.isValid()) {
+
+ mSubject = uri.queryItemValue(NmUriParserEmailSendSubjectKey);
+ QString to = uri.path();
+ QString cc = uri.queryItemValue(NmUriParserEmailSendCcKey);
+ QString bcc = uri.queryItemValue(NmUriParserEmailSendBccKey);
+ QString bodyText = uri.queryItemValue(NmUriParserEmailSendBodyTextKey);
+ if (bodyText.length()) {
+ mBodyText = bodyText;
+ }
+
+ addAddressesToList(to, mToAddresses);
+ addAddressesToList(cc, mCcAddresses);
+ addAddressesToList(bcc, mBccAddresses);
+
+ success = true;
+ }
+
+ return success;
+}
+
+/*!
+ Appends the given addresses into the given list.
+ \param address The addresses to append.
+ \param list The list where the addresses are appended to.
+*/
+void NmUriParser::addAddressesToList(QString &addresses, QStringList &list)
+{
+ NM_FUNCTION;
+
+ if (!addresses.isEmpty()) {
+
+ QStringList foundAddresses;
+
+ // Process multiple addresses.
+ if (addresses.contains(",")) {
+ QString str;
+ while (addresses.contains(",")) {
+ str = addresses.section(",", 0, 0); // Get the occurance.
+ addresses.remove(0, (addresses.indexOf(",")+1)); // Remove the occurance.
+ if (!str.isEmpty()) { // In case str would be empty on some error data.
+ foundAddresses.append(str);
+ }
+ }
+ }
+ if (!addresses.isEmpty()) { // In case addresses would be empty on some error data.
+ // Last one or single address.
+ foundAddresses.append(addresses);
+ }
+ // Append the found addresses into the given list.
+ list.append(foundAddresses);
+ }
+}
+
+/*!
+ Resets the data.
+*/
+void NmUriParser::resetData()
+{
+ NM_FUNCTION;
+
+ mSubject.clear();
+ mToAddresses.clear();
+ mCcAddresses.clear();
+ mBccAddresses.clear();
+ mBodyText.clear();
+}
+
+/*!
+ Getter for subject
+ \return QString subject of parsed uri
+*/
+QString NmUriParser::subject() const
+{
+ return mSubject;
+}
+/*!
+ Getter for to-addresses
+ \return QStringList list of parsed to-addresses
+*/
+QStringList NmUriParser::toAddresses() const
+{
+ return mToAddresses;
+}
+/*!
+ Getter for ccAddresses
+ \return QStringList list of parsed cc-addresses
+*/
+QStringList NmUriParser::ccAddresses() const
+{
+ return mCcAddresses;
+}
+/*!
+ Getter for bcc-Addresses
+ \return QStringList list of parsed bcc-addresses
+*/
+QStringList NmUriParser::bccAddresses() const
+{
+ return mBccAddresses;
+}
+/*!
+ Getter for bcc-Addresses
+ \return QString parsed body text
+*/
+QString NmUriParser::bodyText() const
+{
+ return mBodyText;
+}