diff -r a5fecba4b1e4 -r 7464c1e21dae deviceupdatesui/deviceupdates/src/nsmldmsyncappengine.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deviceupdatesui/deviceupdates/src/nsmldmsyncappengine.cpp Fri Mar 19 04:28:07 2010 +0530 @@ -0,0 +1,367 @@ +/* +* 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 CNSmlDMSyncAppEngine +* +*/ + + +#include "NSmlDMSyncAppEngine.h" +#include "NSmlDMSyncDebug.h" +#include "NSmlDMSyncHandler.h" +#include +#include +#include "nsmldmsyncinternalpskeys.h" +#include "dminforetrieval.h" + +// ============================ MEMBER FUNCTIONS ============================== +// + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::CNSmlDMSyncAppEngine +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CNSmlDMSyncAppEngine::CNSmlDMSyncAppEngine() : iProgressShown( ETrue ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::CNSmlDMSyncAppEngine:" ); + + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CNSmlDMSyncAppEngine::ConstructL(DmInfo* dmcallback) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::ConstructL:" ); + + iSyncMLSession.OpenL(); + iDmcallback = dmcallback; + iSyncHandler = CNSmlDMSyncHandler::NewL( &iSyncMLSession, + this ); + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CNSmlDMSyncAppEngine* CNSmlDMSyncAppEngine::NewL(DmInfo* dmcallback ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::NewL:" ); + + CNSmlDMSyncAppEngine* self = new( ELeave ) CNSmlDMSyncAppEngine(); + CleanupStack::PushL( self ); + self->ConstructL( dmcallback ); + CleanupStack::Pop(); + + return self; + } + +// ------------------------------------------------------------------------------ +// Destructor +// ------------------------------------------------------------------------------ +// +CNSmlDMSyncAppEngine::~CNSmlDMSyncAppEngine() + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::~CNSmlDMSyncAppEngine:" ); + + delete iSyncHandler; + delete iProfile; + iSyncMLSession.Close(); + } + +// ------------------------------------------------------------------------------ +// CNSmlDMSyncAppEngine::DeleteProfileL +// ------------------------------------------------------------------------------ +// +void CNSmlDMSyncAppEngine::DeleteProfileL( TInt aProfileId ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::DeleteProfileL:" ); + + delete iProfile; + iProfile = NULL; + iSyncMLSession.DeleteProfileL( aProfileId ); + } + +// ------------------------------------------------------------------------------ +// CNSmlDMSyncAppEngine::CreateProfileL +// ------------------------------------------------------------------------------ +// +TInt CNSmlDMSyncAppEngine::CreateProfileL() + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::CreateProfileL:" ); + + delete iProfile; + iProfile = NULL; + iProfile = CNSmlDMSyncProfile::NewL( KUidSmlSyncApp.iUid, &iSyncMLSession ); + return iProfile->CreateL(); + } + +// ------------------------------------------------------------------------------ +// CNSmlDMSyncAppEngine::Profile +// ------------------------------------------------------------------------------ +// +CNSmlDMSyncProfile* CNSmlDMSyncAppEngine::Profile( ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::Profile:" ); + + return iProfile; + } + +// ------------------------------------------------------------------------------ +// CNSmlDMSyncAppEngine::CreateCopyProfileL +// ------------------------------------------------------------------------------ +// +CNSmlDMSyncProfile* CNSmlDMSyncAppEngine::CreateCopyProfileL( TInt aProfileId ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::CreateCopyProfileL:" ); + + delete iProfile; + iProfile = NULL; + iProfile = CNSmlDMSyncProfile::NewL( KUidSmlSyncApp.iUid, &iSyncMLSession ); + + iProfile->CreateCopyL( aProfileId ); + return iProfile; + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::Session +// ----------------------------------------------------------------------------- +// +RSyncMLSession* CNSmlDMSyncAppEngine::Session() + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::Session:" ); + + return &iSyncMLSession; + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::OpenL +// ----------------------------------------------------------------------------- +// +CNSmlDMSyncProfile* CNSmlDMSyncAppEngine::OpenProfileL( TInt aProfileId, + TInt aOpenMode ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::OpenL:" ); + + delete iProfile; + iProfile = NULL; + iProfile = CNSmlDMSyncProfile::NewL( KUidSmlSyncApp.iUid, &iSyncMLSession ); + iProfile->OpenL( aProfileId, aOpenMode ); + return iProfile; + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::Close +// ----------------------------------------------------------------------------- +// +void CNSmlDMSyncAppEngine::CloseProfile() + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::Close:" ); + + delete iProfile; + iProfile = NULL; + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::SynchronizeL +// ----------------------------------------------------------------------------- +// +void CNSmlDMSyncAppEngine::SynchronizeL( TDesC& aServerName, + TInt aProfileId, + TInt aConnectionBearer, + const TBool aUseFotaProgressNote ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::SynchronizeL:" ); + + iProgressShown = ETrue; + iSyncHandler->SynchronizeL( aServerName, + aProfileId, + aConnectionBearer, + aUseFotaProgressNote ); + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::SynchronizeL +// ----------------------------------------------------------------------------- +// +void CNSmlDMSyncAppEngine::SynchronizeL( TDesC& aServerName, + TInt aProfileId, + TInt aJobId, + TInt aConnectionBearer, + const TBool aUseFotaProgressNote ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::SynchronizeL:" ); + + iProgressShown = ETrue; + TInt err = RProperty::Set( KPSUidNSmlDMSyncApp, + KDmJobCancel, KErrNone ); + FTRACE(FPrint( + _L("CNSmlDMSyncAppEngine::SynchronizeL()KDmJobCancel reset to 0 err = %d"), + err ) ); + iSyncHandler->SynchronizeL( aServerName, + aProfileId, + aJobId, + aConnectionBearer, + aUseFotaProgressNote ); + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::ShowProgressDialogL +// ----------------------------------------------------------------------------- +// +void CNSmlDMSyncAppEngine::ShowProgressDialogL( TBool aShow ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::ShowProgressDialog()" ); + + if ( aShow != iProgressShown ) + { + if ( aShow ) + { + iSyncHandler->ShowProgressDialogL(); + } + else + { + iSyncHandler->HideProgressDialogL(); + } + iProgressShown = aShow; + } + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::ServerIdFoundL +// ----------------------------------------------------------------------------- +// +TBool CNSmlDMSyncAppEngine::ServerIdFoundL( const TDesC& aServerId, + const TInt aProfileId ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::ServerIdFoundL:" ); + + RArray arr; + iSyncMLSession.ListProfilesL( arr, ESmlDevMan ); + TBool ret = EFalse; + CleanupClosePushL(arr); + + for ( TInt index = 0; index < arr.Count(); index++ ) + { + TRAPD( error, OpenProfileL( arr[index], ESmlOpenRead ) ); + if ( error == KErrNone ) + { + if ( aProfileId != Profile()->ProfileId() ) + { + TBuf buf; + Profile()->GetServerId( buf ); + if ( buf.Compare( aServerId ) == 0 ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::ServerIdFoundL: Match" ); + ret = ETrue; + CloseProfile(); + break; + } + } + CloseProfile(); + } + } + CleanupStack::PopAndDestroy( &arr ); + return ret; + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::Compare +// ----------------------------------------------------------------------------- +// +TInt CNSmlDMSyncAppEngine::Compare( const TDesC& aLeft, const TDesC& aRight ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::Compare:" ); + + // Empty Name() is always greater than non-empty Name() + if (aLeft.Length() == 0 && aRight.Length() == 0) + { + return 0; + } + if (aLeft.Length() == 0) + { + return 1; + } + if (aRight.Length() == 0) + { + return -1; + } + + // None of the Name()s was empty, use TDesC::CompareC to do the comparison. + // This is from cntmodel. + TCollationMethod collateMethod; + // get the standard method + collateMethod = *Mem::CollationMethodByIndex(0); + // dont ignore punctuation and spaces + collateMethod.iFlags |= TCollationMethod::EIgnoreNone; + TInt comparison( aLeft.CompareC(aRight, 3, &collateMethod) ); + return comparison; + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::SyncRunning +// ----------------------------------------------------------------------------- +// +TBool CNSmlDMSyncAppEngine::SyncRunning() + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::SyncRunning:" ); + + return iSyncHandler->SyncRunning(); + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::CancelSyncL +// ----------------------------------------------------------------------------- +// +void CNSmlDMSyncAppEngine::CancelSyncL() + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::CancelSyncL()" ); + iSyncHandler->CancelSynchronizeL(); + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::SyncCompleted +// ----------------------------------------------------------------------------- +// +void CNSmlDMSyncAppEngine::SyncCompleted( TNSmlStatus aStatus ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::SyncCompleted:" ); + iDmcallback->synccomplete(aStatus); + if( iSyncObserver ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::SyncCompleted: inform observer" ); + iSyncObserver->SyncComplete( aStatus ); + } + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncAppEngine::RequestSyncStatus +// ----------------------------------------------------------------------------- +// +void CNSmlDMSyncAppEngine::RequestSyncStatus( + MNSmlDMSyncObserver* aSyncObserver ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::RequestSyncStatus:" ); + if( aSyncObserver ) + { + FLOG( "[OMADM] CNSmlDMSyncAppEngine::RequestSyncStatus: added observer" ); + iSyncObserver = aSyncObserver; + } + } + +// End of File