diff -r 9f5ae1728557 -r db3f5fa34ec7 messagingfw/wappushfw/PushMsgEntry/src/CWapPushMsgUtils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/wappushfw/PushMsgEntry/src/CWapPushMsgUtils.cpp Wed Nov 03 22:41:46 2010 +0530 @@ -0,0 +1,136 @@ +// Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +EXPORT_C CWapPushMsgUtils* CWapPushMsgUtils::NewL() +/** +Allocates and constructs a new Wap Push Message Utility object. + +@return +New Wap Push Message Utility object. + +@leave CWapPushMsgUtils::ConstructL + +*/ + { + CWapPushMsgUtils* self = new (ELeave) CWapPushMsgUtils(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + + +EXPORT_C CWapPushMsgUtils::CWapPushMsgUtils() + :iPushServiceId(KMsvNullIndexEntryId), iPushFolderId(KMsvNullIndexEntryId) +/** +Constructor. +*/ + { + } + + +EXPORT_C void CWapPushMsgUtils::ConstructL() +/** +Second stage constructor. Creates CMsvSession and CMsvEntry. + +@leave CMsvSession::OpenSyncL +@leave CMsvSession::GetEntryL +@leave CMsvSession::SetSortTypeL + +*/ + { + iMsvSession = CMsvSession::OpenSyncL(*this); + iMsvEntry = iMsvSession->GetEntryL(KMsvRootIndexEntryId); + + // Ensure that our CMsvEntry can always see invisible entries + TMsvSelectionOrdering sort; + sort.SetShowInvisibleEntries(ETrue); + iMsvEntry->SetSortTypeL(sort); + } + + +EXPORT_C CWapPushMsgUtils::~CWapPushMsgUtils() +/** +Destructor. +*/ + { + delete iMsvEntry; + delete iMsvSession; + } + + +EXPORT_C void CWapPushMsgUtils::GetServiceIdL(TUid aMtm, TMsvId& aServiceId) +/** +Gets the Id of the Push Message Service Entry. + +If there is no service entry then KMsvNullIndexEntry is returned. + +@param aMtm +MTM type of the required service entry + +@param aServiceId +Id of the service entry +*/ + { + //Returns the Service IDs of MTM aMtm + + if (iPushServiceId != KMsvNullIndexEntryId) + { + aServiceId = iPushServiceId; + return; + } + + aServiceId = KMsvNullIndexEntryId; + + iMsvEntry->SetEntryL(KMsvRootIndexEntryId); + + //Get the children on the Root Index Entry + CMsvEntrySelection* selection = iMsvEntry->ChildrenWithTypeL(KUidMsvServiceEntry); + CleanupStack::PushL(selection); + + TInt count = selection->Count(); + + //Find an entry for MTM aMtm + for (TInt curChild = 0; curChild < count && (aServiceId == KMsvNullIndexEntryId ); curChild++) + { + iMsvEntry->SetEntryL(selection->At(curChild)); + + if (iMsvEntry->Entry().iMtm == aMtm) + { + TMsvId id = iMsvEntry->Entry().Id(); + + if (aServiceId == KMsvNullIndexEntryId) + aServiceId = id; + } + } + iMsvEntry->SetEntryL(KMsvRootIndexEntryId);//Point our entry to something safe + + //If the service Id is not set and we're not doing not self assignment store the ID + if (aServiceId != KMsvNullIndexEntryId && (&iPushServiceId != &aServiceId) ) + iPushServiceId = aServiceId; + CleanupStack::PopAndDestroy(); //selection + } +