omadm/omadmappui/src/NSmlDMSyncHandler.cpp
branchRCL_3
changeset 9 db6d61d7814f
parent 0 3ce708148e4d
child 40 f2101057ffeb
--- a/omadm/omadmappui/src/NSmlDMSyncHandler.cpp	Tue Feb 02 00:03:17 2010 +0200
+++ b/omadm/omadmappui/src/NSmlDMSyncHandler.cpp	Fri Feb 19 22:41:42 2010 +0200
@@ -28,7 +28,7 @@
 #include <data_caging_path_literals.hrh>  // for resource and bitmap directories
 #include <SyncMLErr.h>      // sync error codes
 
-
+#include <e32property.h>
 #include <AknsUtils.h>
 #include <DevManInternalCRKeys.h>
 #include <centralrepository.h>
@@ -49,6 +49,7 @@
 _LIT( KBitmapFileName,  "z:nsmldmsync.mbm" );
 #endif
 
+const TInt KRequestTriggerWaitTime(1000);
 // -----------------------------------------------------------------------------
 // CNSmlDMSyncHandler::NewL
 //
@@ -163,7 +164,17 @@
 		}
     FLOG( "CNSmlDMSyncHandler::HandleDialogEventL() completed" );
     }
-
+// ----------------------------------------------------------------------------------------
+// StaticSynchronizeRequestL() called to start Synchronization
+// ----------------------------------------------------------------------------------------
+static TInt StaticSynchronizeRequestL(TAny* aPtr)
+    {
+    CNSmlDMSyncHandler* ptr = (CNSmlDMSyncHandler*) aPtr;
+    FLOG("StaticSynchronizeRequestL");   
+    TRAPD(err, ptr->StartSynchronizeL() );  
+    FLOG("StaticSynchronizeRequestL completed");
+    return err;
+    }
 // -----------------------------------------------------------------------------
 // CNSmlDMSyncHandler::SynchronizeL
 // -----------------------------------------------------------------------------
@@ -172,7 +183,8 @@
                                        const TInt aProfileId,
                                        const TInt aJobId,
                                        const TInt aConnectionBearer,
-                                       const TBool aUseFotaProgressNote )
+                                       const TBool aUseFotaProgressNote, 
+                                       const TBool aSilent)
 	{
 	FLOG( "CNSmlDMSyncHandler::SynchronizeL Server alert" );
 	
@@ -181,7 +193,7 @@
     iProfileId = aProfileId;
     iJobId = aJobId;
     iUseFotaProgressNote = aUseFotaProgressNote;
-    
+    iSilent = aSilent;
     iSyncJob.OpenL( Session(), iJobId );
     iSyncJobId = iSyncJob.Identifier();
     FTRACE( FPrint( _L(
@@ -244,7 +256,81 @@
                     KNSmlDMSyncUiInitiatedJobKey,
                     iSyncJobId );
 	}
-	
+
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncHandler::StartSynchronizeL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncHandler::StartSynchronizeL()
+    {
+    FLOG( "CNSmlDMSyncHandler::StartSynchronizeL" );
+    if(iPeriodic)
+       {
+       delete iPeriodic;
+       iPeriodic = NULL;
+       FLOG("CNSmlDMSyncHandler::iPeriodic-deleted");
+       }
+    const TUid KDisclaimerProperty = {0x101F8769};
+    const TUint32 KInteger = 0x00000001;
+    TInt propValue;
+    TInt err = KErrNone;
+    
+    if(iSilent == EFalse)   //disclaimer shown for non silent session
+        {
+        if(TUtil::ShowNativeDialogL(EPrivacyPolicy)==KErrNone)
+            {
+            TRAP( err, ShowProgressDialogL() );
+            if ( err != KErrNone )
+                {
+                Session().CancelEvent();
+                Session().CancelProgress();
+                iSyncJob.StopL();
+                iSyncJob.Close();
+                propValue = 0;
+                RProperty::Set(KDisclaimerProperty, KInteger, propValue);
+                User::Leave( err );
+                }
+            FLOG( "CNSmlDMSyncHandler::SynchronizeL Sync is running" );
+
+            // Publish key here; set to 1
+            propValue = 1;
+            RProperty::Set(KDisclaimerProperty, KInteger, propValue);
+            }
+        else
+            {
+            Session().CancelEvent();
+            Session().CancelProgress();
+            propValue = 0;
+            RProperty::Set(KDisclaimerProperty, KInteger, propValue);            
+            }
+        }
+    else    //for silent session, disclaimer not shown
+        {
+        TRAP( err, ShowProgressDialogL() );
+        if ( err != KErrNone )
+            {
+            Session().CancelEvent();
+            Session().CancelProgress();
+            iSyncJob.StopL();
+            iSyncJob.Close();
+            propValue = 0;
+            RProperty::Set(KDisclaimerProperty, KInteger, propValue);
+            User::Leave( err );
+            }
+         FLOG( "CNSmlDMSyncHandler::SynchronizeL Sync is running" );
+
+            // Publish key here; set to 1
+         propValue = 1;
+         RProperty::Set(KDisclaimerProperty, KInteger, propValue);
+        }
+     
+     iSyncDocument->MarkFwUpdChangesStartL();
+     
+     iSyncRunning = ETrue;
+     iSyncError = KErrNone;
+     FLOG( "CNSmlDMSyncHandler::StartSynchronizeL completed" );
+    }
 // -----------------------------------------------------------------------------
 // CNSmlDMSyncHandler::SynchronizeL
 // -----------------------------------------------------------------------------
@@ -282,23 +368,34 @@
 	else
 	   iNotinFotaView = 0;    //already busy because in other view
 	IsDMBusy =ETrue; 
-  r2=RProperty::Set(KUidSmlSyncApp,KDMIdle,IsDMBusy);	   
-	
-	TRAP( err, ShowProgressDialogL() );
-	if ( err != KErrNone )
+  r2=RProperty::Set(KUidSmlSyncApp,KDMIdle,IsDMBusy);	
+  
+	if(iServerAlertedSync)
 		{
-		Session().CancelEvent();
-		Session().CancelProgress();
-		iSyncJob.StopL();
-		iSyncJob.Close();
-		User::Leave( err );
+        iPeriodic = CPeriodic::NewL (EPriorityNormal) ;
+        FLOG("CNSmlDMSyncHandler::SynchronizeL: iPeriodic created)");
+        iPeriodic->Start(TTimeIntervalMicroSeconds32(KRequestTriggerWaitTime*20)
+                  , TTimeIntervalMicroSeconds32(KRequestTriggerWaitTime*2500)
+                  , TCallBack(StaticSynchronizeRequestL,this) ) ;
 		}
-	FLOG( "CNSmlDMSyncHandler::SynchronizeL Sync is running" );
+	else
+	    {//For user initiated session
+		TRAP( err, ShowProgressDialogL() );
+		if ( err != KErrNone )
+		    {
+            Session().CancelEvent();
+            Session().CancelProgress();
+            iSyncJob.StopL();
+            iSyncJob.Close();
+            User::Leave( err );
+		    }
+		FLOG( "CNSmlDMSyncHandler::SynchronizeL Sync is running" );
+	    iSyncDocument->MarkFwUpdChangesStartL();
+	    
+	    iSyncRunning = ETrue;
+	    iSyncError = KErrNone;
+		}
 
-    iSyncDocument->MarkFwUpdChangesStartL();
-	
-	iSyncRunning = ETrue;
-	iSyncError = KErrNone;
 	}
 
 // -----------------------------------------------------------------------------