diff -r 000000000000 -r 99ef825efeca languageinterworkingfw/servicehandler/src/liwcommon.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/languageinterworkingfw/servicehandler/src/liwcommon.cpp Mon Mar 30 12:51:20 2009 +0300 @@ -0,0 +1,365 @@ +/* +* Copyright (c) 2003-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: Implementation for common LIW classes to be used both +* consumer and provider side. +* +*/ + + + + + + +#include "liwcommon.h" +#include +const TInt KInitialMaxProviders = 0xff; + +CLiwCriteriaItem::CLiwCriteriaItem() + { + } + + + +EXPORT_C CLiwCriteriaItem* CLiwCriteriaItem::NewL() + { + CLiwCriteriaItem* item = new (ELeave) CLiwCriteriaItem(); + CleanupStack::PushL( item ); + item->ConstructL(); + CleanupStack::Pop(item); // item + return item; + } + + + +EXPORT_C CLiwCriteriaItem* CLiwCriteriaItem::NewLC() + { + CLiwCriteriaItem* item = new (ELeave) CLiwCriteriaItem(); + CleanupStack::PushL( item ); + item->ConstructL(); + return item; + } + + + +EXPORT_C CLiwCriteriaItem* CLiwCriteriaItem::NewL( + TInt aCriteriaId, + TInt aServiceCmd, + const TDesC8& aContentType) + { + CLiwCriteriaItem* item = new (ELeave) CLiwCriteriaItem(); + CleanupStack::PushL( item ); + item->ConstructL(aCriteriaId, aServiceCmd, aContentType); + CleanupStack::Pop(item); // item + return item; + } + + + +EXPORT_C CLiwCriteriaItem* CLiwCriteriaItem::NewLC( + TInt aCriteriaId, + TInt aServiceCmd, + const TDesC8& aContentType) + { + CLiwCriteriaItem* item = new (ELeave) CLiwCriteriaItem(); + CleanupStack::PushL( item ); + item->ConstructL(aCriteriaId, aServiceCmd, aContentType); + return item; + } + +EXPORT_C CLiwCriteriaItem* CLiwCriteriaItem::NewL( + TInt aCriteriaId, + const TDesC8& aServiceCmd, + const TDesC8& aContentType) + { + CLiwCriteriaItem* item = new (ELeave) CLiwCriteriaItem(); + CleanupStack::PushL( item ); + item->ConstructL(aCriteriaId, aServiceCmd, aContentType); + CleanupStack::Pop(item); // item + return item; + } + +EXPORT_C CLiwCriteriaItem* CLiwCriteriaItem::NewLC( + TInt aCriteriaId, + const TDesC8& aServiceCmd, + const TDesC8& aContentType) + { + CLiwCriteriaItem* item = new (ELeave) CLiwCriteriaItem(); + CleanupStack::PushL( item ); + item->ConstructL(aCriteriaId, aServiceCmd, aContentType); + return item; + } + + +EXPORT_C CLiwCriteriaItem::~CLiwCriteriaItem() + { + delete iReserved.iData.iBufC8; + delete iContentType; + iOptions.Reset(); + + iMetadataOptions.Reset(); + } + + +void CLiwCriteriaItem::ConstructL() + { + iMaxProviders = KInitialMaxProviders; + } + + + +void CLiwCriteriaItem::ConstructL(TInt aCriteriaId, TInt aServiceCmd, + const TDesC8& aContentType) + { + iMaxProviders = KInitialMaxProviders; + iCriteriaId = aCriteriaId; + iServiceCmd = aServiceCmd; + SetContentTypeL( aContentType ); + } + +void CLiwCriteriaItem::ConstructL(TInt aCriteriaId, const TDesC8& aServiceCmd, + const TDesC8& aContentType) + { + iMaxProviders = KInitialMaxProviders; + iCriteriaId = aCriteriaId; + SetServiceCmdL( aServiceCmd ); + SetContentTypeL( aContentType ); + } + +EXPORT_C void CLiwCriteriaItem::SetId(TInt aId) + { + iCriteriaId = aId; + } + + + +EXPORT_C void CLiwCriteriaItem::SetServiceClass(const TUid& aServiceUid) + { + iServiceClass = aServiceUid; + } + + + +EXPORT_C void CLiwCriteriaItem::SetServiceCmd(TInt aServiceCmd) + { + iServiceCmd = aServiceCmd; + } + +EXPORT_C void CLiwCriteriaItem::SetServiceCmdL(const TDesC8& aServiceCmd) + { + iServiceCmd = KLiwCmdAsStr; + delete iReserved.iData.iBufC8; + iReserved.iData.iBufC8 = NULL; + iReserved.iData.iBufC8 = HBufC8::NewL(aServiceCmd.Length()); + TPtr8 content(iReserved.iData.iBufC8->Des()); + content.SetLength(aServiceCmd.Length()); + content.Copy(aServiceCmd); + } + +EXPORT_C void CLiwCriteriaItem::SetContentTypeL(const TDesC8& aContentType) + { + delete iContentType; + iContentType = NULL; + iContentType = HBufC8::NewL(aContentType.Length()); + TPtr8 content(iContentType->Des()); + content.SetLength(aContentType.Length()); + content.Copy(aContentType); + } + + + +EXPORT_C TInt CLiwCriteriaItem::Id() const + { + return iCriteriaId; + } + + + +EXPORT_C const TUid& CLiwCriteriaItem::ServiceClass() const + { + return iServiceClass; + } + + + +EXPORT_C TInt CLiwCriteriaItem::ServiceCmd() const + { + return iServiceCmd; + } + +EXPORT_C const TDesC8& CLiwCriteriaItem::ServiceCmdStr() const + { + return ((iReserved.iData.iBufC8) ? *iReserved.iData.iBufC8 : KNullDesC8()); + } + +EXPORT_C const TDesC8& CLiwCriteriaItem::ContentType() const + { + if (iContentType) + { + return *iContentType; + } + + return KNullDesC8(); + } + + + +EXPORT_C void CLiwCriteriaItem::SetOptions(TUint aOptions) + { + if(aOptions == 0) + return; + + iOptions.Set(aOptions); + } + + +EXPORT_C void CLiwCriteriaItem::SetMetaDataOptions(const TLiwVariant& aMetaDataOptions) + { + iMetadataOptions.SetL(aMetaDataOptions); + } + +EXPORT_C void CLiwCriteriaItem::GetMetaDataOptions(TLiwVariant& aMetaDataOptions) const + { + aMetaDataOptions.SetL(iMetadataOptions); + } + +EXPORT_C TUint CLiwCriteriaItem::Options() const + { + return iOptions.AsTUint(); + } + + + +EXPORT_C void CLiwCriteriaItem::ReadFromResoureL(TResourceReader& aReader) + { + delete iContentType; + iContentType = NULL; + + delete iReserved.iData.iBufC8; + iReserved.iData.iBufC8 = NULL; + + iCriteriaId = aReader.ReadInt32(); + iServiceCmd = aReader.ReadInt32(); + + if (iServiceCmd == KLiwCmdAsStr) + { + TPtrC8 txtptr = aReader.ReadTPtrC8(); + iReserved.iData.iBufC8 = HBufC8::NewL(txtptr.Length()); + TPtr8 content(iReserved.iData.iBufC8->Des()); + content.Copy( txtptr ); + } + + { + TPtrC8 txtptr = aReader.ReadTPtrC8(); + iContentType = HBufC8::NewL(txtptr.Length()); + TPtr8 content(iContentType->Des()); + content.Copy( txtptr ); + } + + iServiceClass = TUid::Uid(aReader.ReadInt32()); + + iDefaultProvider = TUid::Uid(aReader.ReadInt32()); + + iMaxProviders = aReader.ReadUint8(); + + SetOptions((TUint)aReader.ReadUint8()); + + TInt capResID = aReader.ReadInt32(); // Skip over reserved field. + + + } + + + +EXPORT_C TUid CLiwCriteriaItem::DefaultProvider() const + { + return iDefaultProvider; + } + + + +EXPORT_C void CLiwCriteriaItem::SetDefaultProvider(TInt aDefault) + { + iDefaultProvider = TUid::Uid(aDefault); + } + + +EXPORT_C TInt CLiwCriteriaItem::MaxProviders() const + { + return iMaxProviders; + } + + +EXPORT_C void CLiwCriteriaItem::SetMaxProviders(TInt aMaxProviders) + { + iMaxProviders = aMaxProviders; + } + + +EXPORT_C TBool CLiwCriteriaItem::operator==(const CLiwCriteriaItem& aItem) + { + if (iServiceCmd != KLiwCmdAsStr) + { + return ((iCriteriaId == aItem.iCriteriaId) && + (iServiceCmd == aItem.iServiceCmd) && + (iContentType->Compare(*(aItem.iContentType)) == KErrNone) && + (iServiceClass.iUid == aItem.iServiceClass.iUid) && + (iDefaultProvider.iUid == aItem.iDefaultProvider.iUid) && + (iMaxProviders == aItem.iMaxProviders) && + (iOptions == aItem.iOptions) && + (iMetadataOptions == aItem.iMetadataOptions)); + } + else + { + if(iCriteriaId== aItem.iCriteriaId) + { + if(0 == iReserved.iData.iBufC8->Des().Compare(aItem.iReserved.iData.iBufC8->Des())) + { + if(iContentType->Compare(*(aItem.iContentType)) == KErrNone) + { + if(iServiceClass.iUid == aItem.iServiceClass.iUid) + { + if(iDefaultProvider.iUid == aItem.iDefaultProvider.iUid) + { + if(iMaxProviders == aItem.iMaxProviders) + { + if((iOptions == aItem.iOptions)) + { + if((iMetadataOptions == aItem.iMetadataOptions)) + { + return ETrue; + } + } + } + } + } + } + } + } + return EFalse; + } + } + +EXPORT_C TInt32 MLiwNotifyCallback::GetTransactionID() +{ + TTime currentTime; + const TInt KMin = 60; + const TInt KSec = 60; + const TInt KMcSec = 1000; + currentTime.HomeTime(); + return (KMin * KSec * currentTime.DateTime().Hour())+ + (KMin * currentTime.DateTime().Minute())+ + (KMcSec * currentTime.DateTime().Second()) + + (currentTime.DateTime().MicroSecond()); +} +// End of file