--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingfw/wappushfw/PushMsgEntry/src/CWapPushMsgUtils.cpp Mon Jan 18 20:36:02 2010 +0200
@@ -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 <smut.h>
+#include <msvstd.h>
+#include <msventry.h>
+#include <msvids.h>
+#include <msvuids.h>
+#include <watcher.h>
+#include <pushentry.h>
+
+#include <push/pushlog.h>
+#include <push/cwappushmsgutils.h>
+
+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
+ }
+