diff -r 000000000000 -r 2e3d3ce01487 appfw/apparchitecture/apparc/APAID.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/appfw/apparchitecture/apparc/APAID.CPP Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,389 @@ +// Copyright (c) 1997-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: +// apaid.cpp +// +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS +#if !defined(__APAID_PARTNER_H__) +#include "apaidpartner.h" +#endif +#endif //SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#include +#include "APASTD.H" + +const TInt KMaxOpaqueDataLength = 0x1000; // maximum length of opaque data that can be passed between client and apparc server via a TApaAppServiceInfo object - this can be increased in future if needed + +// +// TApaAppIdentifier +// + +/** Constructs an empty application identifier. + +The data is not initialised. */ +EXPORT_C TApaAppIdentifier::TApaAppIdentifier() + {} + +/** Constructs an application identifier from the specified application +DLL file name and extension, and the specified application UID. +@param aAppUid The application specific UID. +@param aDllName The filename and extension of the application DLL. */ +EXPORT_C TApaAppIdentifier::TApaAppIdentifier(TUid aAppUid,const TFileName& aDllName) + : iAppUid(aAppUid), + iFullName(aDllName) + {} + +/** Externalises the application identifier to a write stream. + +@param aStream The write stream. */ +EXPORT_C void TApaAppIdentifier::ExternalizeL(RWriteStream& aStream)const + { + aStream<< iAppUid; + aStream<< iFullName; + } + +/** Internalises the application identifier from a read stream. + +@param aStream The read stream. */ +EXPORT_C void TApaAppIdentifier::InternalizeL(RReadStream& aStream) + { + aStream>> iAppUid; + aStream>> iFullName; + } + +// +// TApaAppInfo +// + +/** Constructs an empty application information object. + +The full path name is empty, the captions are empty and the application specific +UID is set to the null UID. */ +EXPORT_C TApaAppInfo::TApaAppInfo() + : iUid(TUid()), + iFullName(KNullDesC), + iCaption(KNullDesC), + iShortCaption(KNullDesC) + {} + +/** Constructs an application information object from the specified full DLL path +name, UID and full length caption. + +@param aAppUid The application specific UID. +@param aDllName The full path name of the application DLL. +@param aCaption The application caption. */ +EXPORT_C TApaAppInfo::TApaAppInfo(TUid aAppUid,const TFileName& aDllName,const TApaAppCaption& aCaption) + : iUid(aAppUid), + iFullName(aDllName), + iCaption(aCaption), + iShortCaption(aCaption) + {} + +/** Constructs an application information object from the specified full DLL path +name, UID, caption and short caption. + +@param aAppUid The application specific UID. +@param aDllName The full path name of the application DLL. +@param aCaption The application caption. +@param aShortCaption The application short caption. */ +EXPORT_C TApaAppInfo::TApaAppInfo(TUid aAppUid,const TFileName& aDllName,const TApaAppCaption& aCaption,const TApaAppCaption& aShortCaption) + : iUid(aAppUid), + iFullName(aDllName), + iCaption(aCaption), + iShortCaption(aShortCaption) + {} + +/** Externalises the application information to a write stream. + +@param aStream The write stream. */ +EXPORT_C void TApaAppInfo::ExternalizeL(RWriteStream& aStream)const + { + aStream<< iUid; + aStream<< iFullName; + aStream<< iCaption; + aStream<< iShortCaption; + } + +/** Internalises the application information from a read stream. + +@param aStream The read stream. */ +EXPORT_C void TApaAppInfo::InternalizeL(RReadStream& aStream) + { + aStream>> iUid; + aStream>> iFullName; + aStream>> iCaption; + aStream>> iShortCaption; + } + + +// +// TApaAppViewInfo +// + +/** Constructs an empty object. + +Specifically, it sets the view UID to KNullUid and empties the application +caption, i.e. sets it to KNullDesC. */ +EXPORT_C TApaAppViewInfo::TApaAppViewInfo() + : iUid(KNullUid), + iViewCaption(KNullDesC) + {} + + +EXPORT_C TApaAppViewInfo::TApaAppViewInfo(TUid aAppUid,const TApaAppCaption& aViewCaption, TInt aScreenMode) + : iUid(aAppUid), + iViewCaption(aViewCaption), + iScreenMode(aScreenMode) + {} + + +/** Externalises the application view information to a write stream. + +@param aStream The write stream. */ +EXPORT_C void TApaAppViewInfo::ExternalizeL(RWriteStream& aStream)const + { + aStream<< iUid; + aStream<< iViewCaption; + aStream.WriteInt32L(iScreenMode); + } + + +/** Internalises the application view information from a read stream. + +@param aStream The read stream. */ +EXPORT_C void TApaAppViewInfo::InternalizeL(RReadStream& aStream) + { + aStream>> iUid; + aStream>> iViewCaption; + iScreenMode=aStream.ReadInt32L(); + } + + +// +// class TApaAppCapability +// + +EXPORT_C void TApaAppCapability::InternalizeL(RReadStream& aStream) + { + DoInternalizeL(aStream, iLaunchInBackground, iGroupName); + } + +/** Internalises the application capabilities from a read stream. + +@param aStream The read stream. +*/ +void TApaAppCapability::DoInternalizeL(RReadStream& aStream, TBool& aLaunchInBackground, TApaAppGroupName& aGroupName) + { + TInt version = aStream.ReadInt32L(); + iEmbeddability = TEmbeddability(aStream.ReadInt32L()); + iSupportsNewFile = aStream.ReadInt32L(); + iAppIsHidden = aStream.ReadInt32L(); + + // initialise values of members which may not be in the stream + aLaunchInBackground = EFalse; + aGroupName.Zero(); + + if (version==1) + return; + + // Calypso extension to allow apps to be launched in the background + aLaunchInBackground = aStream.ReadInt32L(); + if (version==2) + return; + + aStream >> aGroupName; + if (version == 3) + return; + + iAttributes = aStream.ReadUint32L(); + if (version == 4) + return; + + Panic(EDPanicInvalidVersionNumber); + } + +/** Externalises the application capabilities to a write stream. + +@param aStream The write stream. +*/ +EXPORT_C void TApaAppCapability::ExternalizeL(RWriteStream& aStream) const + { + aStream.WriteInt32L(EVersion); + aStream.WriteInt32L(iEmbeddability); + aStream.WriteInt32L(iSupportsNewFile); + aStream.WriteInt32L(iAppIsHidden); + aStream.WriteInt32L(iLaunchInBackground); + aStream << iGroupName; + aStream.WriteUint32L(iAttributes); + } + +/** A utility function that can copy capability information from one descriptor +to another. + +@param aDest Target descriptor. +@param aSource Source descriptor. +*/ +EXPORT_C void TApaAppCapability::CopyCapability(TDes8& aDest,const TDesC8& aSource) + { + TInt maxLen=aDest.MaxLength(); + aDest.FillZ(maxLen); // zero fill in case aSource is shorter + aDest.Copy(aSource.Left(Min(aSource.Length(),maxLen))); + aDest.SetLength(maxLen); + } + + +// +// class TApaEmbeddabilityFilter +// + +/** Constructs an empty embeddability filter. */ +EXPORT_C TApaEmbeddabilityFilter::TApaEmbeddabilityFilter() + : iEmbeddabilityFlags(0) + { + } + +/** Adds aEmbeddability to the filter. + +@param aEmbeddability TEmbeddability value to add to the filter. */ +EXPORT_C void TApaEmbeddabilityFilter::AddEmbeddability(TApaAppCapability::TEmbeddability aEmbeddability) + { + __ASSERT_ALWAYS(aEmbeddability >= 0 && static_cast(aEmbeddability) < (sizeof(TUint)*8), Panic(EPanicEmbeddabilityOutOfRange)); + iEmbeddabilityFlags |= (1 << aEmbeddability); + } + +/** Compares aEmbeddability with the filter. + +@param aEmbeddability TEmbeddability value to compare. +@return True, if aEmbeddability is included in the filter; false, otherwise. */ +EXPORT_C TBool TApaEmbeddabilityFilter::MatchesEmbeddability(TApaAppCapability::TEmbeddability aEmbeddability) const + { + __ASSERT_ALWAYS(aEmbeddability >= 0 && static_cast(aEmbeddability) < (sizeof(TUint)*8), Panic(EPanicEmbeddabilityOutOfRange)); + TUint embeddabilityFlag = (1 << aEmbeddability); + return (embeddabilityFlag & iEmbeddabilityFlags); + } + + +// +// class TApaAppServiceInfo +// + +EXPORT_C TApaAppServiceInfo::TApaAppServiceInfo() + : iUid(KNullUid), + iDataTypes(0), + iOpaqueData(NULL) + { + } + +EXPORT_C TApaAppServiceInfo::TApaAppServiceInfo(TUid aUid, + CArrayFixFlat* aDataTypes, HBufC8* aOpaqueData) + : iUid(aUid), + iDataTypes(aDataTypes), + iOpaqueData(aOpaqueData) + { + __ASSERT_DEBUG(iDataTypes, Panic(EPanicNullPointer)); + __ASSERT_DEBUG(iOpaqueData, Panic(EPanicNullPointer)); + } + +EXPORT_C void TApaAppServiceInfo::ExternalizeL(RWriteStream& aStream) const + { + __ASSERT_DEBUG(iDataTypes, Panic(EPanicNullPointer)); + __ASSERT_DEBUG(iOpaqueData, Panic(EPanicNullPointer)); + aStream << iUid; + aStream << *iDataTypes; //lint !e613 Possible use of null pointer - Asserted above + aStream << *iOpaqueData;//lint !e613 Possible use of null pointer - Asserted above + } + +EXPORT_C void TApaAppServiceInfo::InternalizeL(RReadStream& aStream) + { + aStream >> iUid; + iDataTypes = new(ELeave) CArrayFixFlat(1); + aStream >> *iDataTypes; + iOpaqueData = HBufC8::NewL(aStream, KMaxOpaqueDataLength); + } + +EXPORT_C void TApaAppServiceInfo::Release() + { + if (iDataTypes) + { + iDataTypes->Reset(); + delete iDataTypes; + } + if (iOpaqueData) + { + delete iOpaqueData; + iOpaqueData = NULL; + } + } + +EXPORT_C CArrayFixFlat& TApaAppServiceInfo::DataTypes() + { + __ASSERT_DEBUG(iDataTypes, Panic(EPanicNullPointer)); + return *iDataTypes; //lint !e613 Possible use of null pointer - Asserted above + } + +/** Returns the service UID. + +Note that some APIs may store a UID other than a service UID +in a TApaAppServiceInfo object. Such APIs clearly state what +the UID represents. + +@return the service UID. +*/ +EXPORT_C TUid TApaAppServiceInfo::Uid() const + { + return iUid; + } + +EXPORT_C const CArrayFixFlat& TApaAppServiceInfo::DataTypes() const + { + __ASSERT_DEBUG(iDataTypes, Panic(EPanicNullPointer)); + return *iDataTypes; //lint !e613 Possible use of null pointer - Asserted above + } + +/** Returns the service implementation's opaque data. + +For each service UID registered by an application, the associated +opaque data indicates how the service is implemented by that application. + +The meaning of the opaque data is not known to the framework, it will vary +according to the service. + +For some services the opaque data may be a name intended for user display, +for others it may be structured data that the service's client-side code can interpret. + +@return the service implementation's opaque data. +*/ +EXPORT_C const TDesC8& TApaAppServiceInfo::OpaqueData() const + { + if (iOpaqueData) + return *iOpaqueData; + + return KNullDesC8; + } + + +// +// class CApaAppServiceInfoArray +// + +EXPORT_C CApaAppServiceInfoArray::CApaAppServiceInfoArray() + { + } + +EXPORT_C void CApaAppServiceInfoArray::CApaAppServiceInfoArray_Reserved1() + { + } + +EXPORT_C void CApaAppServiceInfoArray::CApaAppServiceInfoArray_Reserved2() + { + }