diff -r 59984e68247d -r 6abfb1094884 phonebookui/cntcommonui/contacteditors/cntdateeditorviewitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/cntcommonui/contacteditors/cntdateeditorviewitem.cpp Tue Sep 21 17:07:25 2010 +0300 @@ -0,0 +1,189 @@ +/* +* 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 "cntdateeditorviewitem.h" +#include "cntdetailmodelitem.h" +#include "cntdetailconst.h" + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +CntDateEditorViewItem::CntDateEditorViewItem( QGraphicsItem* aParent ) : + CntDetailViewItem( aParent ), + mButton(NULL) +{ + mLocale = QLocale::system(); +} + +CntDateEditorViewItem::~CntDateEditorViewItem() +{ +} + +HbAbstractViewItem* CntDateEditorViewItem::createItem() +{ + return new CntDateEditorViewItem( *this ); +} + +void CntDateEditorViewItem::clicked() +{ + HbDataFormModel* model = static_cast(itemView()->model()); + CntDetailModelItem* item = static_cast( model->itemFromIndex(modelIndex()) ); + QContactDetail detail = item->detail(); + + if ( detail.definitionName() == QContactBirthday::DefinitionName ) + { + QContactBirthday bd = detail; + if (bd.date().isNull()) + { + editDate( QDate::currentDate(), hbTrId("txt_phob_formlabel_birthday") ); + } + else + { + editDate( bd.date(), hbTrId("txt_phob_formlabel_birthday") ); + } + } + + if ( detail.definitionName() == QContactAnniversary::DefinitionName ) + { + QContactAnniversary anniversary = detail; + if (anniversary.originalDate().isNull()) + { + editDate( QDate::currentDate(), hbTrId("txt_phob_formlabel_anniversary") ); + } + else + { + editDate( anniversary.originalDate(), hbTrId("txt_phob_formlabel_anniversary") ); + } + } +} + +HbWidget* CntDateEditorViewItem::createCustomWidget() +{ + mButton = new HbPushButton(); + connect( mButton, SIGNAL(clicked(bool)), this, SLOT(clicked()) ); + + HbDataFormModel* model = static_cast(itemView()->model()); + CntDetailModelItem* item = static_cast( model->itemFromIndex(modelIndex()) ); + + QContactDetail detail = item->detail(); + QString text(hbTrId("txt_phob_formlabel_val_formlabel_val_no_date_set")); + QString buttonObjName; + + if ( detail.definitionName() == QContactBirthday::DefinitionName ) + { + buttonObjName = detail.definitionName() + " button"; + QContactBirthday birthday = detail; + if ( !birthday.isEmpty() ) + { + text = mLocale.toString( birthday.date() ); + } + } + + if ( detail.definitionName() == QContactAnniversary::DefinitionName ) + { + buttonObjName = detail.definitionName() + " button"; + QContactAnniversary anniversary = detail; + if ( !anniversary.isEmpty() ) + { + text = mLocale.toString( anniversary.originalDate() ); + } + } + mButton->setText( text ); + // Naming UI components for automation testability + mButton->setObjectName(buttonObjName); + return mButton; +} + +void CntDateEditorViewItem::editDate( QDate aCurrent, QString aTitle ) +{ + HbDialog *popup = new HbDialog(); + popup->setDismissPolicy(HbDialog::NoDismiss); + popup->setTimeout(HbPopup::NoTimeout); + popup->setAttribute(Qt::WA_DeleteOnClose, true); + + HbDateTimePicker *picker = new HbDateTimePicker( popup ); + picker->setDisplayFormat( mLocale.dateFormat(QLocale::ShortFormat) ); + picker->setDateRange(CNT_DATEPICKER_FROM, CNT_DATEPICKER_TO ); + picker->setDate( aCurrent ); + + HbLabel *headingText = new HbLabel( popup ); + headingText->setPlainText( aTitle ); + + popup->setHeadingWidget(headingText); + popup->setContentWidget(picker); + popup->addAction(new HbAction(hbTrId("txt_common_button_ok"), popup)); + popup->addAction(new HbAction(hbTrId("txt_common_button_cancel"), popup)); + + popup->open(this, SLOT(handleEditDate(HbAction*))); +} + +void CntDateEditorViewItem::changeDate( QDate aNewDate ) +{ + HbDataFormModel* model = static_cast(itemView()->model()); + CntDetailModelItem* item = static_cast( model->itemFromIndex(modelIndex()) ); + QContactDetail detail = item->detail(); + + QString buttonText("No date set"); // loc missing + if ( detail.definitionName() == QContactBirthday::DefinitionName ) + { + QContactBirthday bd = detail; + if ( aNewDate != bd.date() ) + { + bd.setDate( aNewDate ); + item->setDetail( bd ); + } + buttonText = mLocale.toString( aNewDate ); + } + + if ( detail.definitionName() == QContactAnniversary::DefinitionName ) + { + QContactAnniversary anniversary = detail; + if ( aNewDate != anniversary.originalDate() ) + { + anniversary.setOriginalDate( aNewDate ); + item->setDetail( anniversary ); + } + buttonText = mLocale.toString( aNewDate ); + } + + mButton->setText( buttonText ); +} + +void CntDateEditorViewItem::handleEditDate( HbAction *aAction ) +{ + HbDialog *popup = static_cast(sender()); + + if (popup && aAction == popup->actions().first()) + { + QDate date = static_cast(popup->contentWidget())->date(); + changeDate(date); + } + +} + +// End of File