--- 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