messagingapp/msgui/unifiedviewer/src/univiewslidewidget.cpp
changeset 23 238255e8b033
child 25 84d9eb65b26f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgui/unifiedviewer/src/univiewslidewidget.cpp	Fri Apr 16 14:56:15 2010 +0300
@@ -0,0 +1,291 @@
+/*
+ * 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: This widget holds the message details and silde contents.
+ *
+ */
+
+#include "univiewslidewidget.h"
+
+// SYSTEM INCLUDES
+#include <QGraphicsLinearLayout>
+#include <HbGroupBox>
+
+// USER INCLUDES
+#include "univieweraddresscontainer.h"
+#include "univiewerattachmentcontainer.h"
+#include "univiewerdetailswidget.h"
+#include "univiewerbodywidget.h"
+#include "convergedmessage.h"
+#include "univiewerfeeder.h"
+
+#include "nativemessageconsts.h"
+//---------------------------------------------------------------
+//UniViewSlideWidget :: UniViewSlideWidget
+// @see header file
+//---------------------------------------------------------------
+UniViewSlideWidget::UniViewSlideWidget(UniViewerFeeder* feeder, int slideNumber,
+    QGraphicsItem * parent) :
+    HbWidget(parent), mInsideLayout(false), mSlideNumber(slideNumber), mViewerDetails(NULL),
+        mViewFeeder(feeder), mHeaderGroupBox(NULL), mAddressContainer(NULL), mAttachmentContainer(
+            NULL)
+
+{
+
+    mMainLayout = new QGraphicsLinearLayout(Qt::Vertical);
+    mBody = new UniViewerBodyWidget(this);
+    
+    connect(mBody,SIGNAL(sendMessage(const QString&)),
+            this, SIGNAL(sendMessage(const QString&)));
+
+    // If its a first slide create the headers and attach
+    // to the main layout
+    if (mSlideNumber == 0) {
+        // Creation of address group box and adding address container
+        mHeaderGroupBox = new HbGroupBox(this);
+        mHeaderGroupBox->setCollapsed(true);
+        mHeaderGroupBox->setCollapsable(true);
+
+        mAddressContainer = new UniViewerAddressContainer(mHeaderGroupBox);
+
+        mHeaderGroupBox->setContentWidget(mAddressContainer);
+
+        mViewerDetails = new UniViewerDetailsWidget(this);
+
+        mAttachmentContainer = new UniViewerAttachmentContainer(this);
+
+        //Always connect to populate sms content
+        connect(mViewFeeder, SIGNAL(msgBody(QString)), mBody, SLOT(setTextContent(QString)));
+
+        //Add address group box and insert into layout
+        mViewerDetails->sizePolicy().setVerticalPolicy(QSizePolicy::Fixed);
+        mMainLayout->addItem(mHeaderGroupBox);
+        mMainLayout->addItem(mViewerDetails);
+        mMainLayout->addItem(mAttachmentContainer);
+    }
+
+    mMainLayout->addItem(mBody);
+
+    mMainLayout->setSpacing(0);
+    mMainLayout->setContentsMargins(0, 0, 0, 0);
+
+    setLayout(mMainLayout);
+}
+
+//---------------------------------------------------------------
+//UniViewSlideWidget::~UniViewSlideWidget
+// @see header file
+//---------------------------------------------------------------
+UniViewSlideWidget::~UniViewSlideWidget()
+{
+
+}
+
+//---------------------------------------------------------------
+//UniViewSlideWidget::clearContent
+// @see header file
+//---------------------------------------------------------------
+void UniViewSlideWidget::clearContent()
+{
+    if (mViewerDetails) {
+        mViewerDetails->clearContent();
+    }
+    if (mAddressContainer) {
+        mAddressContainer->clearContent();
+    }
+    if (mAttachmentContainer) {
+        mAttachmentContainer->clearContent();
+    }
+    if (mBody) {
+        mBody->clearContent();
+    }
+}
+
+//---------------------------------------------------------------
+//UniViewSlideWidget::populateContent
+// @see header file
+//---------------------------------------------------------------
+void UniViewSlideWidget::populateContent()
+{
+    if (mSlideNumber == 0) {
+        mViewFeeder->fetchDetails();
+        populateFirstSlide();
+    }
+
+    if (mViewFeeder->msgType() == KSenduiMtmMmsUidValue
+            && mViewFeeder->slideCount() > 0)
+    {
+        QString slideString;
+        slideString = QString("%1 %2/%3").arg(tr("Slide")). arg(mSlideNumber + 1).arg(
+            mViewFeeder->slideCount());
+        mBody->setSlideContents(mViewFeeder->slideContent(mSlideNumber), slideString);
+
+    }
+}
+
+//---------------------------------------------------------------
+//UniViewSlideWidget::populateFirstSlide
+// @see header file
+//---------------------------------------------------------------
+void UniViewSlideWidget::populateFirstSlide()
+{
+    //Populate the name for the groupbox
+    ConvergedMessageAddressList toList = mViewFeeder->toAddressList();
+    ConvergedMessageAddressList ccList = mViewFeeder->ccAddressList();
+
+    if (!mViewFeeder->isIncoming())
+    {
+        QString address = QString();
+        if (toList.count() > 0)
+        {
+            if (! (toList[0]->alias().isEmpty()))
+            {
+                address.append(toList[0]->alias());
+            }
+            else
+            {
+                address.append(toList[0]->address());
+            }
+        }
+        for (int i = 1; i < toList.count(); ++i)
+        {
+            if (! (toList[i]->alias().isEmpty()))
+            {
+                address.append(", ");
+                address.append(toList[i]->alias());
+            }
+            else
+            {
+                address.append(", ");
+                address.append(toList[i]->address());
+            }
+        }
+
+        if (ccList.count() > 0)
+        {
+            if (toList.count() > 0)
+            {
+                address.append(", ");
+            }
+            if (! (ccList[0]->alias().isEmpty()))
+            {
+                address.append(ccList[0]->alias());
+            }
+            else
+            {
+                address.append(ccList[0]->address());
+            }
+        }
+
+        for (int j = 1; j < ccList.count(); ++j)
+        {
+            if (! (ccList[j]->alias().isEmpty()))
+            {
+                address.append(", ");
+                address.append(ccList[j]->alias());
+
+            }
+            else
+            {
+                address.append(", ");
+                address.append(ccList[j]->address());
+
+            }
+        }
+        mHeaderGroupBox->setHeading(address);
+        mHeaderGroupBox->setCollapsed(false);
+    }
+    else
+    {
+        QString from = QString();
+        QString alias = QString();
+        mViewFeeder->fromAddressAndAlias(from, alias);
+        if (alias.isEmpty())
+        {
+            mHeaderGroupBox->setHeading(from);
+        }
+        else
+        {
+            mHeaderGroupBox->setHeading(alias);
+        }
+
+        mHeaderGroupBox->setCollapsed(true);
+    }
+
+    // Set the From fields details 
+    if (mViewFeeder->isIncoming())
+    {
+        QString from = QString();
+        QString alias = QString();
+        mViewFeeder->fromAddressAndAlias(from, alias);
+        mAddressContainer->setFromField(from, alias);
+    }
+
+    // Set the To/Cc fields details 
+    if (mViewFeeder->msgType() == KSenduiMtmSmsUidValue)
+    {
+        if (!mViewFeeder->isIncoming())
+        {
+            mAddressContainer->setToField(toList);
+        }
+    }
+    else if (mViewFeeder->msgType() == KSenduiMtmMmsUidValue)
+    {
+        mViewerDetails->setSubject(mViewFeeder->subject());
+        mViewerDetails->setPriorityIcon(mViewFeeder->priority());
+
+        if (!toList.isEmpty())
+        {
+            mAddressContainer->setToField(toList);
+        }
+        if (!ccList.isEmpty())
+        {
+            mAddressContainer->setCcField(ccList);
+        }
+
+        UniMessageInfoList attachList = mViewFeeder->attachmentsList();
+        int count = attachList.count();
+
+        for (int a = 0; a < count; ++a)
+        {
+            UniMessageInfo* info = attachList.at(a);
+            QString type = info->mimetype();
+
+            mAttachmentContainer->addAttachmentWidget(type, info->path());
+            delete info;
+        }
+    }
+    // Time stamp
+ 
+    mViewerDetails->setTimeStamp(mViewFeeder->timeStamp());
+}
+
+//---------------------------------------------------------------
+//UniViewSlideWidget::insideLayout
+// @see header file
+//---------------------------------------------------------------
+bool UniViewSlideWidget::insideLayout()
+{
+    return mInsideLayout;
+}
+
+//---------------------------------------------------------------
+//UniViewSlideWidget::setInsideLayout
+// @see header file
+//---------------------------------------------------------------
+void UniViewSlideWidget::setInsideLayout(bool inside)
+{
+    mInsideLayout = inside;
+}
+
+// EOF