phonebookui/pbkcommonui/src/cntdateeditorviewitem.cpp
changeset 31 2a11b5b00470
parent 27 de1630741fbe
child 47 7cbcb2896f0e
--- a/phonebookui/pbkcommonui/src/cntdateeditorviewitem.cpp	Mon May 03 12:24:20 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cntdateeditorviewitem.cpp	Fri May 14 15:42:23 2010 +0300
@@ -30,118 +30,141 @@
 #include <hbpushbutton.h>
 #include <hbdialog.h>
 #include <hbdatetimepicker.h>
-#include <hbtextitem.h>
+#include <hblabel.h>
 #include <hbaction.h>
 
-#include <QPointer>
-
 CntDateEditorViewItem::CntDateEditorViewItem( QGraphicsItem* aParent ) : 
-CntDetailViewItem( aParent ),
-mButton(NULL)
-    {
+    CntDetailViewItem( aParent ),
+    mButton(NULL)
+{
     mLocale = QLocale::system();
-    }
+}
 
 CntDateEditorViewItem::~CntDateEditorViewItem()
-    {
-    }
+{
+}
 
 HbAbstractViewItem* CntDateEditorViewItem::createItem()
-    {
+{
     return new CntDateEditorViewItem( *this );
-    }
+}
 
 void CntDateEditorViewItem::clicked()
-    {
+{
     HbDataFormModel* model = static_cast<HbDataFormModel*>(itemView()->model());
     CntDetailModelItem* item = static_cast<CntDetailModelItem*>( 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 );
+        editDate( bd.date(), hbTrId("txt_phob_formlabel_birthday") );
     }
 
+    if ( detail.definitionName() == QContactAnniversary::DefinitionName )
+    {
+        QContactAnniversary anniversary = detail;
+        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<HbDataFormModel*>(itemView()->model());
     CntDetailModelItem* item = static_cast<CntDetailModelItem*>( model->itemFromIndex(modelIndex()) );
-    
+
     QContactDetail detail = item->detail();
-    QString text( qtTrId("No date set") );
-    
+    QString text("No date set"); // loc missing
+
     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<HbDialog> popup = new HbDialog();
+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() );
     picker->setDateRange(CNT_DATEPICKER_FROM, CNT_DATEPICKER_TO );
     picker->setDate( aCurrent );
-                
-    HbTextItem *headingText = new HbTextItem( popup );
-    headingText->setFontSpec( HbFontSpec(HbFontSpec::Title) );
-    headingText->setText( aTitle );
-    
+
+    HbLabel *headingText = new HbLabel( popup );
+    headingText->setPlainText( aTitle );
+
     popup->setHeadingWidget(headingText);
     popup->setContentWidget(picker);
-    popup->setPrimaryAction(new HbAction(qtTrId("Ok"), popup));
-    popup->setSecondaryAction(new HbAction(qtTrId("Cancel"), popup));
+    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*)));
+}
 
-    HbAction *selected = popup->exec();
-    QDate date = (selected == popup->primaryAction()) ? picker->date() : aCurrent;
-    delete popup;
-    
-    return date;
+void CntDateEditorViewItem::changeDate( QDate aNewDate )
+{
+    HbDataFormModel* model = static_cast<HbDataFormModel*>(itemView()->model());
+    CntDetailModelItem* item = static_cast<CntDetailModelItem*>( 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<HbDialog*>(sender());
+    
+    if (popup && aAction == popup->actions().first())
+    {
+        QDate date = static_cast<HbDateTimePicker*>(popup->contentWidget())->date();
+        changeDate(date);
+    }
+            
+}
+
 // End of File