diff -r 16ed8d08d0b1 -r 478bc57ad291 emailuis/nmailuiwidgets/src/nmattachmentlistitem.cpp --- a/emailuis/nmailuiwidgets/src/nmattachmentlistitem.cpp Wed Aug 18 09:37:47 2010 +0300 +++ b/emailuis/nmailuiwidgets/src/nmattachmentlistitem.cpp Thu Sep 02 20:15:00 2010 +0300 @@ -19,6 +19,8 @@ static const QString FILE_PATH_WIDGETML = ":nmattachmentlistitem.widgetml"; static const QString FILE_PATH_CSS = ":nmattachmentlistitem.css"; +static const QString LIST_ITEM_BG_FRAME_NORMAL ("qtg_fr_list_normal"); +static const QString LIST_ITEM_BG_FRAME_PRESSED("qtg_fr_list_pressed"); static const int PROGRESSBAR_MIN = 0; static const int PROGRESSBAR_MAX = 100; @@ -43,7 +45,8 @@ : HbWidget( parent ), mFileNameText(NULL), mFileSizeText(NULL), - mProgressBar(NULL) + mProgressBar(NULL), + mBackGround(NULL) { NM_FUNCTION; @@ -52,6 +55,8 @@ // Informs GestureFramework that NmAttachmentListItem widget is interested // Tap gesture and TapAndHold gesture. grabGesture(Qt::TapGesture); + HbEffect::add("mailAttachmentWidget", "listviewitem_press", "pressed"); + HbEffect::add("mailAttachmentWidget", "listviewitem_release", "released"); } /*! @@ -185,19 +190,34 @@ { NM_FUNCTION; + //background + QScopedPointer backGround(new HbFrameItem(this)); + backGround->frameDrawer().setFrameGraphicsName(LIST_ITEM_BG_FRAME_NORMAL); + backGround->frameDrawer().setFrameType(HbFrameDrawer::NinePieces); + setBackgroundItem(backGround.data()); + // ownership was transferred to base class + mBackGround = backGround.take(); + + //construct default ui. HbStyleLoader::registerFilePath(FILE_PATH_WIDGETML); HbStyleLoader::registerFilePath(FILE_PATH_CSS); - mFileNameText = new HbTextItem(this); - mFileNameText->setObjectName("nmattachmentlistitem_filenametext"); - HbStyle::setItemName( mFileNameText, "filename" ); - mFileNameText->setElideMode(Qt::ElideRight); - - mFileSizeText = new HbTextItem(this); - mFileSizeText->setObjectName("nmattachmentlistitem_filenamesize"); - HbStyle::setItemName( mFileSizeText, "filesize" ); - mFileSizeText->setElideMode(Qt::ElideNone); + + QScopedPointer fileNameText(new HbTextItem(this)); + fileNameText->setObjectName("nmattachmentlistitem_filenametext"); + HbStyle::setItemName( fileNameText.data(), "filename" ); + fileNameText->setElideMode(Qt::ElideRight); + + + QScopedPointer fileSizeText(new HbTextItem(this)); + fileSizeText->setObjectName("nmattachmentlistitem_filenamesize"); + HbStyle::setItemName( fileSizeText.data(), "filesize" ); + fileSizeText->setElideMode(Qt::ElideNone); + + // ownership transferred to this object + mFileSizeText = fileSizeText.take(); + mFileNameText = fileNameText.take(); } @@ -220,25 +240,32 @@ /*! This function handles gestures */ + void NmAttachmentListItem::gestureEvent(QGestureEvent *event) { NM_FUNCTION; if (HbTapGesture *tap = qobject_cast(event->gesture(Qt::TapGesture))) { switch(tap->tapStyleHint()) { - case HbTapGesture::Tap: + case HbTapGesture::Tap: { - if (tap->state() == Qt::GestureFinished) { + Qt::GestureState state = tap->state(); + HbInstantFeedback::play(HbFeedback::Basic); + setPressed(true); + if (state == Qt::GestureFinished) { emit itemActivated(); + setPressed(false); + } + else if (state == Qt::GestureCanceled) { + setPressed(false); } } break; case HbTapGesture::TapAndHold: { - if (tap->state() == Qt::GestureFinished) { emit itemLongPressed(event->mapToGraphicsScene(tap->position())); - } + setPressed(false); } break; } @@ -248,4 +275,22 @@ } } +/*! + Sets the effect of the item when tapping it +*/ +void NmAttachmentListItem::setPressed(bool pressed) +{ + if (pressed) { + setProperty("state", "pressed"); + mBackGround->frameDrawer().setFrameGraphicsName(LIST_ITEM_BG_FRAME_PRESSED); + HbEffect::cancel(mBackGround, "released"); + HbEffect::start(mBackGround, "mailAttachmentWidget", "pressed"); + } + else { + setProperty("state", "normal"); + mBackGround->frameDrawer().setFrameGraphicsName(LIST_ITEM_BG_FRAME_NORMAL); + HbEffect::cancel(mBackGround, "pressed"); + HbEffect::start(mBackGround, "mailAttachmentWidget", "released"); + } +}