diff -r b183ec05bd8c -r 19bba8228ff0 syncmlfw/common/syncagent/src/nsmlstatuscontainer.cpp --- 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 +#include +#include //#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