messagingapp/msgui/unifiedviewer/src/univiewerfeeder_p.cpp
branchRCL_3
changeset 26 ebe688cedc25
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/unifiedviewer/src/univiewerfeeder_p.cpp	Tue Aug 31 15:11:31 2010 +0300
@@ -0,0 +1,368 @@
+/*
+ * Copyright (c) 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: Feeder Private class for unified viewer. Fetches data from the
+ *              message store for the given message id.
+ *
+ */
+#include "univiewerfeeder_p.h"
+// SYSTEM INCLUDES
+#include <msvstd.h>
+#include <msvids.h>
+
+// USER INCLUDES
+#include "nativemessageconsts.h"
+#include "univiewerfeeder.h"
+#include "unidatamodelloader.h"
+#include "msgcontacthandler.h"
+#include "debugtraces.h"
+#include "msgbiouids.h"
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::UniViewerFeederPrivate
+// @see header file
+// ---------------------------------------------------------------------------
+UniViewerFeederPrivate::UniViewerFeederPrivate(qint32 msgId,
+                                               UniViewerFeeder* feeder) :
+    q_ptr(feeder), mSlideCount(0), mSession(NULL)
+{
+    TRAP_IGNORE(initL(msgId));
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::~UniViewerFeederPrivate
+// @see header file
+// ---------------------------------------------------------------------------
+UniViewerFeederPrivate::~UniViewerFeederPrivate()
+{
+    q_ptr = NULL;
+    clearContent();
+    if(mPluginLoader)
+    {
+        delete mPluginLoader;
+        mPluginLoader = NULL;
+    }
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::initL
+// Symbian specific constructions
+// ---------------------------------------------------------------------------
+//
+void UniViewerFeederPrivate::initL(qint32 msgId)
+{
+    QDEBUG_WRITE("UniViewerFeederPrivate::initL start");
+    TMsvId serviceId = KMsvNullIndexEntryId;
+    mPluginInterface = NULL;
+    mMsgId = msgId;
+    mPluginLoader = new UniDataModelLoader();
+    mPluginInterface = mPluginLoader->getDataModelPlugin(ConvergedMessage::Sms);
+
+    mSession = mPluginInterface->session();
+    mSession->GetEntry(msgId, serviceId, mEntry);
+    QDEBUG_WRITE("UniViewerFeederPrivate::initL end");
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::msgType
+// Returns the message type.
+// ---------------------------------------------------------------------------
+qint32 UniViewerFeederPrivate::msgType()
+{
+    return mEntry.iMtm.iUid;
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::isIncoming
+// Returns if it is a incoming message.
+// ---------------------------------------------------------------------------
+bool UniViewerFeederPrivate::isIncoming()
+{
+    if (mEntry.Parent() == KMsvGlobalInBoxIndexEntryId)
+    {
+        return true;
+    }
+    return false;
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::priority
+// Returns the message priority.
+// ---------------------------------------------------------------------------
+int UniViewerFeederPrivate::priority()
+{
+    if (mEntry.Priority() == EMsvHighPriority)
+    {
+        return ConvergedMessage::High;
+    }
+    else if (mEntry.Priority() == EMsvLowPriority)
+    {
+        return ConvergedMessage::Low;
+    }
+    return ConvergedMessage::Normal;
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::subject
+// Returns the message subject.
+// ---------------------------------------------------------------------------
+QString UniViewerFeederPrivate::subject()
+{
+    return mPluginInterface->subject();
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::subject
+// Returns the message subject.
+// ---------------------------------------------------------------------------
+
+int UniViewerFeederPrivate::sendingState()
+{
+    return mEntry.SendingState();
+}
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::timeStamp
+// Returns the time stamp
+// ---------------------------------------------------------------------------
+QDateTime UniViewerFeederPrivate::timeStamp()
+{
+
+    return mPluginInterface->timeStamp();
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::fetchDetailsL
+// Fetches message details from the store.
+// ---------------------------------------------------------------------------
+void UniViewerFeederPrivate::fetchDetails()
+{
+    QDEBUG_WRITE("UniViewerFeederPrivate fetchDetailsL : SMS start");
+    if (msgType() == KSenduiMtmSmsUidValue || (msgType() == KSenduiMtmBioUidValue
+        && mEntry.iBioType == KMsgBioNokiaServiceMessage.iUid)) {
+        QString body;
+        mPluginInterface->body(body);
+        q_ptr->emitMsgBody(body);
+    }
+    QDEBUG_WRITE("UniViewerFeederPrivate fetchDetailsL : SMS END");
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::hasAttachments
+// @see header file
+// ---------------------------------------------------------------------------
+bool UniViewerFeederPrivate::hasAttachments()
+{
+    return mPluginInterface->hasAttachment();
+}
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::attachmentsList
+// @see header file
+// ---------------------------------------------------------------------------
+UniMessageInfoList UniViewerFeederPrivate::attachmentsList()
+{
+    return mPluginInterface->attachmentList();
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::attachmentCount
+// @see header file
+// ---------------------------------------------------------------------------
+int UniViewerFeederPrivate::attachmentCount()
+{
+    return mPluginInterface->attachmentCount();
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::objectsList
+// @see header file
+// ---------------------------------------------------------------------------
+UniMessageInfoList UniViewerFeederPrivate::objectsList()
+{
+    return mPluginInterface->objectList();
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::objectCount
+// @see header file
+// ---------------------------------------------------------------------------
+int UniViewerFeederPrivate::objectCount()
+{
+    return mPluginInterface->objectCount();
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::slideCount
+// @see header file
+// ---------------------------------------------------------------------------
+int UniViewerFeederPrivate::slideCount()
+{
+    return mSlideCount;
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::slideContent
+// @see header file
+// ---------------------------------------------------------------------------
+UniMessageInfoList UniViewerFeederPrivate::slideContent(int slidenum)
+{
+    return mPluginInterface->slideContent(slidenum);
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::updateContent
+// @see header file
+// ---------------------------------------------------------------------------
+void UniViewerFeederPrivate::updateContent(qint32 msgId)
+{
+  
+    if (msgId != mMsgId)
+    {
+        mMsgId = msgId;
+        TMsvId serviceId = KMsvNullIndexEntryId;
+        mSession->GetEntry(msgId, serviceId, mEntry);
+        clearContent();
+    }
+
+    if (msgType() == KSenduiMtmSmsUidValue)
+    {
+        mPluginInterface = mPluginLoader->getDataModelPlugin(ConvergedMessage::Sms);
+        mPluginInterface->setMessageId(msgId);
+    }
+
+    else if (msgType() == KSenduiMtmMmsUidValue) {
+        mPluginInterface = mPluginLoader->getDataModelPlugin(ConvergedMessage::Mms);
+        mPluginInterface->setMessageId(msgId);
+        mSlideCount = mPluginInterface->slideCount();
+
+    }
+    else if (msgType() == KSenduiMtmBioUidValue && mEntry.iBioType
+        == KMsgBioNokiaServiceMessage.iUid) {
+        mPluginInterface = mPluginLoader->getDataModelPlugin(ConvergedMessage::BioMsg);
+        mPluginInterface->setMessageId(msgId);
+    }
+
+    mPluginInterface->toRecipientList(mToAddressList);
+    mPluginInterface->ccRecipientList(mCcAddressList);
+    mPluginInterface->bccRecipientList(mBccAddressList);
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::toAddressList
+// @see header file
+// ---------------------------------------------------------------------------
+ConvergedMessageAddressList UniViewerFeederPrivate::toAddressList()
+{
+    QString alias = QString();
+    int count;
+    for (int i = 0; i < mToAddressList.count(); ++i) {
+        MsgContactHandler::resolveContactDisplayName(
+		mToAddressList.at(i)->address(), alias, count);
+        mToAddressList.at(i)->setAlias(alias);
+        alias.clear();
+    }
+    return mToAddressList;
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::ccAddressList
+// @see header file
+// ---------------------------------------------------------------------------
+ConvergedMessageAddressList UniViewerFeederPrivate::ccAddressList()
+{
+    QString alias = QString();
+    int count;
+    for (int i = 0; i < mCcAddressList.count(); ++i) {
+        MsgContactHandler::resolveContactDisplayName(
+		mToAddressList.at(i)->address(), alias, count);
+        mCcAddressList.at(i)->setAlias(alias);
+        alias.clear();
+
+    }
+    return mCcAddressList;
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::bccAddressList
+// @see header file
+// ---------------------------------------------------------------------------
+ConvergedMessageAddressList UniViewerFeederPrivate::bccAddressList()
+{
+    QString alias = QString();
+    int count;
+    for (int i = 0; i < mBccAddressList.count(); ++i)
+    {
+        MsgContactHandler::resolveContactDisplayName(
+            mBccAddressList.at(i)->address(),
+            alias,
+            count);
+        mBccAddressList.at(i)->setAlias(alias);
+        alias.clear();
+    }
+    return mBccAddressList;
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::recipientCount
+// @see header file
+// ---------------------------------------------------------------------------
+int UniViewerFeederPrivate::recipientCount()
+{
+    return mToAddressList.count() + mCcAddressList.count() + mBccAddressList.count();
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::messageSize
+// @see header file
+// ---------------------------------------------------------------------------
+int UniViewerFeederPrivate::messageSize()
+{
+    return mPluginInterface->messageSize();
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::fromAddressAndAlias
+// @see header file
+// ---------------------------------------------------------------------------
+void UniViewerFeederPrivate::fromAddressAndAlias(QString& from, QString& alias)
+{
+    mPluginInterface->fromAddress(from);
+    int count;
+    MsgContactHandler::resolveContactDisplayName(from, alias, count);
+}
+
+// ---------------------------------------------------------------------------
+// UniViewerFeederPrivate::clearContent
+// @see header file
+// ---------------------------------------------------------------------------
+void UniViewerFeederPrivate::clearContent()
+{
+    for (int i = 0; i < mToAddressList.count(); ++i)
+    {
+        delete mToAddressList.at(i);
+    }
+    mToAddressList.clear();
+
+    for (int i = 0; i < mCcAddressList.count(); ++i)
+    {
+        delete mCcAddressList.at(i);
+    }
+    mCcAddressList.clear();
+
+    for (int i = 0; i < mBccAddressList.count(); ++i)
+    {
+        delete mBccAddressList.at(i);
+    }
+    mBccAddressList.clear();
+}
+
+// EOF