smf/smfservermodule/smfclient/common/smfcontact.cpp
changeset 18 013a02bf2bb0
parent 17 106a4bfcb866
child 19 c412f0526c34
--- a/smf/smfservermodule/smfclient/common/smfcontact.cpp	Thu Aug 05 16:46:37 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1108 +0,0 @@
-/**
- * Copyright (c) 2010 Sasken Communication Technologies Ltd.
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of the "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:
- * Chandradeep Gandhi, Sasken Communication Technologies Ltd - Initial contribution
- *
- * Contributors:
- * Manasij Roy, Nalina Hariharan
- * 
- * Description:
- * The contact class represents a social contact
- * Note: This class has dependencies on QtMobility project
- *
- */
-
-#include <QFile>
-#include <QTextStream>
-
-#include "smfcontact.h"
-
-/**
- * Constructor with default argument
- * @param aParent The parent object
- */
-SmfContact::SmfContact( QObject *aParent)
-	{
-	Q_UNUSED(aParent);
-	d = new SmfContactPrivate;
-	}
-
-/**
- * Copy Constructor
- * @param aOther The reference object
- */
-SmfContact::SmfContact( const SmfContact &aOther ): d (aOther.d)
-	{
-	}
-
-/**
- * Overloaded = operator
- * @param aOther The reference object
- * @return The target reference value
- */
-SmfContact& SmfContact::operator=( const SmfContact &aOther )
-	{
-	d->m_details = aOther.d->m_details;
-	return *this;
-	}
-
-/**
- * Destructor
- */
-SmfContact::~SmfContact( )
-	{
-	}
-
-/**
- * Method to get the available sub fields for contacts.
- * The following are the available sub types of a contact
- *   QtMobility::QContactAddress		Address;
- *   QtMobility::QContactAnniversary	Anniversary;
- *   QtMobility::QContactAvatar			Avatar;
- *   QtMobility::QContactBirthday		Birthday;
- *   QtMobility::QContactId				ContactId;
- *   QtMobility::QContactEmailAddress	EmailAddress;
- *   QtMobility::QContactGender			Gender;
- *   QtMobility::QContactGeoLocation	Geolocation;
- *   QtMobility::QContactGuid			Guid;
- *   QtMobility::QContactName			Name;
- *   QtMobility::QContactNickname		Nickname;
- *   QtMobility::QContactNote			Note;
- *   QtMobility::QContactOnlineAccount	OnlineAccount;
- *   QtMobility::QContactOrganization	Organization;
- *   QtMobility::QContactPhoneNumber	PhoneNumber;
- *   QtMobility::QContactPresence		Presence;
- *   QtMobility::QContactThumbnail		Thumbnail;
- *   QtMobility::QContactTimestamp		Timestamp;
- *   QtMobility::QContactType			Type;
- *   QtMobility::QContactUrl			Url;
- * @return The Available sub fields for this contact
- */
-QStringList SmfContact::subTypes( ) const
-	{
-	QStringList list = d->m_details.uniqueKeys();
-	return list;
-	}
-
-/**
- * Method to convert an SmfContact to a QContact
- * Changes made to the returned QContact will not be reflected 
- * in its parent SmfContact object
- * @param aContact QContact corresponding to SmfContact 
- */
-void SmfContact::convert( QContact &aContact ) const
-	{
-// TODO:-
-	Q_UNUSED(aContact);
-	}
-
-/**
- * Method to get the value of a sub field for this contact
- * @param aSubType The sub field type 
- * @return The value of the sub field subType
- * @see subTypes()
- */
-QVariant SmfContact::value( const QString& aSubType ) const
-	{
-	if(d->m_details.contains(aSubType))
-		return d->m_details.value(aSubType);
-	else
-		return QString();
-	}
-
-/**
- * Method to set value for a subtype
- * @param aSubType The subtype string
- * @param value Thhe value to be set for the subtype
- */
-void SmfContact::setValue(const QString& aSubType,QVariant& value)
-	{
-	d->m_details.insert(aSubType,value);
-	}
-
-/**
- * Method for Externalization. Writes the SmfContact object to 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be written
- * @param aContact The SmfContact object to be externalized
- * @return reference to the written stream
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const SmfContact& aContact )
-	{
-	QContactAddress address = aContact.value("Address").value<QContactAddress>();
-	aDataStream<<address;
-	
-	QContactAnniversary anniver = aContact.value("Anniversary").value<QContactAnniversary>();
-	aDataStream<<anniver;
-	
-	QContactAvatar avatar = aContact.value("Avatar").value<QContactAvatar>();
-	aDataStream<<avatar;
-	
-	QContactBirthday bday = aContact.value("Birthday").value<QContactBirthday>();
-	aDataStream<<bday;
-	
-	QContactId contactId = aContact.value("ContactId").value<QContactId>();
-	aDataStream<<contactId;
-	
-	QContactEmailAddress email = aContact.value("EmailAddress").value<QContactEmailAddress>();
-	aDataStream<<email;
-	
-	QContactGender gender = aContact.value("Gender").value<QContactGender>();
-	aDataStream<<gender;
-	
-	QContactGeoLocation geoloc = aContact.value("Geolocation").value<QContactGeoLocation>();
-	aDataStream<<geoloc;
-	
-	QContactGuid guid = aContact.value("Guid").value<QContactGuid>();
-	aDataStream<<guid;
-	
-	QContactName name = aContact.value("Name").value<QContactName>();
-	aDataStream<<name;
-	
-	QContactNickname nickname = aContact.value("Nickname").value<QContactNickname>();
-	aDataStream<<nickname;
-	
-	QContactNote note = aContact.value("Note").value<QContactNote>();
-	aDataStream<<note;
-	
-	QContactOnlineAccount account = aContact.value("OnlineAccount").value<QContactOnlineAccount>();
-	aDataStream<<account;
-	
-	QContactOrganization org = aContact.value("Organization").value<QContactOrganization>();
-	aDataStream<<org;
-	
-	QContactPhoneNumber number = aContact.value("PhoneNumber").value<QContactPhoneNumber>();
-	aDataStream<<number;
-	
-	QContactPresence presence = aContact.value("Presence").value<QContactPresence>();
-	aDataStream<<presence;
-	
-	QContactThumbnail thumbnail = aContact.value("Thumbnail").value<QContactThumbnail>();
-	aDataStream<<thumbnail;
-	
-	QContactTimestamp time = aContact.value("Timestamp").value<QContactTimestamp>();
-	aDataStream<<time;
-	
-	QContactType type = aContact.value("Type").value<QContactType>();
-	aDataStream<<type;
-	
-	QContactUrl url = aContact.value("Url").value<QContactUrl>();
-	aDataStream<<url;
-	
-	return aDataStream;
-	}
-
-/**
- * Method for Internalization. Reads a SmfContact object from 
- * the stream and returns a reference to the stream.
- * @param aDataStream Stream to be read
- * @param aContact The SmfContact object to be internalized
- * @return reference to the stream
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		SmfContact& aContact )
-	{
-	QContactAddress address;
-	aDataStream>>address;
-	QVariant var1 = QVariant::fromValue(address);
-	aContact.setValue("Address",var1);
-	
-	QContactAnniversary anniver;
-	aDataStream>>anniver;
-	QVariant var2 = QVariant::fromValue(anniver);
-	aContact.setValue("Anniversary",var2);
-	
-	QContactAvatar avatar;
-	aDataStream>>avatar;
-	QVariant var3 = QVariant::fromValue(avatar);
-	aContact.setValue("Avatar",var3);
-	
-	QContactBirthday bday;
-	aDataStream>>bday;
-	QVariant var4 = QVariant::fromValue(bday);
-	aContact.setValue("Birthday",var4);
-	
-	QContactId id;
-	aDataStream>>id;
-	QVariant var5 = QVariant::fromValue(id);
-	aContact.setValue("ContactId",var5);
-	
-	QContactEmailAddress email;
-	aDataStream>>email;
-	QVariant var6 = QVariant::fromValue(email);
-	aContact.setValue("EmailAddress",var6);
-	
-	QContactGender gender;
-	aDataStream>>gender;
-	QVariant var7 = QVariant::fromValue(gender);
-	aContact.setValue("Gender",var7);
-	
-	QContactGeoLocation geo;
-	aDataStream>>geo;
-	QVariant var8 = QVariant::fromValue(geo);
-	aContact.setValue("Geolocation",var8);
-	
-	QContactGuid guid;
-	aDataStream>>guid;
-	QVariant var9 = QVariant::fromValue(guid);
-	aContact.setValue("Guid",var9);
-	
-	QContactName name1;
-	aDataStream>>name1;
-	QVariant var10 = QVariant::fromValue(name1);
-	aContact.setValue("Name",var10);
-	
-	QContactNickname nickname;
-	aDataStream>>nickname;
-	QVariant var11 = QVariant::fromValue(nickname);
-	aContact.setValue("Nickname",var11);
-	
-	QContactNote note;
-	aDataStream>>note;
-	QVariant var12 = QVariant::fromValue(note);
-	aContact.setValue("Note",var12);
-	
-	QContactOnlineAccount account;
-	aDataStream>>account;
-	QVariant var13 = QVariant::fromValue(account);
-	aContact.setValue("OnlineAccount",var13);
-	
-	QContactOrganization org;
-	aDataStream>>org;
-	QVariant var14 = QVariant::fromValue(org);
-	aContact.setValue("Organization",var14);
-	
-	QContactPhoneNumber number;
-	aDataStream>>number;
-	QVariant var15 = QVariant::fromValue(number);
-	aContact.setValue("PhoneNumber",var15);
-	
-	QContactPresence presence;
-	aDataStream>>presence;
-	QVariant var16 = QVariant::fromValue(presence);
-	aContact.setValue("Presence",var16);
-	
-	QContactThumbnail thumbnail;
-	aDataStream>>thumbnail;
-	QVariant var17 = QVariant::fromValue(thumbnail);
-	aContact.setValue("Thumbnail",var17);
-	
-	QContactTimestamp time;
-	aDataStream>>time;
-	QVariant var18 = QVariant::fromValue(time);
-	aContact.setValue("Timestamp",var18);
-	
-	QContactType type;
-	aDataStream>>type;
-	QVariant var19 = QVariant::fromValue(type);
-	aContact.setValue("Type",var19);
-	
-	QContactUrl url;
-	aDataStream>>url;
-	QVariant var20 = QVariant::fromValue(url);
-	aContact.setValue("Url",var20);
-	
-	return aDataStream;
-	}
-
-
-
-
-/**
- * Serialization support for QtMobility::QContactAddress
- */
-QDataStream& operator<<( QDataStream &aDataStream, 
-		const QContactAddress &aAddress )
-	{
-	aDataStream<<aAddress.country();
-	aDataStream<<aAddress.locality();
-	aDataStream<<aAddress.postOfficeBox();
-	aDataStream<<aAddress.postcode();
-	aDataStream<<aAddress.region();
-	aDataStream<<aAddress.street();
-	aDataStream<<aAddress.subTypes();
-
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactAddress
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactAddress &aAddress )
-	{
-	QString str;
-	
-	// First one to be deserialized is country
-	aDataStream>>str;
-	aAddress.setCountry(str);
-
-	// Next one to be deserialized is locality
-	str.clear();
-	aDataStream>>str;
-	aAddress.setLocality(str);
-
-	// Next one to be deserialized is postOfficeBox
-	str.clear();
-	aDataStream>>str;
-	aAddress.setPostOfficeBox(str);
-	
-	// Next one to be deserialized is postCode
-	str.clear();
-	aDataStream>>str;
-	aAddress.setPostcode(str);
-	
-	// Next one to be deserialized is region
-	str.clear();
-	aDataStream>>str;
-	aAddress.setRegion(str);
-	
-	// Next one to be deserialized is street
-	str.clear();
-	aDataStream>>str;
-	aAddress.setStreet(str);
-	
-	// Next one to be deserialized is subtypes
-	QStringList list;
-	list.clear();
-	aDataStream>>list;
-	aAddress.setSubTypes(list);
-	
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactAnniversary
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const QContactAnniversary &aAnniversary )
-	{
-	aDataStream<<aAnniversary.calendarId();
-	aDataStream<<aAnniversary.event();
-	aDataStream<<aAnniversary.originalDate();
-	aDataStream<<aAnniversary.subType();
-
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactAnniversary
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactAnniversary &aAnniversary)
-	{
-	QString str;
-	QDate date;
-	
-	// First one to be deserialized is calendarId
-	aDataStream>>str;
-	aAnniversary.setCalendarId(str);
-
-	// Next one to be deserialized is event
-	str.clear();
-	aDataStream>>str;
-	aAnniversary.setEvent(str);
-
-	// Next one to be deserialized is originalDate
-	aDataStream>>date;
-	aAnniversary.setOriginalDate(date);
-	
-	// Next one to be deserialized is subType
-	str.clear();
-	aDataStream>>str;
-	aAnniversary.setSubType(str);
-		
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactAvatar
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactAvatar &aAvatar )
-	{
-	//TODO:- QContactAvatar derives from QContactDetail,so internalization/externalization
-	//for the same should be provided
-	
-	//Qt mobility introduces API compatibility break
-#ifdef OLDER_QT_MOBILITY
-	aDataStream<<aAvatar.avatar();
-
-#else
-	aDataStream<<aAvatar.imageUrl();
-	aDataStream<<aAvatar.videoUrl();
-#endif
-	
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactAvatar
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-	QContactAvatar &aAvatar)
-	{
-#ifdef OLDER_QT_MOBILITY
-	QString avatarPath;
-	aDataStream>>avatarPath;
-	aAvatar.setAvatar(avatarPath);
-#else
-	QUrl url;
-	aDataStream>>url;
-	aAvatar.setImageUrl(url);
-	
-	url.clear();
-	aDataStream>>url;
-	aAvatar.setVideoUrl(url);
-#endif
-	
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactBirthday
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactBirthday &aBirthday )
-	{
-	aDataStream<<aBirthday.date();
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactBirthday
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactBirthday &aBirthday)
-	{
-	QDate date;
-	aDataStream>>date;
-	aBirthday.setDate(date);
-
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactId
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactId &aContactId )
-	{
-	aDataStream<<aContactId.localId();
-	aDataStream<<aContactId.managerUri();
-
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactId
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactId &aContactId)
-	{
-	QContactLocalId localId;
-	QString str;
-	
-	// First one to be deserialized is localId
-	aDataStream>>localId;
-	aContactId.setLocalId(localId);
-
-	// Next one to be deserialized is managerUri
-	aDataStream>>str;
-	aContactId.setManagerUri(str);
-		
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactEmailAddress
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactEmailAddress &aEMail )
-	{
-	aDataStream<<aEMail.emailAddress();
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactEmailAddress
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactEmailAddress &aEMail)
-	{
-	QString str;
-	aDataStream>>str;
-	aEMail.setEmailAddress(str);
-		
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactGender
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactGender &aGender )
-	{
-	aDataStream<<aGender.gender();
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactGender
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactGender &aGender)
-	{
-	QString str;
-	aDataStream>>str;
-	aGender.setGender(str);
-		
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactGeoLocation
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactGeoLocation &aGeolocation )
-	{
-	aDataStream<<aGeolocation.accuracy();
-	aDataStream<<aGeolocation.altitude();
-	aDataStream<<aGeolocation.altitudeAccuracy();
-	aDataStream<<aGeolocation.heading();
-	aDataStream<<aGeolocation.label();
-	aDataStream<<aGeolocation.latitude();
-	aDataStream<<aGeolocation.longitude();
-	aDataStream<<aGeolocation.speed();
-	aDataStream<<aGeolocation.timestamp();
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactGeoLocation
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactGeoLocation &aGeolocation)
-	{
-	double val;
-	QString str;
-	QDateTime date;
-	
-	// First one to be deserialized is accuracy
-	val = 0;
-	aDataStream>>val;
-	aGeolocation.setAccuracy(val);
-
-	// Next one to be deserialized is altitude
-	val = 0;
-	aDataStream>>val;
-	aGeolocation.setAltitude(val);
-
-	// Next one to be deserialized is altitudeAccuracy
-	val = 0;
-	aDataStream>>val;
-	aGeolocation.setAltitudeAccuracy(val);
-	
-	// Next one to be deserialized is heading
-	val = 0;
-	aDataStream>>val;
-	aGeolocation.setHeading(val);
-	
-	// First one to be deserialized is label
-	aDataStream>>str;
-	aGeolocation.setLabel(str);
-
-	// Next one to be deserialized is latitude
-	val = 0;
-	aDataStream>>val;
-	aGeolocation.setLatitude(val);
-
-	// Next one to be deserialized is longitude
-	val = 0;
-	aDataStream>>val;
-	aGeolocation.setLongitude(val);
-	
-	// Next one to be deserialized is speed
-	val = 0;
-	aDataStream>>val;
-	aGeolocation.setSpeed(val);
-	
-	// Next one to be deserialized is timestamp
-	aDataStream>>date;
-	aGeolocation.setTimestamp(date);
-		
-	return aDataStream;
-	}
-
-/**
- * Serialization support for QtMobility::QContactGuid
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactGuid &aGuid )
-	{
-	aDataStream<<aGuid.guid();
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactGuid
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactGuid &aGuid)
-	{
-	QString str;
-	aDataStream>>str;
-	aGuid.setGuid(str);
-	
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactName
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-		const QContactName &aContact )
-	{
-	//Qt mobility introduces API compatibility break
-#ifdef OLDER_QT_MOBILITY
-	aDataStream<<aContact.first();
-	aDataStream<<aContact.last();
-#else
-	aDataStream<<aContact.customLabel();
-	aDataStream<<aContact.firstName();
-	aDataStream<<aContact.lastName();
-	aDataStream<<aContact.middleName();
-	aDataStream<<aContact.prefix();
-	aDataStream<<aContact.suffix();
-#endif
-	
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactName
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactName &aContact )
-	{
-	QString str;
-	
-	// First one to be deserialized is customlabel
-	str.clear();
-	aDataStream>>str;
-	aContact.setCustomLabel(str);
-	
-	// Next one to be deserialized is firstname
-	str.clear();
-	aDataStream>>str;
-#ifdef OLDER_QT_MOBILITY
-	aContact.setFirst(str);
-#else
-	aContact.setFirstName(str);
-#endif
-
-	// Next one to be deserialized is lastName
-	str.clear();
-	aDataStream>>str;
-#ifdef OLDER_QT_MOBILITY
-	aContact.setLast(str);
-#else
-	aContact.setLastName(str);
-#endif
-	
-
-	
-	// Next one to be deserialized is middlename
-	str.clear();
-	aDataStream>>str;
-	aContact.setMiddleName(str);
-	
-	// Next one to be deserialized is prefix
-	str.clear();
-	aDataStream>>str;
-	aContact.setPrefix(str);
-	
-	// Next one to be deserialized is suffix
-	str.clear();
-	aDataStream>>str;
-	aContact.setSuffix(str);
-	
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactNickname
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactNickname &aNickname )
-	{
-	aDataStream<<aNickname.nickname();
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactNickname
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactNickname &aNickname)
-	{
-	QString str;
-	aDataStream>>str;
-	aNickname.setNickname(str);
-		
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactNote
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactNote &aNote )
-	{
-	aDataStream<<aNote.note();
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactNote
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactNote &aNote)
-	{
-	QString str;
-	aDataStream>>str;
-	aNote.setNote(str);
-		
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactOnlineAccount
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactOnlineAccount &aOnlineAccount )
-	{
-	aDataStream<<aOnlineAccount.accountUri();
-	aDataStream<<aOnlineAccount.capabilities();
-	aDataStream<<aOnlineAccount.serviceProvider();
-	aDataStream<<aOnlineAccount.subTypes();
-
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactOnlineAccount
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactOnlineAccount &aOnlineAccount)
-	{
-	QString str;
-	QStringList list;
-	
-	// First one to be deserialized is accountUri
-	aDataStream>>str;
-	aOnlineAccount.setAccountUri(str);
-
-	// Next one to be deserialized is capabilities
-	aDataStream>>list;
-	aOnlineAccount.setCapabilities(list);
-
-	// Next one to be deserialized is serviceProvider
-	str.clear();
-	aDataStream>>str;
-	aOnlineAccount.setServiceProvider(str);
-	
-	// Next one to be deserialized is subTypes
-	list.clear();
-	aDataStream>>list;
-	aOnlineAccount.setSubTypes(list);
-		
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactOrganization
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactOrganization &aOrganization )
-	{
-	aDataStream<<aOrganization.assistantName();
-	aDataStream<<aOrganization.department();
-	aDataStream<<aOrganization.location();
-	aDataStream<<aOrganization.logoUrl();
-	aDataStream<<aOrganization.name();
-	aDataStream<<aOrganization.role();
-	aDataStream<<aOrganization.title();
-
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactOrganization
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactOrganization &aOrganization )
-	{
-	QString str;
-	QStringList list;
-	QUrl url;
-	
-	// First one to be deserialized is assistantName
-	aDataStream>>str;
-	aOrganization.setAssistantName(str);
-
-	// Next one to be deserialized is department
-	aDataStream>>list;
-	aOrganization.setDepartment(list);
-
-	// Next one to be deserialized is location
-	str.clear();
-	aDataStream>>str;
-	aOrganization.setLocation(str);
-	
-	// Next one to be deserialized is logoUrl
-	aDataStream>>url;
-	aOrganization.setLogoUrl(url);
-	
-	// Next one to be deserialized is name
-	str.clear();
-	aDataStream>>str;
-	aOrganization.setName(str);
-
-	// Next one to be deserialized is role
-	str.clear();
-	aDataStream>>str;
-	aOrganization.setRole(str);
-	
-	// Next one to be deserialized is title
-	str.clear();
-	aDataStream>>str;
-	aOrganization.setTitle(str);
-		
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactPhoneNumber
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactPhoneNumber &aPhoneNumber )
-	{
-	aDataStream<<aPhoneNumber.number();
-	aDataStream<<aPhoneNumber.subTypes();
-
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactPhoneNumber
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactPhoneNumber &aPhoneNumber )
-	{
-	QString str;
-	QStringList list;
-	
-	// First one to be deserialized is number
-	aDataStream>>str;
-	aPhoneNumber.setNumber(str);
-	
-	// Next one to be deserialized is subTypes
-	aDataStream>>list;
-	aPhoneNumber.setSubTypes(list);
-		
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactPresence
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactPresence &aPresence )
-	{
-	aDataStream<<aPresence.customMessage();
-	aDataStream<<aPresence.nickname();
-	aDataStream<<aPresence.presenceState();
-	aDataStream<<aPresence.presenceStateImageUrl();
-	aDataStream<<aPresence.presenceStateText();
-	aDataStream<<aPresence.timestamp();
-
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactPresence
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactPresence &aPresence )
-	{
-	QString str;
-	QUrl url;
-	QDateTime date;
-	
-	// First one to be deserialized is customMessage
-	aDataStream>>str;
-	aPresence.setCustomMessage(str);
-	
-	// Next one to be deserialized is nickname
-	str.clear();
-	aDataStream>>str;
-	aPresence.setNickname(str);
-	
-	// Next one to be deserialized is presenceState
-	int val;
-	aDataStream>>val;
-	QContactPresence::PresenceState state = (QContactPresence::PresenceState)val;
-	aPresence.setPresenceState(state);
-	
-	// Next one to be deserialized is presenceStateImageUrl
-	aDataStream>>url;
-	aPresence.setPresenceStateImageUrl(url);
-	
-	// Next one to be deserialized is presenceStateText
-	str.clear();
-	aDataStream>>str;
-	aPresence.setPresenceStateText(str);
-	
-	// Next one to be deserialized is timestamp
-	aDataStream>>date;
-	aPresence.setTimestamp(date);
-		
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactThumbnail
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactThumbnail &aThumbnail )
-	{
-	aDataStream<<aThumbnail.thumbnail();
-
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactThumbnail
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactThumbnail &aThumbnail )
-	{
-	QImage image;
-	aDataStream>>image;
-	aThumbnail.setThumbnail(image);
-		
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactTimestamp
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactTimestamp &aTimestamp )
-	{
-	aDataStream<<aTimestamp.created();
-	aDataStream<<aTimestamp.lastModified();
-
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactTimestamp
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactTimestamp &aTimestamp )
-	{
-	QDateTime date1, date2;
-	
-	// First one to be deserialized is created
-	aDataStream>>date1;
-	aTimestamp.setCreated(date1);
-	
-	// Next one to be deserialized is lastModified
-	aDataStream>>date2;
-	aTimestamp.setLastModified(date2);
-		
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactType
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactType &aType )
-	{
-	aDataStream<<aType.type();
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactType
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactType &aType )
-	{
-	QString str;
-	aDataStream>>str;
-	aType.setType(str);
-	
-	return aDataStream;
-	}
-
-
-/**
- * Serialization support for QtMobility::QContactUrl
- */
-QDataStream &operator<<( QDataStream &aDataStream, 
-	const QContactUrl &aUrl )
-	{
-	aDataStream<<aUrl.subType();
-	aDataStream<<aUrl.url();
-
-	return aDataStream;
-	}
-
-/**
- * Deserialization support for QtMobility::QContactUrl
- */
-QDataStream &operator>>( QDataStream &aDataStream, 
-		QContactUrl &aUrl)
-	{
-	QString str;
-	
-	// First one to be deserialized is subType
-	aDataStream>>str;
-	aUrl.setSubType(str);
-	
-	// Next one to be deserialized is url
-	str.clear();
-	aDataStream>>str;
-	aUrl.setUrl(str);
-		
-	return aDataStream;
-	}
-