diff -r 0ba2181d7c28 -r 76a2435edfd4 phonebookui/pbkcommonui/src/cntdateeditorviewitem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookui/pbkcommonui/src/cntdateeditorviewitem.cpp Fri Apr 16 14:53:18 2010 +0300 @@ -0,0 +1,146 @@ +/* +* 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 + +#include + +CntDateEditorViewItem::CntDateEditorViewItem( QGraphicsItem* aParent ) : +CntDetailViewItem( aParent ) + { + 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(); + + QString buttonText = qtTrId( "No date set" ); + if ( detail.definitionName() == QContactBirthday::DefinitionName ) + { + QContactBirthday bd = detail; + QDate date = editDate( bd.date(), qtTrId("Birthday") ); + if ( date != bd.date() ) + { + bd.setDate( date ); + item->setDetail( bd ); + } + buttonText = mLocale.toString( date ); + } + + if ( detail.definitionName() == QContactAnniversary::DefinitionName ) + { + QContactAnniversary anniversary = detail; + QDate date = editDate( anniversary.originalDate(), qtTrId("Anniversary") ); + if ( date != anniversary.originalDate() ) + { + anniversary.setOriginalDate( date ); + item->setDetail( anniversary ); + } + buttonText = mLocale.toString( date ); + } + + mButton->setText( buttonText ); + } + +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( qtTrId("No date set") ); + + if ( detail.definitionName() == QContactBirthday::DefinitionName ) + { + QContactBirthday birthday = detail; + if ( !birthday.isEmpty() ) + { + text = mLocale.toString( birthday.date() ); + } + } + + if ( detail.definitionName() == QContactAnniversary::DefinitionName ) + { + QContactAnniversary anniversary = detail; + if ( !anniversary.isEmpty() ) + { + text = mLocale.toString( anniversary.originalDate() ); + } + } + mButton->setText( text ); + return mButton; + } + +QDate CntDateEditorViewItem::editDate( QDate aCurrent, QString aTitle ) + { + QPointer popup = new HbDialog(); + popup->setDismissPolicy(HbDialog::NoDismiss); + popup->setTimeout(HbPopup::NoTimeout); + + HbDateTimePicker *picker = new HbDateTimePicker( popup ); + picker->setDisplayFormat( mLocale.dateFormat() ); + picker->setDateRange(CNT_DATEPICKER_FROM, CNT_DATEPICKER_TO ); + picker->setDate( aCurrent ); + + HbTextItem *headingText = new HbTextItem( popup ); + headingText->setFontSpec( HbFontSpec(HbFontSpec::Title) ); + headingText->setText( aTitle ); + + popup->setHeadingWidget(headingText); + popup->setContentWidget(picker); + popup->setPrimaryAction(new HbAction(qtTrId("Ok"), popup)); + popup->setSecondaryAction(new HbAction(qtTrId("Cancel"), popup)); + + HbAction *selected = popup->exec(); + QDate date = (selected == popup->primaryAction()) ? picker->date() : aCurrent; + delete popup; + + return date; + } + +// End of File