diff -r 000000000000 -r a2952bb97e68 mmappfw_plat/mpx_common_api/inc/mpxuser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/mpx_common_api/inc/mpxuser.h Thu Dec 17 08:55:47 2009 +0200 @@ -0,0 +1,328 @@ +/* +* Copyright (c) 2006 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: mpx user helper classes +* +*/ + + +#ifndef MPXUSER_H +#define MPXUSER_H + +#include +#include +#include +#include +#include +#include + +// MACRO +#if !defined(MPX_ASSERT) +_LIT(KMPX, "MPX"); +_LIT(_KMPXAssertErrorInfo, "**MPX ASSERT**: error %d file %s line %d"); +#define MPX_ASSERT_S(a) _S(a) +#define MPX_ASSERT_ALWAYS(c) {\ + if (!(c)) {RDebug::Print(_KMPXAssertErrorInfo, 0, MPX_ASSERT_S(__FILE__), __LINE__);\ + User::Invariant();}\ + } +#define MPX_ASSERT_EX_ALWAYS(c,e) {\ + if (!(c)) {RDebug::Print(_KMPXAssertErrorInfo, e, MPX_ASSERT_S(__FILE__), __LINE__);\ + User::Panic(KMPX, (e));}\ + } +#ifdef _DEBUG +#define MPX_ASSERT(c) MPX_ASSERT_ALWAYS(c) +#define MPX_ASSERT_EX(c,e) MPX_ASSERT_EX_ALWAYS(c,e) +#else +#define MPX_ASSERT(c) +#define MPX_ASSERT_EX(c,e) +#endif // _DEBUG +#define MPX_ASSERT_WORD_ALIGNED(x) MPX_ASSERT((((TUint)x)&3)==0) +#endif // MPX_ASSERT + +// CONSTANTS +const TInt KMPXBufGranularity = 0x100; // 256 bytes + +// Generic type for voice/video/VOIP calls +const TInt KMPXCallTypeGenericVoice( -1 ); + +class CMPXMedia; +class TMPXAttribute; + + +/** +* Set of static functions for MPX clients. +* +* @lib MPXCommon.lib +*/ +NONSHARABLE_CLASS(MPXUser) + { +public: // static helper functions + + /** + * Helper to recreate a buffer. + * + * @since S60 3.2.3 + * @param aSize the size of buffer + * @param aBuf buf object + */ + IMPORT_C static void RecreateBufferL(TInt aSize, CBufBase*& aBuf); + + /** + * Helper to create an descriptor array from buf. + * + * @since S60 3.2.3 + * @param aBuf buf object + * @param aArray object + */ + IMPORT_C static void CreateFromBufferL(const CBufBase &aBuf, + CDesCArray*& aArray); + /** + * Helper to create a buffer. + * + * @since S60 3.2.3 + * @param aSize the size of buffer + * @return aBuf buf object + */ + IMPORT_C static CBufBase* CreateBufferLC(TInt aSize); + + /** + * Helper to create a buffer from descriptor array. + * + * @since S60 3.2.3 + * @param aArray array object + * @param aBuf buf object + * @return the size of buffer + */ + IMPORT_C static void CreateBufferL(const MDesCArray* aArray, + CBufBase*& aBuf); + + /** + * Fill up the buffer from a message. + * + * @since S60 3.2.3 + * @param aMessage the message + * @param aMsgSlot message slot index + * @param aBuffer buffer object + * @leave KErrArgument Invalid Message + */ + IMPORT_C static void CreateBufferL(const RMessage2& aMessage, + TInt aMsgSlot, + CBufBase*& aBuffer); + + /** + * Fill up the buffer from a desriptormessage. + * + * @since S60 3.2.3 + * @param aDes descriptor + * @param aBuffer buffer object + */ + IMPORT_C static void CreateBufferL(const TDesC& aDes, + CBufBase*& aBuffer); + + /** + * Creates a narrow heap descriptor from a unicode descriptor. + * No character conversion. + * + * @since S60 3.2.3 + * @param aDes source data + * @return new heap buffer object + */ + IMPORT_C static HBufC8* Alloc8L(const TDesC& aDes); + + /** + * Creates a zero-terminated narrow heap descriptor from a unicode descriptor. + * No character conversion. + * + * @since S60 3.2.3 + * @param aDes source data + * @return new heap buffer object + */ + IMPORT_C static HBufC8* Alloc8ZL(const TDesC& aDes); + + /** + * Creates a heap descriptor from a narrow descriptor. + * No character conversion. + * + * @since S60 3.2.3 + * @param aDes source data + * @return new heap buffer object + */ + IMPORT_C static HBufC* AllocL(const TDesC8& aDes); + + /** + * Creates a narrow ptr descriptor on a unicode descriptor. + * + * @since S60 3.2.3 + * @param aDes source data + * @return ptr descriptor + */ + IMPORT_C static TPtrC8 Ptr(const TDesC& aDes); + + /** + * Creates a unicode ptr descriptor on a narrow descriptor. + * + * @since S60 3.2.3 + * @param aDes source data + * @return ptr descriptor + */ + IMPORT_C static TPtrC Ptr(const TDesC8& aDes); + + /** + * Internalize a descriptor from a stream. + * + * @since S60 3.2.3 + * @param aArray descriptor array + * @param aStream stream object + */ + IMPORT_C static void InternalizeL(CDesCArray*& aArray, + RReadStream& aStream); + + /** + * Externalize a descriptor to a stream. + * + * @since S60 3.2.3 + * @param aArray descriptor array + * @param aStream stream object + */ + IMPORT_C static void ExternalizeL(const MDesCArray* aArray, + RWriteStream& aStream); + + /** + * Group attributes belonging to one content into an item in the array. + * + * @since S60 3.2.3 + * @param aSrc attribute array source + * @param aDest array with attributes merged + */ + IMPORT_C static void MergeAttributeL(const TArray& aSrc, + RArray& aDest); + + /** + * Return Process Id. + * + * @since S60 3.2.3 + * @param aId thread id of the client + * @return id of the process which owns the thread + */ + IMPORT_C static TProcessId ProcessIdL(TThreadId aId); + + /** + * Add array items in aSrc into sorted array aDest if the item is not in + * the aDest yet. + * + * @since S60 3.2.3 + * @param aSrc souce array + * @param aDest destination array + */ + IMPORT_C static void MergeArray(const MDesCArray& aSrc, CDesCArray& aDest); + + /** + * Copies elements from one array of descriptors to another. + * + * @since S60 3.2.3 + * @param aSrc souce array + * @param aDest destination array + */ + IMPORT_C static void CopyArrayL(const MDesCArray& aSrc, CDesCArray& aDest); + + /** + * Compare two uids. + * + * @since S60 3.2.3 + * @param aId1 the first uid + * @param aId2 the second uid + * @return zero if the two uids are equal. + * a negative value(-1), if the first uid is less than the second. + * a positive value(1), if the first uid is greater than the second. + */ + IMPORT_C static TInt CompareUids(const TUid& aId1, const TUid& aId2); + + /** + * Compare two sorted arrays of uids. + * + * @since S60 3.2.3 + * @param aArray1 the first array of uids + * @param aArray2 the second array of uids + * @return zero if the content of two arrays are equal. + * a positive value(1), if the ids count in the first array is + * more than the second's and the first array contains all of uids + * in the second array. + * otherwise, -1 returned. + */ + IMPORT_C static TInt CompareOrderedUidArrays(const TArray& aArray1, + const TArray& aArray2); + + /** + * Helper to create an array from stream. + * + * @since S60 3.2.3 + * @param aArray array object returned + * @param aStream stream object + */ + IMPORT_C static void InternalizeL(RArray& aArray, RReadStream& aStream); + + /** + * Helper to externalize an array to stream. + * + * @since S60 3.2.3 + * @param aArray array object + * @param aStream stream object + */ + IMPORT_C static void ExternalizeL(const TArray& aArray, RWriteStream& aStream); + + /** + * Helper to get the window group ID associated with a process. + * + * @since S60 3.2.3 + * @param aProcId process ID + * @return The Window Group ID associated with this process. Or KErrNotFound if there is none. + */ + IMPORT_C static TInt FindWindowGroupIdL( TProcessId aProcId, RWsSession& aWsSession ); + + /** + * Check if there is the given type call ongoing. + * + * @since S60 3.2.3 + * @param aCallType Call type defined in TPSTelephonyCallState + * @return ETrue if there is ongoing calls. EFalse otherwise. + */ + IMPORT_C static TBool IsCallOngoing( TInt aCallType ); + + /** + * Complete file name with file path of dll. + * + * @since S60 3.2.3 + * @param aFileName file name will be completed with dll's path + * @return error code if an error occured. In case of an error aFileName will + * not be changed + */ + IMPORT_C static TInt CompleteWithDllPath(const TDesC& aDllName, TDes& aFileName); + + /** + * Helper method to complete file name with file path of dll. + * + * @since S60 3.2.3 + * @param aFileName file name will be completed with dll's path + * @return error code if an error occured. In case of an error aFileName will + * not be changed + */ + inline static TInt CompleteWithDllPath(TDes& aFileName) + { + TFileName dllName; + Dll::FileName(dllName); + return CompleteWithDllPath(dllName, aFileName); + } + }; +#endif // MPXUSER_H + +// End of File