diff -r c18f9fa7f42e -r 640d30f4fb64 phonebookui/cntcommonui/views/cnthistoryviewitemwidget.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/cntcommonui/views/cnthistoryviewitemwidget.cpp Fri Oct 15 12:24:46 2010 +0300 @@ -0,0 +1,251 @@ +/* +* 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: +* +*/ + +#include "cnthistoryviewitemwidget.h" +#include "cntdebug.h" + +#include +#include +#include +#include +#include + +#define NEW_EVENT_FRAME "qtg_fr_list_new_item" +#define INCOMING_FOCUS_FRAME "qtg_fr_convlist_received_pressed" +#define OUTGOING_FOCUS_FRAME "qtg_fr_convlist_sent_pressed" + +CntHistoryViewItemWidget::CntHistoryViewItemWidget(QGraphicsItem *parent) : + HbWidget(parent), + mIcon(NULL), + mTitle(NULL), + mBodyText(NULL), + mTimeStamp(NULL), + mFrameItem(NULL), + mFocusItem(NULL), + mNewItem(NULL), + incoming(false), + newmessage(false) +{ + CNT_ENTRY + + setProperty("state", "normal"); + + CNT_EXIT +} + +CntHistoryViewItemWidget::~CntHistoryViewItemWidget() +{ + CNT_ENTRY + + CNT_EXIT +} + +void CntHistoryViewItemWidget::createPrimitives() +{ + CNT_ENTRY + + if (!icon.isNull()) + { + if (!mIcon) + { + mIcon = new HbIconItem(this); + mIcon->setAlignment(Qt::AlignCenter); + mIcon->setIcon(icon); + style()->setItemName(mIcon, "icon-1"); + } + } + else + { + if (mIcon) + { + delete mIcon; + } + mIcon = NULL; + } + + if (!title.isNull()) + { + if (!mTitle) + { + mTitle = new HbTextItem(this); + mTitle->setText(title); + style()->setItemName(mTitle, "text-1"); + } + } + else + { + if (mTitle) + { + delete mTitle; + } + mTitle = NULL; + } + + if (!bodyText.isNull()) + { + if (!mBodyText) + { + mBodyText = new HbTextItem(this); + mBodyText->setText(bodyText); + style()->setItemName(mBodyText, "text-2"); + } + } + else + { + if (mBodyText) + { + delete mBodyText; + } + mBodyText = NULL; + } + + if (!timeStamp.isNull()) + { + if (!mTimeStamp) + { + mTimeStamp = new HbTextItem(this); + mTimeStamp->setText(timeStamp); + style()->setItemName(mTimeStamp, "text-3"); + } + } + else + { + if (mTimeStamp) + { + delete mTimeStamp; + } + mTimeStamp = NULL; + } + + if (!mFrameItem) + { + mFrameItem = new HbFrameItem(this); + mFrameItem->frameDrawer().setFrameGraphicsName(backGround.frameGraphicsName()); + mFrameItem->frameDrawer().setFrameType(backGround.frameType()); + mFrameItem->setZValue(-2); + style()->setItemName(mFrameItem, "frame"); + } + + CNT_EXIT +} + +void CntHistoryViewItemWidget::recreatePrimitives() +{ + CNT_ENTRY + + HbWidget::recreatePrimitives(); + + delete mIcon; + mIcon = NULL; + + delete mTitle; + mTitle = NULL; + + delete mBodyText; + mBodyText = NULL; + + delete mTimeStamp; + mTimeStamp= NULL; + + delete mFrameItem; + mFrameItem = NULL; + + createPrimitives(); + + CNT_EXIT +} + +void CntHistoryViewItemWidget::setModelIndex(const QModelIndex& index) +{ + CNT_ENTRY + + // CntHistoryModel ALWAYS returns 3x QString for Qt::DisplayRole + QStringList texts = index.data(Qt::DisplayRole).toStringList(); + title = texts.at(0); + bodyText = texts.at(1); + timeStamp = texts.at(2); + + icon = index.data(Qt::DecorationRole).value(); + + backGround = index.data(Qt::BackgroundRole).value(); + + int flags = index.data(CntFlagsRole).toInt(); + incoming = flags & CntIncoming ? true : false; + newmessage = flags & CntUnseen ? true : false; + + if (newmessage) + { + if (!mNewItem) + { + mNewItem = new HbFrameItem(NEW_EVENT_FRAME, HbFrameDrawer::ThreePiecesVertical, this); + style()->setItemName(mNewItem, "newitem"); + } + } + else + { + if (mNewItem) + { + delete mNewItem; + mNewItem = NULL; + } + } + + recreatePrimitives(); + repolish(); + + setProperty("state", "normal"); + + CNT_EXIT +} + +void CntHistoryViewItemWidget::pressStateChanged(bool pressed) +{ + CNT_ENTRY + + if (pressed) + { + if (!mFocusItem) + { + if (incoming) + { + mFocusItem = new HbFrameItem(INCOMING_FOCUS_FRAME, HbFrameDrawer::NinePieces, this); + } + else + { + mFocusItem = new HbFrameItem(OUTGOING_FOCUS_FRAME, HbFrameDrawer::NinePieces, this); + } + mFocusItem->setZValue(-1.0); + style()->setItemName(mFocusItem, "focusframe"); + } + + setProperty("state", "pressed"); + } + else + { + if (mFocusItem) + { + delete mFocusItem; + mFocusItem = NULL; + } + + setProperty("state", "normal"); + } + + repolish(); + + CNT_EXIT +}