emailuis/nmailuiengine/src/nmmessagelistmodelitem.cpp
changeset 18 578830873419
child 30 759dc5235cdb
equal deleted inserted replaced
4:e7aa27f58ae1 18:578830873419
       
     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:
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #include "nmuiengineheaders.h"
       
    21 
       
    22 /*!
       
    23     \class NmMessageListModelItem
       
    24     \brief The NmMessageListModelItem class represents data for NmMessageListModel.
       
    25     @alpha
       
    26 
       
    27     The NmMessageListModelItem class provides an item that is 
       
    28     used by NmMessageListModel and its' data
       
    29     method to get all information needed for one list row for a widget by calling the method once.
       
    30 */
       
    31 
       
    32 class NmMessageListModelItemPrivate
       
    33 {
       
    34 public:
       
    35     // mEnvelope is not created here to avoid unnecessary create/delete operations,
       
    36     // usual use case is setEnvelope
       
    37 	NmMessageListModelItemPrivate()
       
    38 	:mEnvelope(NULL), 
       
    39     mType(NmMessageListModelItem::NmMessageItemMessage),
       
    40 	mExpanded(false) {}
       
    41 	virtual ~NmMessageListModelItemPrivate(){ delete mEnvelope; }
       
    42 	NmMessageEnvelope *mEnvelope;
       
    43     QString mDivider;
       
    44     NmMessageListModelItem::NmMessageItemType mType;
       
    45     bool mExpanded;
       
    46 };
       
    47 
       
    48 
       
    49 /*!
       
    50     Constructor.
       
    51 */
       
    52 NmMessageListModelItem::NmMessageListModelItem()
       
    53 {
       
    54     d = new NmMessageListModelItemPrivate();
       
    55 }
       
    56 
       
    57 
       
    58 /*!
       
    59     Destructor.
       
    60 */
       
    61 NmMessageListModelItem::~NmMessageListModelItem()
       
    62 {
       
    63     delete d;
       
    64 }
       
    65 
       
    66 /*!
       
    67     Sets message envelope to list model item. Makes own copy from envelope.
       
    68 */
       
    69 void NmMessageListModelItem::setEnvelope(const NmMessageEnvelope &envelope)
       
    70 {
       
    71     delete d->mEnvelope;
       
    72     d->mEnvelope = new NmMessageEnvelope(envelope);
       
    73 	emitDataChanged();
       
    74 }
       
    75 
       
    76 /*!
       
    77     Sets message envelope pointer to list model item. Takes envelope ownership.
       
    78 */
       
    79 void NmMessageListModelItem::setEnvelope(NmMessageEnvelope *envelope)
       
    80 {
       
    81     if (envelope) {
       
    82         delete d->mEnvelope;
       
    83         d->mEnvelope = envelope;
       
    84 	    emitDataChanged();
       
    85     }
       
    86 }
       
    87 
       
    88 /*!
       
    89     Returns const reference to envelope data
       
    90 */
       
    91 const NmMessageEnvelope &NmMessageListModelItem::envelope() const
       
    92 {
       
    93     if (!d->mEnvelope) {
       
    94         d->mEnvelope = new NmMessageEnvelope();
       
    95     }
       
    96 	return *(d->mEnvelope);
       
    97 }
       
    98 
       
    99 /*!
       
   100     Returns pointer to envelope data, ownership of envelope object is not transferred. Do not
       
   101     delete or null envelope object
       
   102 */
       
   103 NmMessageEnvelope *NmMessageListModelItem::envelopePtr()
       
   104 {
       
   105     if (!d->mEnvelope) {
       
   106         d->mEnvelope = new NmMessageEnvelope();
       
   107     }
       
   108 	return d->mEnvelope;
       
   109 }
       
   110 
       
   111 /*!
       
   112     Returns item type, list item can be divider or message
       
   113 */
       
   114 NmMessageListModelItem::NmMessageItemType NmMessageListModelItem::itemType() const
       
   115 {
       
   116     return d->mType;
       
   117 }
       
   118 
       
   119 /*!
       
   120     Sets item type
       
   121 */
       
   122 void NmMessageListModelItem::setItemType(NmMessageListModelItem::NmMessageItemType type)
       
   123 {
       
   124     d->mType = type;
       
   125 }
       
   126 
       
   127 /*!
       
   128     Title divider accessor
       
   129 */
       
   130 QString NmMessageListModelItem::titleDivider() const
       
   131 {
       
   132     return d->mDivider;
       
   133 }
       
   134 
       
   135 /*!
       
   136     Set Title divider.
       
   137 */
       
   138 void NmMessageListModelItem::setTitleDivider(const QString &divider)
       
   139 {
       
   140     d->mDivider = divider;
       
   141 }
       
   142 
       
   143 /*!
       
   144     Returns boolean is divider expanded
       
   145 */
       
   146 bool NmMessageListModelItem::expanded() const
       
   147 {
       
   148     return d->mExpanded;
       
   149 }
       
   150 
       
   151 /*!
       
   152     Sets item expanded
       
   153 */
       
   154 void NmMessageListModelItem::setExpanded(bool expanded)
       
   155 {
       
   156     d->mExpanded = expanded;
       
   157 }
       
   158 
       
   159 /*
       
   160     Emits data changed signal
       
   161  */
       
   162 void NmMessageListModelItem::callEmitDataChanged()
       
   163 {
       
   164     emitDataChanged();
       
   165 }