deviceupdatesui/deviceupdates/src/nsmldmsyncappengine.cpp
changeset 33 7464c1e21dae
child 36 9eefb50e711a
--- /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 <collate.h>
+#include <e32property.h>
+#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<TSmlProfileId> 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<KNSmlMaxItemLength> 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