phonebookui/cntcommonui/views/cnthistoryviewitemwidget.cpp
author hgs
Fri, 15 Oct 2010 12:24:46 +0300
changeset 81 640d30f4fb64
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
81
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "cnthistoryviewitemwidget.h"
hgs
parents:
diff changeset
    19
#include "cntdebug.h"
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
#include <cnthistorymodel.h>
hgs
parents:
diff changeset
    22
#include <hbiconitem.h>
hgs
parents:
diff changeset
    23
#include <hbtextitem.h>
hgs
parents:
diff changeset
    24
#include <hbframedrawer.h>
hgs
parents:
diff changeset
    25
#include <hbframeitem.h>
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
#define NEW_EVENT_FRAME "qtg_fr_list_new_item"
hgs
parents:
diff changeset
    28
#define INCOMING_FOCUS_FRAME "qtg_fr_convlist_received_pressed"
hgs
parents:
diff changeset
    29
#define OUTGOING_FOCUS_FRAME "qtg_fr_convlist_sent_pressed"
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
CntHistoryViewItemWidget::CntHistoryViewItemWidget(QGraphicsItem *parent) :
hgs
parents:
diff changeset
    32
    HbWidget(parent),
hgs
parents:
diff changeset
    33
    mIcon(NULL),
hgs
parents:
diff changeset
    34
    mTitle(NULL),
hgs
parents:
diff changeset
    35
    mBodyText(NULL),
hgs
parents:
diff changeset
    36
    mTimeStamp(NULL),
hgs
parents:
diff changeset
    37
    mFrameItem(NULL),
hgs
parents:
diff changeset
    38
    mFocusItem(NULL),
hgs
parents:
diff changeset
    39
    mNewItem(NULL),
hgs
parents:
diff changeset
    40
    incoming(false),
hgs
parents:
diff changeset
    41
    newmessage(false)
hgs
parents:
diff changeset
    42
{
hgs
parents:
diff changeset
    43
    CNT_ENTRY
hgs
parents:
diff changeset
    44
    
hgs
parents:
diff changeset
    45
    setProperty("state", "normal");
hgs
parents:
diff changeset
    46
    
hgs
parents:
diff changeset
    47
    CNT_EXIT
hgs
parents:
diff changeset
    48
}
hgs
parents:
diff changeset
    49
hgs
parents:
diff changeset
    50
CntHistoryViewItemWidget::~CntHistoryViewItemWidget()
hgs
parents:
diff changeset
    51
{
hgs
parents:
diff changeset
    52
    CNT_ENTRY
hgs
parents:
diff changeset
    53
hgs
parents:
diff changeset
    54
    CNT_EXIT
hgs
parents:
diff changeset
    55
}
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
void CntHistoryViewItemWidget::createPrimitives()
hgs
parents:
diff changeset
    58
{
hgs
parents:
diff changeset
    59
    CNT_ENTRY
hgs
parents:
diff changeset
    60
    
hgs
parents:
diff changeset
    61
    if (!icon.isNull())
hgs
parents:
diff changeset
    62
    {
hgs
parents:
diff changeset
    63
        if (!mIcon)
hgs
parents:
diff changeset
    64
        {
hgs
parents:
diff changeset
    65
            mIcon = new HbIconItem(this);
hgs
parents:
diff changeset
    66
            mIcon->setAlignment(Qt::AlignCenter);
hgs
parents:
diff changeset
    67
            mIcon->setIcon(icon);
hgs
parents:
diff changeset
    68
            style()->setItemName(mIcon, "icon-1");
hgs
parents:
diff changeset
    69
        }
hgs
parents:
diff changeset
    70
    }
hgs
parents:
diff changeset
    71
    else
hgs
parents:
diff changeset
    72
    {
hgs
parents:
diff changeset
    73
        if (mIcon)
hgs
parents:
diff changeset
    74
        {
hgs
parents:
diff changeset
    75
            delete mIcon;
hgs
parents:
diff changeset
    76
        }
hgs
parents:
diff changeset
    77
        mIcon = NULL;
hgs
parents:
diff changeset
    78
    }
hgs
parents:
diff changeset
    79
hgs
parents:
diff changeset
    80
    if (!title.isNull())
hgs
parents:
diff changeset
    81
    {
hgs
parents:
diff changeset
    82
        if (!mTitle)
hgs
parents:
diff changeset
    83
        {
hgs
parents:
diff changeset
    84
            mTitle = new HbTextItem(this);
hgs
parents:
diff changeset
    85
            mTitle->setText(title);
hgs
parents:
diff changeset
    86
            style()->setItemName(mTitle, "text-1");
hgs
parents:
diff changeset
    87
        }
hgs
parents:
diff changeset
    88
    }
hgs
parents:
diff changeset
    89
    else
hgs
parents:
diff changeset
    90
    {
hgs
parents:
diff changeset
    91
        if (mTitle)
hgs
parents:
diff changeset
    92
        {
hgs
parents:
diff changeset
    93
            delete mTitle;
hgs
parents:
diff changeset
    94
        }
hgs
parents:
diff changeset
    95
        mTitle = NULL;
hgs
parents:
diff changeset
    96
    }
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
    if (!bodyText.isNull())
hgs
parents:
diff changeset
    99
    {
hgs
parents:
diff changeset
   100
        if (!mBodyText)
hgs
parents:
diff changeset
   101
        {
hgs
parents:
diff changeset
   102
            mBodyText = new HbTextItem(this);
hgs
parents:
diff changeset
   103
            mBodyText->setText(bodyText);
hgs
parents:
diff changeset
   104
            style()->setItemName(mBodyText, "text-2");
hgs
parents:
diff changeset
   105
        }
hgs
parents:
diff changeset
   106
    }
hgs
parents:
diff changeset
   107
    else
hgs
parents:
diff changeset
   108
    {
hgs
parents:
diff changeset
   109
        if (mBodyText)
hgs
parents:
diff changeset
   110
        {
hgs
parents:
diff changeset
   111
            delete mBodyText;
hgs
parents:
diff changeset
   112
        }
hgs
parents:
diff changeset
   113
        mBodyText = NULL;
hgs
parents:
diff changeset
   114
    }
hgs
parents:
diff changeset
   115
    
hgs
parents:
diff changeset
   116
    if (!timeStamp.isNull())
hgs
parents:
diff changeset
   117
    {
hgs
parents:
diff changeset
   118
        if (!mTimeStamp)
hgs
parents:
diff changeset
   119
        {
hgs
parents:
diff changeset
   120
            mTimeStamp = new HbTextItem(this);
hgs
parents:
diff changeset
   121
            mTimeStamp->setText(timeStamp);
hgs
parents:
diff changeset
   122
            style()->setItemName(mTimeStamp, "text-3");
hgs
parents:
diff changeset
   123
        }
hgs
parents:
diff changeset
   124
    }
hgs
parents:
diff changeset
   125
    else
hgs
parents:
diff changeset
   126
    {
hgs
parents:
diff changeset
   127
        if (mTimeStamp)
hgs
parents:
diff changeset
   128
        {
hgs
parents:
diff changeset
   129
            delete mTimeStamp;
hgs
parents:
diff changeset
   130
        }
hgs
parents:
diff changeset
   131
        mTimeStamp = NULL;
hgs
parents:
diff changeset
   132
    }
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
    if (!mFrameItem)
hgs
parents:
diff changeset
   135
    {
hgs
parents:
diff changeset
   136
        mFrameItem = new HbFrameItem(this);
hgs
parents:
diff changeset
   137
        mFrameItem->frameDrawer().setFrameGraphicsName(backGround.frameGraphicsName());
hgs
parents:
diff changeset
   138
        mFrameItem->frameDrawer().setFrameType(backGround.frameType());
hgs
parents:
diff changeset
   139
        mFrameItem->setZValue(-2);
hgs
parents:
diff changeset
   140
        style()->setItemName(mFrameItem, "frame");
hgs
parents:
diff changeset
   141
    }
hgs
parents:
diff changeset
   142
    
hgs
parents:
diff changeset
   143
    CNT_EXIT
hgs
parents:
diff changeset
   144
}
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
void CntHistoryViewItemWidget::recreatePrimitives()
hgs
parents:
diff changeset
   147
{
hgs
parents:
diff changeset
   148
    CNT_ENTRY
hgs
parents:
diff changeset
   149
    
hgs
parents:
diff changeset
   150
    HbWidget::recreatePrimitives();
hgs
parents:
diff changeset
   151
hgs
parents:
diff changeset
   152
    delete mIcon;
hgs
parents:
diff changeset
   153
    mIcon = NULL;
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
    delete mTitle;
hgs
parents:
diff changeset
   156
    mTitle = NULL;
hgs
parents:
diff changeset
   157
    
hgs
parents:
diff changeset
   158
    delete mBodyText;
hgs
parents:
diff changeset
   159
    mBodyText = NULL;
hgs
parents:
diff changeset
   160
    
hgs
parents:
diff changeset
   161
    delete mTimeStamp;
hgs
parents:
diff changeset
   162
    mTimeStamp= NULL;
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
    delete mFrameItem;
hgs
parents:
diff changeset
   165
    mFrameItem = NULL;
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
    createPrimitives();
hgs
parents:
diff changeset
   168
    
hgs
parents:
diff changeset
   169
    CNT_EXIT
hgs
parents:
diff changeset
   170
}
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
void CntHistoryViewItemWidget::setModelIndex(const QModelIndex& index)
hgs
parents:
diff changeset
   173
{
hgs
parents:
diff changeset
   174
    CNT_ENTRY
hgs
parents:
diff changeset
   175
    
hgs
parents:
diff changeset
   176
    // CntHistoryModel ALWAYS returns 3x QString for Qt::DisplayRole
hgs
parents:
diff changeset
   177
    QStringList texts = index.data(Qt::DisplayRole).toStringList();
hgs
parents:
diff changeset
   178
    title = texts.at(0);
hgs
parents:
diff changeset
   179
    bodyText = texts.at(1);
hgs
parents:
diff changeset
   180
    timeStamp = texts.at(2);
hgs
parents:
diff changeset
   181
    
hgs
parents:
diff changeset
   182
    icon = index.data(Qt::DecorationRole).value<HbIcon>();
hgs
parents:
diff changeset
   183
    
hgs
parents:
diff changeset
   184
    backGround = index.data(Qt::BackgroundRole).value<HbFrameBackground>();
hgs
parents:
diff changeset
   185
    
hgs
parents:
diff changeset
   186
    int flags = index.data(CntFlagsRole).toInt();
hgs
parents:
diff changeset
   187
    incoming = flags & CntIncoming ? true : false;
hgs
parents:
diff changeset
   188
    newmessage = flags & CntUnseen ? true : false;
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
    if (newmessage)
hgs
parents:
diff changeset
   191
    {
hgs
parents:
diff changeset
   192
        if (!mNewItem)
hgs
parents:
diff changeset
   193
        {
hgs
parents:
diff changeset
   194
            mNewItem = new HbFrameItem(NEW_EVENT_FRAME, HbFrameDrawer::ThreePiecesVertical, this);
hgs
parents:
diff changeset
   195
            style()->setItemName(mNewItem, "newitem");
hgs
parents:
diff changeset
   196
        }
hgs
parents:
diff changeset
   197
    }
hgs
parents:
diff changeset
   198
    else
hgs
parents:
diff changeset
   199
    {
hgs
parents:
diff changeset
   200
        if (mNewItem)
hgs
parents:
diff changeset
   201
        {
hgs
parents:
diff changeset
   202
            delete mNewItem;
hgs
parents:
diff changeset
   203
            mNewItem = NULL;
hgs
parents:
diff changeset
   204
        }
hgs
parents:
diff changeset
   205
    }
hgs
parents:
diff changeset
   206
    
hgs
parents:
diff changeset
   207
    recreatePrimitives();
hgs
parents:
diff changeset
   208
    repolish();
hgs
parents:
diff changeset
   209
    
hgs
parents:
diff changeset
   210
    setProperty("state", "normal");
hgs
parents:
diff changeset
   211
    
hgs
parents:
diff changeset
   212
    CNT_EXIT
hgs
parents:
diff changeset
   213
}
hgs
parents:
diff changeset
   214
hgs
parents:
diff changeset
   215
void CntHistoryViewItemWidget::pressStateChanged(bool pressed)
hgs
parents:
diff changeset
   216
{
hgs
parents:
diff changeset
   217
    CNT_ENTRY
hgs
parents:
diff changeset
   218
    
hgs
parents:
diff changeset
   219
    if (pressed)
hgs
parents:
diff changeset
   220
    {
hgs
parents:
diff changeset
   221
        if (!mFocusItem)
hgs
parents:
diff changeset
   222
        {
hgs
parents:
diff changeset
   223
            if (incoming)
hgs
parents:
diff changeset
   224
            {
hgs
parents:
diff changeset
   225
                mFocusItem = new HbFrameItem(INCOMING_FOCUS_FRAME, HbFrameDrawer::NinePieces, this);
hgs
parents:
diff changeset
   226
            }
hgs
parents:
diff changeset
   227
            else
hgs
parents:
diff changeset
   228
            {
hgs
parents:
diff changeset
   229
                mFocusItem = new HbFrameItem(OUTGOING_FOCUS_FRAME, HbFrameDrawer::NinePieces, this);
hgs
parents:
diff changeset
   230
            }
hgs
parents:
diff changeset
   231
            mFocusItem->setZValue(-1.0);
hgs
parents:
diff changeset
   232
            style()->setItemName(mFocusItem, "focusframe");
hgs
parents:
diff changeset
   233
        }
hgs
parents:
diff changeset
   234
        
hgs
parents:
diff changeset
   235
        setProperty("state", "pressed");
hgs
parents:
diff changeset
   236
    }
hgs
parents:
diff changeset
   237
    else
hgs
parents:
diff changeset
   238
    {
hgs
parents:
diff changeset
   239
        if (mFocusItem)
hgs
parents:
diff changeset
   240
        {
hgs
parents:
diff changeset
   241
            delete mFocusItem;
hgs
parents:
diff changeset
   242
            mFocusItem = NULL;
hgs
parents:
diff changeset
   243
        }
hgs
parents:
diff changeset
   244
        
hgs
parents:
diff changeset
   245
        setProperty("state", "normal");
hgs
parents:
diff changeset
   246
    }
hgs
parents:
diff changeset
   247
    
hgs
parents:
diff changeset
   248
    repolish();
hgs
parents:
diff changeset
   249
    
hgs
parents:
diff changeset
   250
    CNT_EXIT
hgs
parents:
diff changeset
   251
}