diff -r b183ec05bd8c -r 19bba8228ff0 syncmlfw/syncmlnotifier/ecom/SyncMLNotifierWrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/syncmlfw/syncmlnotifier/ecom/SyncMLNotifierWrapper.cpp Wed Sep 01 12:27:42 2010 +0100 @@ -0,0 +1,160 @@ +/* +* Copyright (c) 2005 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: Methods for SyncML notifier Ecom Plugins entry point +* +*/ + + +// INCLUDE FILES +#include +#include // link against aknnotifierwrapper.lib + +#include "SyncMLNotifierBase.h" +#include "SyncMLNotifDebug.h" + + +// CONSTANTS +const TInt KMaxSynchReplyBufLength = 256; + +const TInt KSmlNAppLaunchPriority = MEikSrvNotifierBase2::ENotifierPriorityVHigh; +const TInt KSmlNDlgPriority = MEikSrvNotifierBase2::ENotifierPriorityHigh; +const TInt KSmlNFwUpdPriority = MEikSrvNotifierBase2::ENotifierPriorityHigh; + +#ifdef __SERIES60_30__ + const TUid KSmlNAppServerUid = { 0x102072bf }; +#else // __SERIES60_30__ + _LIT( KSmlSyncMLNotifierDll, "syncmlnotifier.dll" ); +#endif // __SERIES60_30__ + + +// Provides pointer to the notifier creation function. +const TImplementationProxy ImplementationTable[] = + { +#ifdef __EABI__ + {{0x101F876A},(TFuncPtr)NotifierArray} +#else + {{0x101F876A},NotifierArray} +#endif + }; + +// ============================= LOCAL FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CleanupArray +// Deletes notifiers +// ----------------------------------------------------------------------------- +void CleanupArray( TAny* aArray ) + { + FLOG(_L("[SmlNotif]\t CleanupArray()")); + + CArrayPtrFlat* + subjects = static_cast*>(aArray); + TInt lastInd = subjects->Count() - 1; + for ( TInt i = lastInd; i >= 0; i-- ) + { + subjects->At(i)->Release(); + } + delete subjects; + + FLOG(_L("[SmlNotif]\t CleanupArray() completed")); + } + +// ----------------------------------------------------------------------------- +// DoCreateNotifierArrayL +// ----------------------------------------------------------------------------- +CArrayPtr* DoCreateNotifierArrayL() + { + FLOG(_L("[SmlNotif]\t DoCreateNotifierArrayL()")); + CArrayPtrFlat* subjects = + new ( ELeave ) CArrayPtrFlat( KSmlNotifierArrayIncrement ); + + CleanupStack::PushL( TCleanupItem( CleanupArray, subjects ) ); + + // Create Wrappers + + // Session owning notifier +#ifdef __SERIES60_30__ + + + CAknNotifierWrapper* master = + CAknNotifierWrapper::NewL( KSyncMLAppLaunchNotifierUid, + KSmlAppLaunchChannel, + KSmlNAppLaunchPriority, + KSmlNAppServerUid, + KMaxSynchReplyBufLength); + +#else // __SERIES60_30__ + + CAknCommonNotifierWrapper* master = + CAknCommonNotifierWrapper::NewL( KSyncMLAppLaunchNotifierUid, + KSmlAppLaunchChannel, + KSmlNAppLaunchPriority, + KSmlSyncMLNotifierDll(), + KMaxSynchReplyBufLength); + +#endif // __SERIES60_30__ + + subjects->AppendL( master ); + + // Notifiers using masters session + subjects->AppendL(new (ELeave) CAknNotifierWrapperLight(*master, + KSyncMLDlgNotifierUid, + KSmlDlgChannel, + KSmlNDlgPriority)); + + // Notifiers using masters session + subjects->AppendL(new (ELeave) CAknNotifierWrapperLight(*master, + KSyncMLFwUpdNotifierUid, + KSmlFwUpdChannel, + KSmlNFwUpdPriority)); + + CleanupStack::Pop(); // array cleanup + FLOG(_L("[SmlNotif]\t DoCreateNotifierArrayL() completed")); + return( subjects ); + } + + +// ----------------------------------------------------------------------------- +// NotifierArray +// Lib main entry point: Creates a notifiers array. +// ----------------------------------------------------------------------------- +CArrayPtr* NotifierArray() + { + FLOG(_L("[SmlNotif]\t NotifierArray()")); + CArrayPtr* array = 0; + TRAPD( ignore, array = DoCreateNotifierArrayL() ); + if (ignore != KErrNone) + { + ignore = KErrNone; + } + FLOG(_L("[SmlNotif]\t NotifierArray() completed")); + return array; + } + +// ========================== OTHER EXPORTED FUNCTIONS ========================= + +// ----------------------------------------------------------------------------- +// ImplementationGroupProxy +// DLL entry point +// ----------------------------------------------------------------------------- +EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) + { + FLOG(_L("[SmlNotif]\t ImplementationGroupProxy()")); + aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); + FTRACE( FPrint( + _L("[SmlNotif]\t ImplementationGroupProxy completed, Table count = %d"), + aTableCount ) ); + return ImplementationTable; + } +