diff -r 4490afcb47b1 -r a5fecba4b1e4 pnpmobileservices/pnpms/PnP/PnpProvisioningAppSrc/PnpServiceActivation.cpp --- a/pnpmobileservices/pnpms/PnP/PnpProvisioningAppSrc/PnpServiceActivation.cpp Thu Jan 07 12:39:15 2010 +0200 +++ b/pnpmobileservices/pnpms/PnP/PnpProvisioningAppSrc/PnpServiceActivation.cpp Mon Jan 18 20:09:30 2010 +0200 @@ -27,21 +27,22 @@ #include #include #include +#include + +#include +#include +#include "PnpLogger.h" -const TUint32 KEmailApplicationUID[] = {0x100058C5}; - +const TUid KCRUidPnPProvisioning = {0x10204338}; // Browser UID const TUid KWAPBrowserUID = { 0x10008d39 }; - +const TInt KMaxLength = 255; // POP3 and IMAP4 provisioning settings application ID -_LIT(KEmailProvAppPOP3ID, "110"); -_LIT(KEmailProvAppIMAP4ID, "143"); // Literal constants -_LIT( KMessagingAppName, "z:\\sys\\bin\\mce.exe" ); -_LIT( KEmptyDoc, ""); - + +const TUint32 KServiceAct1 = 0x00000100; // INCLUDE FILES @@ -111,18 +112,19 @@ { - CApaCommandLine* cmd = CApaCommandLine::NewLC(); - cmd->SetExecutableNameL( KMessagingAppName ); - cmd->SetDocumentNameL( KEmptyDoc ); - cmd->SetCommandL( EApaCommandOpen ); RApaLsSession appArcSession; User::LeaveIfError( appArcSession.Connect() ); - appArcSession.StartApp( *cmd ); - appArcSession.Close(); - CleanupStack::PopAndDestroy( cmd ); + CleanupClosePushL( appArcSession ); + TApaAppInfo appInfo; + User::LeaveIfError(appArcSession.GetAppInfo( appInfo, TUid::Uid( iLaunchUid) ) ); + CApaCommandLine* cmdLine = CApaCommandLine::NewLC(); + cmdLine->SetCommandL( EApaCommandRun ); + cmdLine->SetExecutableNameL( appInfo.iFullName ); + User::LeaveIfError( appArcSession.StartApp( *cmdLine ) ); + CleanupStack::PopAndDestroy( 2 ); // cmdLine, appArcSession } } @@ -137,23 +139,35 @@ // Get application ID and Provisioning settings application // ID and validate the application launcher - TBool flag (EFalse); + RPointerArray appID; + TBuf<16> pLaunchUid; + TBool returnFlag (EFalse); + TBool FoundUid(EFalse); + TBool FoundAppid(EFalse); CPnpProvUtil *provutil = CPnpProvUtil::NewLC(); - TUint32 val = provutil->GetApplicationUidL(); - if(val == KEmailApplicationUID[0]) - { + iLaunchUid = provutil->GetApplicationUidL(); + provutil->GetProvAdapterAppIdsL(appID); + pLaunchUid.Num(iLaunchUid); + FoundUid = isPresent(pLaunchUid); + TUint32 secondPosition = iPosition+200; + if(FoundUid) + { for(TInt i=0; i keys; + HBufC* heapBuf = HBufC::NewLC(20); + TPtr ptr(heapBuf->Des()); + ptr = keys; + RPointerArray array; + TRAPD( errVal,GetCenrepValueL(KCRUidPnPProvisioning,position,keys)); // End of File + if(errVal != KErrNone) + { + CleanupStack::PopAndDestroy(); + return val; + } + ParseValues(array, keys); + val = Search(array,p); + CleanupStack::PopAndDestroy(heapBuf); + array.ResetAndDestroy(); + array.Close(); + return val; +} +TBool CPnpServiceActivation::Search(RPointerArray& array,TDesC& p) +{ + TBool flag(EFalse); + for(TInt j=0; j& array, TDesC& aValue) +{ + TLex aLex(aValue); + while(aLex.Peek() != '\x00') + { + aLex.Mark(); + while(aLex.Peek()!=',' && aLex.Peek()!='\x00') + aLex.Inc(); + TPtrC aPtr = aLex.MarkedToken(); + HBufC *buf18 = aPtr.AllocL(); + array.Append(buf18); + if(aLex.Peek()=='\x00') // end of string + break; + aLex.Inc(); + } +} +void CPnpServiceActivation::GetCenrepValueL(const TUid aRepositoryUid,TUint32 aKey, TDes16& aValue) + { + CRepository * rep = NULL; + TInt errorStatus = KErrNone; + TRAPD( errVal, rep = CRepository::NewL(aRepositoryUid)); + if(errVal == KErrNone) + { + errorStatus = rep->Get( aKey , aValue ); + } + else + { + errorStatus = errVal; + } + + if(rep) + { + delete rep; + } + if(errorStatus != KErrNone ) + { + User::Leave(errorStatus); + } + }