messagingapp/msgui/unifiedviewer/src/univiewerheadercontainer.cpp
changeset 25 84d9eb65b26f
child 27 e4592d119491
child 37 518b245aa84c
equal deleted inserted replaced
23:238255e8b033 25:84d9eb65b26f
       
     1 /*
       
     2  * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3  * All rights reserved.
       
     4  * This component and the accompanying materials are made available
       
     5  * under the terms of "Eclipse Public License v1.0"
       
     6  * which accompanies this distribution, and is available
       
     7  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8  *
       
     9  * Initial Contributors:
       
    10  * Nokia Corporation - initial contribution.
       
    11  *
       
    12  * Contributors:
       
    13  *
       
    14  * Description: This widget holds the message header.
       
    15  *
       
    16  */
       
    17 
       
    18 #include "univiewerheadercontainer.h"
       
    19 
       
    20 // SYSTEM INCLUDES
       
    21 #include <QGraphicsLinearLayout>
       
    22 #include <HbGroupBox>
       
    23 #include <HbFrameItem>
       
    24 
       
    25 // USER INCLUDES
       
    26 #include "univieweraddresscontainer.h"
       
    27 #include "univiewerattachmentcontainer.h"
       
    28 #include "univiewerdetailswidget.h"
       
    29 #include "univiewerfeeder.h"
       
    30 
       
    31 #include "nativemessageconsts.h"
       
    32 
       
    33 // LOCALIZATION
       
    34 #define LOC_SEND_FAILED hbTrId("txt_messaging_formlabel_sending_failed")
       
    35 
       
    36 // LOCAL CONSTANTS
       
    37 const QString ADDR_LIST_SEPARATOR(", ");
       
    38 const QString BG_FRAME_GRAPHICS("qtg_fr_form_heading");
       
    39 
       
    40 //---------------------------------------------------------------
       
    41 // UniViewerHeaderContainer :: UniViewerHeaderContainer
       
    42 // @see header file
       
    43 //---------------------------------------------------------------
       
    44 UniViewerHeaderContainer::UniViewerHeaderContainer(UniViewerFeeder* feeder, QGraphicsItem *parent) :
       
    45     HbWidget(parent), mViewFeeder(feeder), mViewerDetails(0), mHeaderGroupBox(0),
       
    46         mAddressContainer(0), mAttachmentContainer(0)
       
    47 {
       
    48     HbFrameItem *bgItem = new HbFrameItem(BG_FRAME_GRAPHICS, HbFrameDrawer::NinePieces, this);
       
    49     this->setBackgroundItem(bgItem);
       
    50 
       
    51     QGraphicsLinearLayout *mainLayout = new QGraphicsLinearLayout(Qt::Vertical);
       
    52     mainLayout->setSpacing(0);
       
    53     mainLayout->setContentsMargins(0, 0, 0, 0);
       
    54 
       
    55     // Address Group box
       
    56     mHeaderGroupBox = new HbGroupBox(this);
       
    57 
       
    58     // Address container
       
    59     mAddressContainer = new UniViewerAddressContainer(mHeaderGroupBox);
       
    60 
       
    61     mHeaderGroupBox->setContentWidget(mAddressContainer);
       
    62 
       
    63     // Viewer Details widget
       
    64     mViewerDetails = new UniViewerDetailsWidget(this);
       
    65 
       
    66     // Attachment Container
       
    67     mAttachmentContainer = new UniViewerAttachmentContainer(this);
       
    68 
       
    69     //Add address group box and insert into layout
       
    70     mainLayout->addItem(mHeaderGroupBox);
       
    71     mainLayout->addItem(mViewerDetails);
       
    72     mainLayout->addItem(mAttachmentContainer);
       
    73 
       
    74     this->setLayout(mainLayout);
       
    75 }
       
    76 
       
    77 //---------------------------------------------------------------
       
    78 // UniViewerHeaderContainer :: ~UniViewerHeaderContainer
       
    79 // @see header file
       
    80 //---------------------------------------------------------------
       
    81 UniViewerHeaderContainer::~UniViewerHeaderContainer()
       
    82 {
       
    83 
       
    84 }
       
    85 
       
    86 //---------------------------------------------------------------
       
    87 // UniViewerHeaderContainer :: populateContent
       
    88 // @see header file
       
    89 //---------------------------------------------------------------
       
    90 void UniViewerHeaderContainer::populateContent()
       
    91 {
       
    92     setAddrGroupBoxHeading();
       
    93 
       
    94     // Address container
       
    95     populateAddressContainer();
       
    96 
       
    97     // Time stamp
       
    98     mViewerDetails->setTimeStamp(mViewFeeder->timeStamp(), mViewFeeder->sendingState());
       
    99 
       
   100     // Priority
       
   101     mViewerDetails->setPriorityIcon(mViewFeeder->priority());
       
   102 
       
   103     // Subject
       
   104     populateSubject();
       
   105 
       
   106     // Attachment list
       
   107     populateAttachments();
       
   108 
       
   109     // Expand address group box for outgoing messages.
       
   110     if (mViewFeeder->isIncoming()) {
       
   111         mHeaderGroupBox->setCollapsed(true);
       
   112     }
       
   113     else {
       
   114         mHeaderGroupBox->setCollapsed(false);
       
   115     }
       
   116 }
       
   117 
       
   118 //---------------------------------------------------------------
       
   119 // UniViewerHeaderContainer :: clearContent
       
   120 // @see header file
       
   121 //---------------------------------------------------------------
       
   122 void UniViewerHeaderContainer::clearContent()
       
   123 {
       
   124     if (mViewerDetails) {
       
   125         mViewerDetails->clearContent();
       
   126     }
       
   127     if (mAddressContainer) {
       
   128         mAddressContainer->clearContent();
       
   129     }
       
   130     if (mAttachmentContainer) {
       
   131         mAttachmentContainer->clearContent();
       
   132     }
       
   133 }
       
   134 
       
   135 //---------------------------------------------------------------
       
   136 // UniViewerHeaderContainer :: populateSubject
       
   137 // @see header file
       
   138 //---------------------------------------------------------------
       
   139 void UniViewerHeaderContainer::populateSubject()
       
   140 {
       
   141     if (KSenduiMtmSmsUidValue == mViewFeeder->msgType()) {
       
   142         if ((ConvergedMessage::Failed == mViewFeeder->sendingState()) && !mViewFeeder->isIncoming()) {
       
   143             mViewerDetails->setSubject(LOC_SEND_FAILED);
       
   144         }
       
   145     }
       
   146     else if (KSenduiMtmMmsUidValue == mViewFeeder->msgType()) {
       
   147         QString subject;
       
   148         if (ConvergedMessage::Failed == mViewFeeder->sendingState()) {
       
   149             subject.append(LOC_SEND_FAILED);
       
   150             subject.append(QChar::LineSeparator);
       
   151         }
       
   152         subject.append(mViewFeeder->subject());
       
   153         if (!subject.isEmpty()) {
       
   154             mViewerDetails->setSubject(subject);
       
   155         }
       
   156     }
       
   157 }
       
   158 
       
   159 //---------------------------------------------------------------
       
   160 // UniViewerHeaderContainer :: populateAttachments
       
   161 // @see header file
       
   162 //---------------------------------------------------------------
       
   163 void UniViewerHeaderContainer::populateAttachments()
       
   164 {
       
   165     UniMessageInfoList attachList = mViewFeeder->attachmentsList();
       
   166     for (int a = 0; a < attachList.count(); ++a) {
       
   167         UniMessageInfo* info = attachList.at(a);
       
   168         mAttachmentContainer->addAttachmentWidget(info->mimetype(), info->path());
       
   169         delete info;
       
   170     }
       
   171 }
       
   172 
       
   173 //---------------------------------------------------------------
       
   174 // UniViewerHeaderContainer :: populateAttachments
       
   175 // @see header file
       
   176 //---------------------------------------------------------------
       
   177 void UniViewerHeaderContainer::populateAddressContainer()
       
   178 {
       
   179     QString from, alias;
       
   180     mViewFeeder->fromAddressAndAlias(from, alias);
       
   181     ConvergedMessageAddressList toList = mViewFeeder->toAddressList();
       
   182 
       
   183     // From field is added ONLY for incoming messages.
       
   184     if (mViewFeeder->isIncoming()) {
       
   185         mAddressContainer->setFromField(from, alias);
       
   186     }
       
   187     // TO field is added ONLY for outgoing messages.
       
   188     else if (!toList.isEmpty()) {
       
   189         mAddressContainer->setToField(toList);
       
   190     }
       
   191 
       
   192     // CC field is added ONLY for MMS messages.
       
   193     if (mViewFeeder->msgType() == KSenduiMtmMmsUidValue) {
       
   194         ConvergedMessageAddressList ccList = mViewFeeder->ccAddressList();
       
   195         if (!ccList.isEmpty()) {
       
   196             mAddressContainer->setCcField(ccList);
       
   197         }
       
   198     }
       
   199 
       
   200     mAddressContainer->insertDivider();
       
   201 }
       
   202 //---------------------------------------------------------------
       
   203 // UniViewerHeaderContainer :: setAddrGroupBoxHeading
       
   204 // @see header file
       
   205 //---------------------------------------------------------------
       
   206 void UniViewerHeaderContainer::setAddrGroupBoxHeading()
       
   207 {
       
   208     if (mViewFeeder->isIncoming()) {
       
   209         QString from, alias;
       
   210         mViewFeeder->fromAddressAndAlias(from, alias);
       
   211         (alias.isEmpty()) ? mHeaderGroupBox->setHeading(from) : mHeaderGroupBox->setHeading(alias);
       
   212     }
       
   213     else {
       
   214         QString toAddrList = createAddressList(mViewFeeder->toAddressList());
       
   215         QString ccAddrList = createAddressList(mViewFeeder->ccAddressList());
       
   216 
       
   217         if (!ccAddrList.isEmpty()) {
       
   218             toAddrList.append(ADDR_LIST_SEPARATOR);
       
   219             toAddrList.append(ccAddrList);
       
   220         }
       
   221         mHeaderGroupBox->setHeading(toAddrList);
       
   222     }
       
   223 }
       
   224 
       
   225 //---------------------------------------------------------------
       
   226 // UniViewerHeaderContainer :: createAddressList
       
   227 // @see header file
       
   228 //---------------------------------------------------------------
       
   229 QString UniViewerHeaderContainer::createAddressList(const ConvergedMessageAddressList &addressList)
       
   230 {
       
   231     QString address;
       
   232     for (int i = 0; i < addressList.count(); ++i) {
       
   233         address.append((addressList[i]->alias().isEmpty()) ? addressList[i]->address()
       
   234             : addressList[i]->alias());
       
   235         address.append(ADDR_LIST_SEPARATOR);
       
   236     }
       
   237     address.chop(ADDR_LIST_SEPARATOR.size());
       
   238     return address;
       
   239 }