--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgservices/msgserviceapp/src/msgstorehandler.cpp Tue Aug 31 15:11:31 2010 +0300
@@ -0,0 +1,196 @@
+/*
+ * Copyright (c) 2008 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: Reads message information from message store.
+ *
+ */
+
+#include <msvids.h>
+#include <mmsconst.h>
+#include <SendUiConsts.h>
+
+#include "msgstorehandler.h"
+#include "msgbiouids.h"
+#include "convergedmessage.h"
+
+//----------------------------------------------------------------------------
+// MsgStoreHandler::MsgStoreHandler
+// @see header
+//----------------------------------------------------------------------------
+MsgStoreHandler::MsgStoreHandler():
+iMsvSession(NULL)
+ {
+ InitL();
+ }
+
+//----------------------------------------------------------------------------
+// MsgStoreHandler::~MsgStoreHandler
+// @see header
+//----------------------------------------------------------------------------
+MsgStoreHandler::~MsgStoreHandler()
+ {
+ if(iMsvSession)
+ {
+ delete iMsvSession;
+ iMsvSession = NULL;
+ }
+ }
+
+//----------------------------------------------------------------------------
+// MsgStoreHandler::InitL
+// @see header
+//----------------------------------------------------------------------------
+void MsgStoreHandler::InitL( )
+ {
+ iMsvSession = CMsvSession::OpenSyncL(*this);
+ }
+
+//----------------------------------------------------------------------------
+// MsgStoreHandler::markAsReadAndGetType
+// @see header
+//----------------------------------------------------------------------------
+void MsgStoreHandler::markAsReadAndGetType(int msgId,
+ int& msgType,
+ int& msgSubType)
+ {
+ msgType = ConvergedMessage::None;
+
+ CMsvEntry* cEntry = NULL;
+ TRAPD(err, cEntry = iMsvSession->GetEntryL(msgId));
+ if ( err == KErrNone)
+ {
+ TMsvEntry entry = cEntry->Entry();
+ if ( entry.Unread() )
+ {
+ // Mark the entry as read
+ entry.SetUnread( EFalse );
+ cEntry->ChangeL( entry );
+ }
+ // extract message type
+ extractMsgType(entry,msgType,msgSubType);
+ }
+
+ delete cEntry;
+ }
+
+//----------------------------------------------------------------------------
+// MsgStoreHandler::HandleSessionEventL
+// @see header
+//----------------------------------------------------------------------------
+void MsgStoreHandler::HandleSessionEventL(TMsvSessionEvent /*aEvent*/,
+ TAny* /*aArg1*/, TAny* /*aArg2*/, TAny* /*aArg3*/)
+ {
+ // Nothing to do
+ }
+
+//----------------------------------------------------------------------------
+// MsgStoreHandler::extractMsgType
+// @see header
+//----------------------------------------------------------------------------
+void MsgStoreHandler::extractMsgType(const TMsvEntry& entry,
+ int& msgType,
+ int& msgSubType)
+ {
+ msgType = ConvergedMessage::None;
+ msgSubType = ConvergedMessage::None;
+
+ switch(entry.iMtm.iUid)
+ {
+ case KSenduiMtmSmsUidValue:
+ msgType = ConvergedMessage::Sms;
+ break;
+ case KSenduiMtmBtUidValue:
+ msgType = ConvergedMessage::BT;
+ break;
+ case KSenduiMtmMmsUidValue:
+ msgType = ConvergedMessage::Mms;
+ break;
+ case KSenduiMMSNotificationUidValue:
+ msgType = ConvergedMessage::MmsNotification;
+ break;
+ case KSenduiMtmBioUidValue:
+ {
+ if (entry.iMtmData1 == KSenduiMtmBtUidValue)
+ {
+ msgType = ConvergedMessage::BT;
+
+ if (entry.iBioType == KMsgBioUidVCard.iUid)
+ {
+ msgSubType = ConvergedMessage::VCard;
+ }
+ else if (entry.iBioType == KMsgBioUidVCalendar.iUid)
+ {
+ msgSubType = ConvergedMessage::VCal;
+ }
+
+ break;
+ }
+ msgType = ConvergedMessage::BioMsg;
+
+ // based on the biotype uid set message type
+ if(entry.iBioType == KMsgBioUidRingingTone.iUid)
+ {
+ msgSubType = ConvergedMessage::RingingTone;
+ }
+ else if(entry.iBioType == KMsgBioProvisioningMessage.iUid)
+ {
+ msgSubType = ConvergedMessage::Provisioning;
+ }
+ else if (entry.iBioType == KMsgBioUidVCard.iUid)
+ {
+ msgSubType = ConvergedMessage::VCard;
+ }
+ else if (entry.iBioType == KMsgBioUidVCalendar.iUid)
+ {
+ msgSubType = ConvergedMessage::VCal;
+ }
+ }
+ break;
+ default:
+ msgType = ConvergedMessage::None;
+ break;
+ }
+ }
+
+//----------------------------------------------------------------------------
+// MsgStoreHandler::deleteMessage
+// @see header
+//----------------------------------------------------------------------------
+void MsgStoreHandler::deleteMessage(int msgId)
+ {
+ iMsvSession->RemoveEntry(msgId);
+ }
+
+//----------------------------------------------------------------------------
+// MsgStoreHandler::isDraftMessage
+// @see header
+//----------------------------------------------------------------------------
+bool MsgStoreHandler::isDraftMessage(int msgId)
+{
+ bool draftmsg = false;
+ CMsvEntry* cEntry = NULL;
+ TRAPD(err, cEntry = iMsvSession->GetEntryL(msgId));
+ if ( err == KErrNone)
+ {
+ TMsvEntry msvEntry = cEntry->Entry();
+ TMsvId parent = msvEntry.Parent();
+ if(parent == KMsvDraftEntryIdValue)
+ {
+ draftmsg = true;
+ }
+ }
+
+ delete cEntry;
+ return draftmsg;
+}
+// End of file