syncmlfw/dm/syncagent/src/nsmldmcmds.cpp
branchRCL_3
changeset 25 b183ec05bd8c
parent 24 13d7c31c74e0
child 26 19bba8228ff0
--- a/syncmlfw/dm/syncagent/src/nsmldmcmds.cpp	Thu Aug 19 10:44:50 2010 +0300
+++ b/syncmlfw/dm/syncagent/src/nsmldmcmds.cpp	Tue Aug 31 16:04:06 2010 +0300
@@ -25,7 +25,7 @@
 #include <DevManInternalCRKeys.h>
 #include <featmgr.h>
 // FOTA end
-#include <SyncMLNotifierParams.h>
+#include <devicedialogsymbian.h>
 
 #include <nsmlconstants.h>
 #include <nsmldebug.h>
@@ -54,10 +54,14 @@
 #include "smldtd.h"
 #include "smldef.h"
 #include "nsmlagenttestdefines.h"
+#include <hbdevicedialogsymbian.h>
+#include <hbsymbianvariant.h>
 // DM specific includes
 #include "nsmldmagconstants.h"
 #include "NSmlDMCmds.h"
 #include "nsmldmerror.h"
+#include <dmdevdialogclient.h>
+#include "OnlineSupportLogger.h"
 #ifdef __TEST_TREEMODULE
 #include "nsmldmtestmodule.h"
 #else
@@ -73,17 +77,30 @@
 #endif
 
 
-const TUid KNSmlSyncDialogUid = { 0x101F876A };
+//const TUid KNSmlSyncDialogUid = { 0x101F876A };
 // FOTA
 const TInt KNSmlDmNoRequest = -1;
 // FOTA end
-const TInt KNSmlDmChoiceChunkMinSize = 32;
-const TInt KNSmlDmChoiceChunkMaxSize = 10000;
 
 _LIT8 ( KNSmlDMMetaTypeUserRequest, "org.openmobilealliance.dm.firmwareupdate.userrequest" );
 _LIT8 ( KNSmlDMMetaFormatUserRequest, "chr" );
-_LIT(KChunkName,"AlertItems");
+
+const TUid dmagentuid =
+            {
+            0x101F6DE5
+            };
+
+
 
+enum TSyncmlHbNotifierKeys 
+		{
+
+     EHbSOSNotifierKeyStatus = 11, // status set will complete the client subscribe
+     EHbSOSNotifierKeyStatusReturn = 12, // Return the content of actual status value accepted from UI
+     
+     EHbDMSyncNotifierKeyStatus = 13,
+     EHbDMSyncNotifierKeyStatusReturn = 14
+		};
 
 // ---------------------------------------------------------
 // CNSmlDMCmds::NewL()
@@ -306,169 +323,6 @@
 	return valueNum; 
 	}
 
-//#ifdef RD_DM_TEXT_INPUT_ALERT
-// ---------------------------------------------------------
-// CNSmlDMCmds::AlertInputTypeParameter()
-// For 1102-User Input server alert
-// For Input Type optional parameter
-// ---------------------------------------------------------
-TInt CNSmlDMCmds::AlertInputTypeParameter( const SmlPcdata_t* aData, const TDesC8& aParamID ) const
-	{
-	_DBG_FILE("CNSmlDMCmds::AlertInputTypeParameter: begin");
-	TInt valueNum = 0;//alphanumeric by default
-	if ( aData )
-		{
-		if ( aData->content )
-			{
-			TPtr8 parameters( (TUint8*) aData->content, aData->length, aData->length );
-			TrimRightSpaceAndNull( parameters );
-			TInt startPos = parameters.Find( aParamID );
-			if ( startPos >= 0 )
-				{
-				if ( parameters.Length() > startPos + aParamID.Length() )
-					{
-					TPtrC8 strPart = parameters.Right( parameters.Length() - ( startPos + aParamID.Length() ) );
-					TInt length = 0;
-					TChar character = strPart[length];
-						
-						switch( character )
-						{
-							case 'A': //Alphanumeric
-							 valueNum = ESyncMLInputTypeAlphaNumeric;
-							 break;
-							case 'N': //Numeric
-							 valueNum = ESyncMLInputTypeNumeric;
-							 break;
-							case 'D': //Date
-							 valueNum = ESyncMLInputTypeDate;
-							 break;
-							case 'T': //Time
-							 valueNum = ESyncMLInputTypeTime;
-							 break;
-							case 'P': //Phone number
-							 valueNum = ESyncMLInputTypePhoneNumber;
-							 break;
-							case 'I': //Ip address
-							 valueNum = ESyncMLInputTypeIPAddress;
-							 break;
-						}
-					}
-				}
-			}
-		}
-		_DBG_FILE("CNSmlDMCmds::AlertInputTypeParameter: end");
-	return valueNum; 
-	}	
-	
-// ---------------------------------------------------------
-// CNSmlDMCmds::AlertEchoTypeParameter()
-// For 1102-User Input server alert
-// For Echo Type optional parameter
-// ---------------------------------------------------------	
-TInt CNSmlDMCmds::AlertEchoTypeParameter( const SmlPcdata_t* aData, const TDesC8& aParamID ) const
-	{
-	_DBG_FILE("CNSmlDMCmds::AlertEchoTypeParameter: begin");
-	TInt valueNum = 0;//Text by default
-	if ( aData )
-		{
-		if ( aData->content )
-			{
-			TPtr8 parameters( (TUint8*) aData->content, aData->length, aData->length );
-			TrimRightSpaceAndNull( parameters );
-			TInt startPos = parameters.Find( aParamID );
-			if ( startPos >= 0 )
-				{
-				if ( parameters.Length() > startPos + aParamID.Length() )
-					{
-					TPtrC8 strPart = parameters.Right( parameters.Length() - ( startPos + aParamID.Length() ) );
-					TInt length = 0;
-					TChar character = strPart[length];
-						switch( character )
-						{
-							 
-							case 'T': valueNum = ESyncMLEchoTypeText;
-							 break;
-							case 'P': valueNum = ESyncMLEchoTypePassword;
-							 break;
-							 default: 
-							 break;
-						}
-					}
-				}
-			}
-		}
-		_DBG_FILE("CNSmlDMCmds::AlertEchoTypeParameter: end");
-	return valueNum; 
-	}
-// ---------------------------------------------------------
-// CNSmlDMCmds::CheckDRPresence()
-// For 1102-User Input server alert
-// For Default Response item existence verification
-// ---------------------------------------------------------		
-TBool CNSmlDMCmds::CheckDRPresence( const SmlPcdata_t* aData, const TDesC8& aParamID ) const
-   {
-   	if ( aData )
-		{
-		if ( aData->content )
-			{
-			TPtr8 parameters( (TUint8*) aData->content, aData->length, aData->length );
-			TrimRightSpaceAndNull( parameters );
-			TInt startPos = parameters.Find( aParamID );
-			if ( startPos >= 0 )
-				{
-				 return ETrue;
-				}
-			}
-		}
-		return EFalse;
-   }
-	
-// ---------------------------------------------------------
-// CNSmlDMCmds::AlertDefaultResponseParam()
-// For 1102-User Input server alert
-// For Default Response optional parameter
-// ---------------------------------------------------------
-TPtrC8 CNSmlDMCmds::AlertDefaultResponseParam( const SmlPcdata_t* aData, const TDesC8& aParamID ) const
-	{
-	_DBG_FILE("CNSmlDMCmds::AlertDefaultResponseParam: begin");
-	TLex8 value;
-	if ( aData )
-		{
-		if ( aData->content )
-			{
-			TPtr8 parameters( (TUint8*) aData->content, aData->length, aData->length );
-			TrimRightSpaceAndNull( parameters );
-			TInt startPos = parameters.Find( aParamID );
-			if ( startPos >= 0 )
-				{
-				if ( parameters.Length() > startPos + aParamID.Length() )
-					{
-					 TPtrC8 strPart = parameters.Right( parameters.Length() - ( startPos + aParamID.Length() ) );
-					TInt length = 0;
-					while ( length < strPart.Length() )
-						{
-						TChar character = strPart[length];
-						if ( character != '&' )
-							{
-							++length;
-							}
-						else
-							{
-							break;
-							}
-						}
-					TPtrC8 valueStr = strPart.Left(	length );
-					value.Assign( valueStr );
-										
-					}
-				}
-			}
-		}
-		_DBG_FILE("CNSmlDMCmds::AlertDefaultResponseParam: end");
-	 return value.Remainder();
-	}	
-//#endif
-
 // ---------------------------------------------------------
 // CNSmlDMCmds::AlertDataLC()
 // 
@@ -656,7 +510,6 @@
 
 	TPtr8 targeturi = HBufC8::NewLC ( (*aItemList[i].iTarget).Length())->Des();
 	targeturi.Append ( *aItemList[i].iTarget);	
-	if(targeturi.Compare(KNullDesC8)!=0)
 	DoTargetL ( itemPtr->item->target, targeturi  );
 	CleanupStack::PopAndDestroy();  // targeturi   
 	
@@ -1116,10 +969,7 @@
 		 alertCode == KNSmlDMAgentNextMessage ||
 		 alertCode == KNSmlDMAgentSessionAbortAlert ||
 		 alertCode == KNSmlDMAgentServerInitAlert ||
-		 alertCode == KNSmlDMAgentClientInitAlert 
-		 || alertCode == KNSmlDMAgentUserInputAlert 
-		 || alertCode == KNSmlDMAgentSingleChoiceAlert 
-		 || alertCode == KNSmlDMAgentMultipleChoiceAlert)
+		 alertCode == KNSmlDMAgentClientInitAlert )
 		{
 		HandleAlertsL(aAlert,statusID);
 		}
@@ -1160,10 +1010,7 @@
 void CNSmlDMCmds::HandleAlertsL( SmlAlert_t* aAlert, TInt& aStatusId)
 	    {
 	    TPtr8 alertCode = AlertCode( aAlert );
-	    if ( alertCode == KNSmlDMAgentDisplayAlert ||  alertCode == KNSmlDMAgentContinueOrAbortAlert 
-	            || alertCode == KNSmlDMAgentUserInputAlert
-	            || alertCode == KNSmlDMAgentSingleChoiceAlert
-	            || alertCode == KNSmlDMAgentMultipleChoiceAlert )
+	    if ( alertCode == KNSmlDMAgentDisplayAlert ||  alertCode == KNSmlDMAgentContinueOrAbortAlert )
 	        {
 	        if ( !aAlert->itemList )
 	            {
@@ -1186,15 +1033,7 @@
 	            {
 	            HandleConfirmationAlertL(aAlert,aStatusId);
 	            }
-	        else if(alertCode == KNSmlDMAgentUserInputAlert)
-	            {
-	            HandleUserInputalertL(aAlert,aStatusId);
-	            }
-	        else if(alertCode == KNSmlDMAgentSingleChoiceAlert
-	                || alertCode == KNSmlDMAgentMultipleChoiceAlert)
-	            {	            	            
-	            HandleChoiceAlertsL(aAlert,aStatusId);
-	            }
+
 	        else //
 	            {
 
@@ -1202,260 +1041,6 @@
 	        }
 	    }
 
-// ---------------------------------------------------------
-// CNSmlDMCmds::HandleChoiceAlertsL
-// Handles Choice Alert commands from a server.  
-// ---------------------------------------------------------
-void CNSmlDMCmds::HandleChoiceAlertsL( SmlAlert_t* aAlert, TInt& aStatusId)
-    {    
-    const TChar KDRSeparator('-');
-    const TChar KChoiceItemSeparator(',');
-    TPtr8 alertCode = AlertCode( aAlert );
-    // MINDT 
-    TInt mindt = AlertParameter( aAlert->itemList->item->data, KNSmlDMAgentMINDT );
-    // MAXDT 
-    TInt maxdt = AlertParameter( aAlert->itemList->item->data, KNSmlDMAgentMAXDT );
-    if ( mindt > maxdt )
-        {
-        maxdt = mindt;
-        }   
-    TSyncMLDlgNotifParams notifyParams;
-    TInt maxlen = AlertParameter( aAlert->itemList->item->data, KNSmlDMAgentMAXLEN );
-
-    //check if iDR, Default response parameter is there or not
-    //DRPresent is used for destroying how many items in the pop up stack 
-    TBool DRPresent = CheckDRPresence( aAlert->itemList->item->data, KNSmlDMAgentDR );
-    if( DRPresent )
-        {
-        TPtrC8 DrPtr = AlertDefaultResponseParam( aAlert->itemList->item->data, KNSmlDMAgentDR );       
-        HBufC8* hptr = HBufC8::NewLC( DrPtr.Length()+ 4 ); //cs 1dr
-        TPtr8 DrBuf(hptr->Des());                           
-        if(alertCode == KNSmlDMAgentMultipleChoiceAlert)
-            {       
-            _DBG_FILE("drbuf multichoice");                     
-            DrBuf.Append(KDRSeparator);         
-            DrBuf.Append(DrPtr);
-            DrBuf.Append(KDRSeparator);         
-            }
-        else
-            {           
-            DrBuf.Append(DrPtr);
-            }
-        HBufC* DrBuf16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( DrBuf  );
-        CleanupStack::PushL( DrBuf16 ); //cs 2dr
-        notifyParams.iDR = *DrBuf16;
-        }
-    HBufC8* alertData = AlertDataLC( aAlert->itemList ); //cs 1
-    if ( alertData->Length() == 0)
-        {
-        if( DRPresent )
-            {
-            CleanupStack::PopAndDestroy(2);//alertData,hptr,DrBuf16
-            }	        
-        CleanupStack::PopAndDestroy();//alertData	        
-        iStatusToServer->SetStatusCodeL( aStatusId, TNSmlError::ESmlStatusIncompleteCommand );
-        HandleAlertErrorL();
-        return;   
-        }
-		
-    HBufC8* alertDataWithMDT = HBufC8::NewLC(alertData->Length()+KNSmlDMAgentMINDT().Length()+KNSmlDMAgentMAXDT().Length()+6); //cs 2
-    TPtr8 dataBuf = alertDataWithMDT->Des();
-    dataBuf.Append(*alertData);
-    HBufC* dataBuf16 = NULL;
-    TRAPD(errC,  dataBuf16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L(dataBuf));
-    if( errC == KErrCorrupt )
-        {
-        if( DRPresent )
-            {
-            CleanupStack::PopAndDestroy(2); //alertData hptr,DrBuf16,alertDataWithMDT
-            }	        
-        CleanupStack::PopAndDestroy(2); //alertData alertDataWithMDT	        
-        iStatusToServer->SetStatusCodeL( aStatusId, TNSmlError::ESmlStatusCommandFailed );
-        return;
-        }
-    CleanupStack::PushL(dataBuf16);   //cs    3
-    //RNotifier notifier;
-    //User::LeaveIfError( notifier.Connect() );
-    //CleanupClosePushL(notifier); //cs
-    TPckgBuf<TBool> resBuf;    
-    /* 
-	//TO reduce cyclomatic complexity
-	if( dataBuf16->Length() > KSyncMLMaxServerMsgLength )
-        {
-        notifyParams.iServerMsg = (*dataBuf16).Left(KSyncMLMaxServerMsgLength) ;    
-        }
-    else
-        {
-        notifyParams.iServerMsg = *dataBuf16;   
-        }     */
-	TInt datalength = FindMaxLength(dataBuf16->Length(),KSyncMLMaxServerMsgLength);	
-	notifyParams.iServerMsg = (*dataBuf16).Left(datalength);  
-    notifyParams.iMaxTime = maxdt;
-    notifyParams.iMaxLength = maxlen;	                   
-    TRequestStatus status;      
-    _DBG_FILE("starting of choice alerts"); 
-    //Retrieve items list 
-    HBufC8* lengthbuf = HBufC8::NewLC(100); //cs 4
-    TInt NumItems = 0 ;
-    HBufC8* listitems = AlertChoiceItemsLC(aAlert->itemList,lengthbuf,NumItems);      //cs 5                  
-	if(!NumItems)
-	{
-	if( DRPresent )
-            {
-            CleanupStack::PopAndDestroy(2); 
-            }	        
-        CleanupStack::PopAndDestroy(5); 	       
-        iStatusToServer->SetStatusCodeL( aStatusId, TNSmlError::ESmlStatusIncompleteCommand );
-        return;
-	}
-    notifyParams.iNumberOfItems = NumItems;         
-    HBufC* choiceitemslength = NULL;    
-    TRAPD(errL,  choiceitemslength = CnvUtfConverter::ConvertToUnicodeFromUtf8L(lengthbuf->Des()));
-    if( errL/* == KErrCorrupt*/ )//useful for low memory and other cases
-        {
-        if( DRPresent )
-            {
-            CleanupStack::PopAndDestroy(2); 
-            }	        
-        CleanupStack::PopAndDestroy(5); 	       
-        iStatusToServer->SetStatusCodeL( aStatusId, TNSmlError::ESmlStatusCommandFailed );
-        return;
-        }
-    CleanupStack::PushL(choiceitemslength); //cs 6
-
-   /* if( choiceitemslength->Length() > KSyncMLChoiceItemsLengthBuffer )
-        {
-        notifyParams.iItemLength = (*choiceitemslength).Left(KSyncMLChoiceItemsLengthBuffer) ;    
-        }
-    else
-        {
-        notifyParams.iItemLength = *choiceitemslength;
-        }   */
-   datalength = FindMaxLength(choiceitemslength->Length(),KSyncMLChoiceItemsLengthBuffer);			
-   notifyParams.iItemLength = (*choiceitemslength).Left(datalength);  
-    if( alertCode == KNSmlDMAgentMultipleChoiceAlert)
-        {
-        _DBG_FILE("multiple choice alerts");    
-        notifyParams.iNoteType = ESyncMLMultiChoiceQuery;
-        }
-    else
-        {
-        _DBG_FILE("single choice alerts");  
-        notifyParams.iNoteType = ESyncMLSingleChoiceQuery;
-        }             
-    if(iChunk.Handle())
-        iChunk.Close();
-    else
-        {
-        TTime now;
-        now.HomeTime();
-        TInt64 rand = now.Int64();
-        // Use timestamp to get a unique seed
-        TInt randnum = Math::Rand( rand );
-        TBuf<KSyncMLMaxProfileNameLength> chunkname;
-        chunkname.AppendNum(randnum);
-        chunkname.Append(KChunkName);
-        notifyParams.iChunkName = chunkname;
-        TInt err1 = iChunk.CreateGlobal( chunkname,
-                KNSmlDmChoiceChunkMinSize, KNSmlDmChoiceChunkMaxSize );
-        DBG_FILE_CODE(err1,_S8("chunk creating error is "));
-        if( err1 < 0 && err1 != KErrAlreadyExists )
-            User::LeaveIfError(err1);
-        if( err1 == KErrAlreadyExists )
-            {    err1 = iChunk.OpenGlobal(chunkname,EFalse);
-            DBG_FILE_CODE(err1,_S8("chunk opening error is "));
-            User::LeaveIfError(err1);
-            }
-        }
-    TInt size1 = iChunk.Size();
-    DBG_FILE_CODE(size1,_S8("chunk size is "));
-
-    RMemWriteStream chunkStream ( iChunk.Base(), iChunk.Size() );
-    CleanupClosePushL ( chunkStream ); //cs
-    chunkStream.WriteL ( listitems->Des() );
-    CleanupStack::PopAndDestroy(1);//chunkstream 
-    TPckgBuf<TSyncMLDlgNotifParams> pkgBuf( notifyParams );                            
-    TSyncMLDlgNotifReturnParams emptybuf;
-    TSyncMLDlgNotifReturnParamsPckg resultBuf( emptybuf );
-    RNotifier notifier;
-    User::LeaveIfError( notifier.Connect() );
-    CleanupClosePushL(notifier); //cs  7
-    _DBG_FILE("starting choice notifier");  
-    notifier.StartNotifierAndGetResponse( status, KNSmlSyncDialogUid, pkgBuf, resultBuf );
-    _DBG_FILE("notifier returned"); 
-    User::WaitForRequest( status );
-    CleanupStack::PopAndDestroy(4);//notifier,lengthbuf,listitems,choiceitemslength
-    iChunk.Close();
-    TBuf8<KSyncMLMaxAlertResultLength> rettext;
-    rettext.Copy( resultBuf().irettext.Left( KSyncMLMaxAlertResultLength ) );
-    if ( status != KErrNone )
-        {
-        TInt error = TNSmlError::ESmlStatusOperationCancelled ;
-        iStatusToServer->SetStatusCodeL( aStatusId, error );
-        HandleAlertErrorL();
-        }
-    else
-        {
-        //For sending data to server
-        if( alertCode == KNSmlDMAgentMultipleChoiceAlert)
-            {
-            SendMultiChoiceDataToServerL(rettext,aStatusId);                   
-            }
-        else
-            {
-            SmlPcdata_t* data = NULL;
-            PcdataNewL( data, rettext);
-            CleanupStack::PushL( data );
-            iStatusToServer->AddItemDataL( aStatusId, data );
-            CleanupStack::PopAndDestroy(); //data           
-            }           
-        }    
-    if( DRPresent ) 
-        CleanupStack::PopAndDestroy(2); //hptr,DrBuf16
-
-    CleanupStack::PopAndDestroy(3); //notifier,alertData,alertDataWithMDT,dataBuf16     
-    }
-
-// ---------------------------------------------------------
-// CNSmlDMCmds::SendMultiChoiceDataToServerL
-// Sends Multiple Choice Alert status to server.  
-// ---------------------------------------------------------
-void CNSmlDMCmds::SendMultiChoiceDataToServerL(TDes8& aData,TInt& aStatusId)
-    {
-    const TChar KDRSeparator('-');
-    TPtrC8 temp1,temp2;
-    TInt prevcommapos = 0;
-    SmlPcdata_t* data = NULL;      
-    for(TInt i=0;i<aData.Length();i++)
-        {
-        //find a slash  
-
-        if(aData[i]== KDRSeparator)
-            {
-            if(prevcommapos)
-                {
-
-                temp1.Set(aData.Left(i));
-                temp2.Set(temp1.Right(i-(prevcommapos+1)));
-                prevcommapos=  i;
-                }
-            else //firsttime finding comma
-                {
-                prevcommapos=  i;
-                temp1.Set(aData.Left(i));
-                temp2.Set(temp1.Right(i));
-                }
-            //convert temp2 to number
-            PcdataNewL( data, temp2);
-            CleanupStack::PushL( data );
-            iStatusToServer->AddItemDataL( aStatusId, data );
-            CleanupStack::PopAndDestroy(); //data
-            data = NULL;
-
-            }
-        }                           
-
-    }
 
 // ---------------------------------------------------------
 // CNSmlDMCmds::HandleConfirmationAlertL
@@ -1493,9 +1078,7 @@
         return;
         }
     CleanupStack::PushL(dataBuf16);    
-    RNotifier notifier;
-    User::LeaveIfError( notifier.Connect() );
-    CleanupClosePushL(notifier);
+   
     TPckgBuf<TBool> resBuf;
     if( dataBuf16->Length() > KSyncMLMaxServerMsgLength )
         {
@@ -1510,131 +1093,38 @@
     TRequestStatus status;      
     //Note type to Query note
     notifyParams.iNoteType = ESyncMLYesNoQuery;
-    TPckgBuf<TSyncMLDlgNotifParams> pkgBuf( notifyParams );
-    notifier.StartNotifierAndGetResponse(status,KNSmlSyncDialogUid,pkgBuf,resBuf);
-    User::WaitForRequest(status);
-    TBool ret = resBuf();
-    if ( status == KErrCancel || status == KErrTimedOut )
+    TPckgBuf<TSyncMLDlgNotifParams> pkgBuf(notifyParams);
+    
+    
+    if(!IsHbSyncmlNotifierEnabledL())
+    {
+    	_DBG_FILE("starting notifier");  
+
+    }
+    else
+    {
+ 
+    TInt statusval;
+    ServerHbNotifierL(notifyParams.iNoteType, notifyParams.iServerMsg);
+    TInt err = RProperty::Get(dmagentuid, EHbDMSyncNotifierKeyStatusReturn, statusval);
+    	LOGSTRING2("get error status = %d", err);
+    	if(err == KErrNone)
+    		{
+    			status = statusval;
+    			LOGSTRING2("get statusval = %d", status.Int());
+    		}
+ 
+    }
+    
+    if (status == KErrCancel || status == KErrTimedOut)
         {
         TInt error = status == KErrCancel ? TNSmlError::ESmlStatusNotModified : TNSmlError::ESmlStatusRequestTimeout;
         iStatusToServer->SetStatusCodeL( aStatusId, error );
         HandleAlertErrorL();
         }
-    CleanupStack::PopAndDestroy(4); //alertData alertDataWithMDT,databuf16,notifier   
+    CleanupStack::PopAndDestroy(3); //alertData alertDataWithMDT,databuf16 
     }
 
-// ---------------------------------------------------------
-// CNSmlDMCmds::HandleUserInputalertL
-// Handles user Text Input Alert command from a server.  
-// ---------------------------------------------------------    
- void CNSmlDMCmds::HandleUserInputalertL( SmlAlert_t* aAlert, TInt& aStatusId)
-     {     
-     // MINDT 
-     TInt mindt = AlertParameter( aAlert->itemList->item->data, KNSmlDMAgentMINDT );
-     // MAXDT 
-     TInt maxdt = AlertParameter( aAlert->itemList->item->data, KNSmlDMAgentMAXDT );
-     if ( mindt > maxdt )
-         {
-         maxdt = mindt;
-         }   
-     TSyncMLDlgNotifParams notifyParams;
-     TInt maxlen = AlertParameter( aAlert->itemList->item->data, KNSmlDMAgentMAXLEN );
-     TInt InputType = AlertInputTypeParameter( aAlert->itemList->item->data, KNSmlDMAgentIT );
-     TInt EchoType = AlertEchoTypeParameter( aAlert->itemList->item->data, KNSmlDMAgentET );
-     //check if iDR, Default response parameter is there or not
-     //DRPresent is used for destroying how many items in the pop up stack 
-     TBool DRPresent = CheckDRPresence( aAlert->itemList->item->data, KNSmlDMAgentDR );
-     if( DRPresent )
-         {
-         TPtrC8 DrPtr = AlertDefaultResponseParam( aAlert->itemList->item->data, KNSmlDMAgentDR );       
-         HBufC8* hptr = HBufC8::NewLC( DrPtr.Length()+ 4 ); //cs
-         TPtr8 DrBuf(hptr->Des());                           
-
-         DrBuf.Append(DrPtr);
-
-         HBufC* DrBuf16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L( DrBuf  );
-         CleanupStack::PushL( DrBuf16 );//cs
-         notifyParams.iDR = *DrBuf16;
-         }
-     HBufC8* alertData = AlertDataLC( aAlert->itemList );//cs
-     if ( alertData->Length() == 0)
-         {
-         if( DRPresent )
-             {
-             CleanupStack::PopAndDestroy(3);//alertData,hptr,DrBuf16
-             }
-         else
-             {
-             CleanupStack::PopAndDestroy();//alertData
-             }
-         iStatusToServer->SetStatusCodeL( aStatusId, TNSmlError::ESmlStatusIncompleteCommand );
-         HandleAlertErrorL();
-         return;   
-         }
-     HBufC8* alertDataWithMDT = HBufC8::NewLC(alertData->Length()+KNSmlDMAgentMINDT().Length()+KNSmlDMAgentMAXDT().Length()+6);//cs
-     TPtr8 dataBuf = alertDataWithMDT->Des();
-     dataBuf.Append(*alertData);
-     HBufC* dataBuf16 = NULL;
-     TRAPD(errC,  dataBuf16 = CnvUtfConverter::ConvertToUnicodeFromUtf8L(dataBuf));
-     if( errC == KErrCorrupt )
-         {
-         if( DRPresent )
-             {
-             CleanupStack::PopAndDestroy(4); //alertData hptr,DrBuf16,alertDataWithMDT
-             }
-         else
-             {
-             CleanupStack::PopAndDestroy(2); //alertData alertDataWithMDT
-             }
-         iStatusToServer->SetStatusCodeL( aStatusId, TNSmlError::ESmlStatusCommandFailed );
-         return;
-         }
-     CleanupStack::PushL(dataBuf16);    //cs
-     RNotifier notifier;
-     User::LeaveIfError( notifier.Connect() );
-     CleanupClosePushL(notifier); //cs
-     TPckgBuf<TBool> resBuf;     
-     if( dataBuf16->Length() > KSyncMLMaxServerMsgLength )
-         {
-         notifyParams.iServerMsg = (*dataBuf16).Left(KSyncMLMaxServerMsgLength) ;    
-         }
-     else
-         {
-         notifyParams.iServerMsg = *dataBuf16;   
-         }     
-     notifyParams.iMaxTime = maxdt;
-     notifyParams.iMaxLength = maxlen;
-     notifyParams.iET = EchoType;
-     notifyParams.iIT = InputType;       
-     TRequestStatus status;      
-     //Note type to Text input note
-     notifyParams.iNoteType = ESyncMLInputQuery;
-     TPckgBuf<TSyncMLDlgNotifParams> pkgBuf( notifyParams );
-     TSyncMLDlgNotifReturnParams emptybuf;
-     TSyncMLDlgNotifReturnParamsPckg resultBuf( emptybuf );
-     notifier.StartNotifierAndGetResponse( status, KNSmlSyncDialogUid, pkgBuf, resultBuf );
-     User::WaitForRequest( status );
-     TBuf8<KSyncMLMaxDefaultResponseMsgLength> rettext;
-     rettext.Copy( resultBuf().irettext.Left( KSyncMLMaxDefaultResponseMsgLength ) );
-     if ( status == KErrCancel || status == KErrTimedOut || status ==  KErrAbort )
-         {
-         TInt error = TNSmlError::ESmlStatusOperationCancelled ;
-         iStatusToServer->SetStatusCodeL( aStatusId, error );
-         HandleAlertErrorL();
-         }
-     //For sending data to server    
-     SmlPcdata_t* data = NULL;
-     PcdataNewL( data, rettext);
-     CleanupStack::PushL( data );
-     iStatusToServer->AddItemDataL( aStatusId, data );
-     CleanupStack::PopAndDestroy(); //data
-     if( DRPresent ) 
-         CleanupStack::PopAndDestroy(6); //notifier,alertData,alertDataWithMDT,dataBuf16,hptr,DrBuf16
-     else
-         //#endif
-         CleanupStack::PopAndDestroy(4); //notifier,alertData,alertDataWithMDT,dataBuf16     
-     }
-
  // ---------------------------------------------------------
  // CNSmlDMCmds::HandleDisplayAlertL
  // Handles Display Alert command from a server.  
@@ -1671,9 +1161,7 @@
          return;
          }
      CleanupStack::PushL(dataBuf16);    
-     RNotifier notifier;
-     User::LeaveIfError( notifier.Connect() );
-     CleanupClosePushL(notifier);
+    
      TPckgBuf<TBool> resBuf;
      if( dataBuf16->Length() > KSyncMLMaxServerMsgLength )
          {
@@ -1688,11 +1176,70 @@
      TRequestStatus status;              
      notifyParams.iNoteType = ESyncMLInfoNote;
      TPckgBuf<TSyncMLDlgNotifParams> pkgBuf( notifyParams );
-     notifier.StartNotifierAndGetResponse(status,KNSmlSyncDialogUid,pkgBuf,resBuf);
-     User::WaitForRequest(status);
-     CleanupStack::PopAndDestroy(4); //alertData alertDataWithMDT,databuf16,notifier     
-     }
-	
+    if(!IsHbSyncmlNotifierEnabledL())
+        {
+     
+        }
+    else
+        {
+        LOGSTRING("HandleDisplayAlertL Start test 1 start");  
+        ServerHbNotifierL(notifyParams.iNoteType, notifyParams.iServerMsg);
+        LOGSTRING("HandleDisplayAlertL Start test 2 end");
+        }
+    
+    CleanupStack::PopAndDestroy(3); //alertData alertDataWithMDT,databuf16   
+
+
+    }
+
+void CNSmlDMCmds::ServerHbNotifierL(TSyncMLDlgNoteTypes& aNotetype, TDesC& aServerMsg)
+    
+    {
+				LOGSTRING("HandleDisplayAlertL ServerHbNotifier start");                
+        RDmDevDialog DmDevdialog;
+        TInt err = DmDevdialog.OpenL();
+        User::LeaveIfError(err);
+        TRequestStatus status = KRequestPending;
+        if(aNotetype == ESyncMLInfoNote)
+            {
+        DmDevdialog.ShowDisplayAlert(aServerMsg,status);
+            }
+            
+        else 
+            {
+        TInt timeout = 30; // dummy
+        TBuf<30> header; // dummy
+        DmDevdialog.ShowConfirmationAlert(timeout,header,aServerMsg,status);
+            }
+       
+        User::WaitForRequest(status);
+
+DmDevdialog.Close();
+        LOGSTRING("HandleDisplayAlertL ServerHbNotifier end");
+
+}
+TBool CNSmlDMCmds::IsHbSyncmlNotifierEnabledL()
+    {
+    CRepository * rep =
+            CRepository::NewLC(KCRUidDeviceManagementInternalKeys);
+
+    TInt notifierenabled = KErrNone;
+
+    TInt err = rep->Get(KDevManEnableHbNotifier, notifierenabled);
+
+    CleanupStack::PopAndDestroy(rep);
+
+    if (err == KErrNone && notifierenabled)
+        {
+        return ETrue;
+        }
+    else
+        {
+        return EFalse;
+        }
+
+    }
+
 // ---------------------------------------------------------
 // CNSmlDMCmds::ProcessSyncL()
 // Process received Add, Replace and Delete commands
@@ -2289,131 +1836,3 @@
 		aStatusCode = TNSmlError::ESmlStatusIncompleteCommand;
 		}
 	}
-
-// ---------------------------------------------------------------------------------------------------------------
-// CNSmlDMCmds::AlertChoiceItemsLC()
-//  Retrieves the choice alerts information 
-// ---------------------------------------------------------------------------------------------------------------
-HBufC8* CNSmlDMCmds::AlertChoiceItemsLC(SmlItemList_t* aItemList,HBufC8*& aLengthBuf ,TInt& aNumItems ) const
-    {
-    /*cleanupstack contains
-     * top : tempdata
-     *      : unicodeData
-     * bottom: aLengthBuf
-     */
-	 const TChar KDRSeparator('-');
-const TChar KChoiceItemSeparator(',');
-    HBufC8* unicodeData = HBufC8::NewLC(200);
-    HBufC8* tempdata = NULL;
-    HBufC8* lengthbuf = aLengthBuf;
-    TBuf<20> lennum; 
-    SmlItemList_t* temp;
-    if (  aItemList )//Not null
-        {
-        if(aItemList->next)//removing header of dialog
-            {
-            temp = aItemList->next;
-            while(temp->next)
-                {
-                if (  temp->next->item )
-                    {
-                    if (  temp->next->item->data )
-                        {
-                        if (  temp->next->item->data->content )
-                            {
-                            TPtr8 data( (TUint8*)  temp->next->item->data->content,  temp->next->item->data->length, temp->next->item->data->length );
-                            TrimRightSpaceAndNull( data );
-                            tempdata = data.AllocLC();
-                            TInt length = data.Length();//item length
-                            //add length to buffer and add comma 
-                            if(lengthbuf->Des().MaxLength() > (lengthbuf->Des().Length() + 5/*bytes*/) )
-                                {
-                                if(length > KSyncMLMaxChoiceItemLength ) // choice item length restricting to 200
-                                    {
-                                    lennum.Num(KSyncMLMaxChoiceItemLength);
-                                    lengthbuf->Des().Append(lennum);
-                                    lengthbuf->Des().Append(KChoiceItemSeparator);                                    
-                                    }
-                                else
-                                    {
-                                    lennum.Num(length);                            
-                                    lengthbuf->Des().Append(lennum);
-                                    lengthbuf->Des().Append(KChoiceItemSeparator);
-                                    }
-                                }
-                            else
-                                {
-                                //Pop the aLengthBuf from cleanupstack and realloc
-                                CleanupStack::Pop(3); //tempdata,unicodeData,aLengthBuf
-                                lengthbuf = lengthbuf->ReAllocL(lengthbuf->Des().Length() + 100);
-                                CleanupStack::PushL(lengthbuf);
-                                CleanupStack::PushL(unicodeData);
-                                CleanupStack::PushL(tempdata);
-                                if(length > KSyncMLMaxChoiceItemLength ) // choice item length restricting to 200
-                                    {
-                                    lengthbuf->Des().AppendNum(KSyncMLMaxChoiceItemLength);
-                                    lengthbuf->Des().Append(KChoiceItemSeparator);  
-                                    }
-                                else
-                                    {
-                                    lengthbuf->Des().AppendNum(length); //Append(length);
-                                    lengthbuf->Des().Append(KChoiceItemSeparator);
-                                    }
-                                }
-                            if(unicodeData->Des().MaxLength()> (unicodeData->Des().Length() + length))
-                                {
-                                if(length > KSyncMLMaxChoiceItemLength ) // choice item length restricting to 200
-                                    {
-                                    unicodeData->Des().Append(tempdata->Des().Left(KSyncMLMaxChoiceItemLength)); 
-                                    }
-                                else
-                                    {
-                                    unicodeData->Des().Append(tempdata->Des());
-                                    }
-                                }
-                            else
-                                {
-                                CleanupStack::Pop(2);//tempdata,unicodeData
-                                unicodeData = unicodeData->ReAllocL(unicodeData->Des().Length() + length + 200);
-                                CleanupStack::PushL(unicodeData);
-                                CleanupStack::PushL(tempdata);
-                                if(length > KSyncMLMaxChoiceItemLength ) // choice item length restricting to 200
-                                    {
-                                    unicodeData->Des().Append(tempdata->Des().Left(KSyncMLMaxChoiceItemLength)); 
-                                    }
-                                else
-                                    {
-                                    unicodeData->Des().Append(tempdata->Des());
-                                    }
-                                }
-                            CleanupStack::PopAndDestroy(tempdata);
-                            aNumItems++;
-                            data.Zero();
-                            }
-                        }
-                    }
-                temp = temp->next;
-                }
-            }
-        }  
-        _DBG_FILE("CNSmlDMCmds::AlertDataLC: end"); 
-        aLengthBuf = lengthbuf;
-        return unicodeData;          
-    }
-	
-// ---------------------------------------------------------------------------------------------------------------
-// CNSmlDMCmds::FindMaxLength()
-// ---------------------------------------------------------------------------------------------------------------	
-TInt CNSmlDMCmds::FindMaxLength(TInt aSourceLength, TInt aDestLength)
-	{
-	TInt length = 0;
-	if(aSourceLength > aDestLength )
-	 {
-	  length = aDestLength;
-	 }
-	else
-	 {
-	  length = aSourceLength;	  
-	 }
-	return length;
-	}