syncmlfw/common/syncagent/src/nsmlstatuscontainer.cpp
branchRCL_3
changeset 26 19bba8228ff0
parent 25 b183ec05bd8c
--- a/syncmlfw/common/syncagent/src/nsmlstatuscontainer.cpp	Tue Aug 31 16:04:06 2010 +0300
+++ b/syncmlfw/common/syncagent/src/nsmlstatuscontainer.cpp	Wed Sep 01 12:27:42 2010 +0100
@@ -16,13 +16,18 @@
 */
 
 
-
+#include <utf.h>
+#include <DevManInternalCRKeys.h>
+#include <centralrepository.h>
 //#include "nsmlcliagdefines.h"
 #include "NSmlStatusContainer.h"
 #include "nsmlcliagconstants.h"
 #include "nsmlerror.h"
 #include "smlmetinfdtd.h"
 
+// CONSTANTS
+_LIT8(KDbPersonal, "100000" );
+
 // ---------------------------------------------------------
 // CNSmlStatusContainer::CNSmlStatusContainer
 // Constructor, nothing special in here.
@@ -202,9 +207,57 @@
 			{
 			(*iStatusArray)[aEntryID-1].statusIsFixed = ETrue;
 			}
+ // TargertUri Fix
+		
+	TPtrC8 cmd( (TUint8*) (*iStatusArray)[aEntryID-1].status->cmd->content, (*iStatusArray)[aEntryID-1].status->cmd->length );
+	if ( cmd == KNSmlAgentExec )
+	{ 
+		CRepository* cenrep = NULL;
+  	TInt err(KErrNone);
+	  TRAP(err, cenrep = CRepository::NewL( KCRUidDeviceManagementInternalKeys ));
+	  if(err == KErrNone)
+	  {
+	  	TBuf8<256> targetPath;	
+    	TInt result = cenrep->Get( KNSmlDMSCOMOTargetRef, targetPath );    	
+    	if((targetPath.Length()) && (result == KErrNone))
+			{					
+				TPtrC8 sourcePath( (TUint8*) (*iStatusArray)[aEntryID-1].status->targetRefList->targetRef->content, (*iStatusArray)[aEntryID-1].status->targetRefList->targetRef->length );
+			
+				(*iStatusArray)[aEntryID-1].status->itemList = new ( ELeave ) SmlItemList_t;
+				(*iStatusArray)[aEntryID-1].status->itemList->item = new( ELeave ) SmlItem_t;
+			
+				(*iStatusArray)[aEntryID-1].status->itemList->item->source = new( ELeave ) SmlSource_t; 
+    		(*iStatusArray)[aEntryID-1].status->itemList->item->source->locURI = new( ELeave ) SmlPcdata_t;
+	   		(*iStatusArray)[aEntryID-1].status->itemList->item->source->locURI->SetDataL( sourcePath );
+    		(*iStatusArray)[aEntryID-1].status->itemList->item->source->locURI->contentType = SML_PCDATA_OPAQUE;   
+    		(*iStatusArray)[aEntryID-1].status->itemList->item->source->locURI->extension = SML_EXT_UNDEFINED;
+    		(*iStatusArray)[aEntryID-1].status->itemList->item->source->locName = NULL;
+    		
+    		_LIT8( KNSmlNull,	"null" );
+    		if(targetPath.Compare( KNSmlNull )!= 0)
+    		{
+    			(*iStatusArray)[aEntryID-1].status->itemList->item->target = new( ELeave ) SmlTarget_t; 
+    			(*iStatusArray)[aEntryID-1].status->itemList->item->target->locURI = new( ELeave ) SmlPcdata_t;
+	   			(*iStatusArray)[aEntryID-1].status->itemList->item->target->locURI->SetDataL( targetPath );
+    			(*iStatusArray)[aEntryID-1].status->itemList->item->target->locURI->contentType = SML_PCDATA_OPAQUE;   
+    			(*iStatusArray)[aEntryID-1].status->itemList->item->target->locURI->extension = SML_EXT_UNDEFINED;
+    			(*iStatusArray)[aEntryID-1].status->itemList->item->target->locName = NULL;
+    		}
+ 				(*iStatusArray)[aEntryID-1].status->targetRefList = NULL;
+
+ 				_LIT8(KNullString, "");
+    		result = cenrep->Set( KNSmlDMSCOMOTargetRef, KNullString ); 
+    	}
+    	delete cenrep;
+    	cenrep = NULL;
 		}
+	}
+	
+	 // TargertUri Fix Ends
+	 
 	CleanupStack::PopAndDestroy(); //statusCode
 	}
+	}
 // ---------------------------------------------------------
 // CNSmlStatusContainer::SetChalL()
 // Creates Chal element 
@@ -484,6 +537,44 @@
 	return statusPresents;
 	}
 // ---------------------------------------------------------
+// CNSmlStatusContainer::FillItemDataL()
+// Populates the Item structure
+// ---------------------------------------------------------
+EXPORT_C void CNSmlStatusContainer::FillItemDataL( SmlItem_t*& aItem )
+    {
+    //Source
+    aItem->source = new( ELeave ) SmlSource_t;
+    SmlPcdata_t* srcdata = new( ELeave ) SmlPcdata_t;
+    srcdata->SetDataL( KDbPersonal );
+    srcdata->contentType = SML_PCDATA_OPAQUE;   
+    srcdata->extension = SML_EXT_UNDEFINED; 
+    CopyPcdataL( srcdata, aItem->source->locURI );
+    
+    // Source Parent
+    aItem->sourceParent = new( ELeave ) SmlSourceParent_t;
+    SmlPcdata_t* srcprntdata = new( ELeave ) SmlPcdata_t;
+    srcprntdata->SetDataL( _L8("/") );
+    srcprntdata->contentType = SML_PCDATA_OPAQUE;   
+    srcprntdata->extension = SML_EXT_UNDEFINED; 
+    CopyPcdataL( srcprntdata, aItem->sourceParent->locURI );   
+    }
+// ---------------------------------------------------------
+// CNSmlStatusContainer::StatusItem()
+// Retrieve the Status element bearing the ID provided
+// ---------------------------------------------------------
+EXPORT_C SmlStatus_t* CNSmlStatusContainer::StatusItem( TInt aStatusID )
+    {
+    
+    if( ( iStatusArray ) && 
+        ( iStatusArray->Count() <= aStatusID ) )
+        {
+        
+        return (*iStatusArray)[aStatusID-1].status;
+        }
+    
+    return NULL;
+    }
+// ---------------------------------------------------------
 // CNSmlStatusContainer::CreatePcdataL()
 // Creates Pcdata 
 // Created element is not pushed to Cleanup stack