phonebookui/pbkcommonui/src/cnteditview_p.cpp
changeset 37 fd64c38c277d
parent 31 2a11b5b00470
child 40 b46a585f6909
--- a/phonebookui/pbkcommonui/src/cnteditview_p.cpp	Fri May 14 15:42:23 2010 +0300
+++ b/phonebookui/pbkcommonui/src/cnteditview_p.cpp	Thu May 27 12:45:19 2010 +0300
@@ -34,6 +34,7 @@
 #include <hbmenu.h>
 #include <hbframebackground.h>
 #include <hbparameterlengthlimiter.h>
+#include <hbnotificationdialog.h>
 
 const char *CNT_EDIT_XML = ":/xml/contacts_ev.docml";
 
@@ -122,8 +123,8 @@
         setOrientation(window->orientation());
     }
         
-    QVariant selectedAction = mArgs.value( EMyCard );
-    QString myCard = selectedAction.toString();
+    QString myCard = mArgs.value( EMyCard ).toString();
+    QString selectedAction = mArgs.value( ESelectedAction ).toString();
     
     QVariant contact = aArgs.value( ESelectedContact );
     mContact = new QContact( contact.value<QContact>() );
@@ -182,6 +183,21 @@
 void CntEditViewPrivate::deactivate()
 {   
 }
+
+void CntEditViewPrivate::openView(CntViewParameters& viewParams)
+{
+    QList<int> keys = viewParams.keys();
+    for(int i = 0;i < keys.count();i++)
+    {
+        mArgs.insert(keys.at(i), viewParams.value(keys.at(i)));
+    }
+    mMgr->changeView( mArgs );
+}
+
+void CntEditViewPrivate::requestRefresh()
+{
+    mModel->refreshExtensionItems();
+}
     
 void CntEditViewPrivate::activated( const QModelIndex& aIndex )
 {
@@ -189,8 +205,7 @@
     QVariant type = item->data( ERoleItemType );
     if ( type == QVariant(ETypeUiExtension) )
     {
-        item->activated();
-        mModel->refreshExtensionItems( aIndex );
+        item->activated(this);
     }
     else
     {
@@ -214,8 +229,7 @@
     // Ui extensions handle the long press by themselves.
     if ( type == QVariant(ETypeUiExtension) )
     {
-        item->longPressed( aCoords );
-        mModel->refreshExtensionItems( aItem->modelIndex() );
+        item->longPressed( aCoords, this );
     }
     // only detail items are able to show context specific menu
     else
@@ -235,7 +249,7 @@
     CntEditViewItem* item = mModel->itemAt( index );
     if ( aAction )
     {
-        switch ( aAction->commandRole() )  
+        switch ( aAction->property("menu").toInt() )  
         {
         case HbAction::EditRole:
         {
@@ -382,12 +396,25 @@
                 {
                     mgr->setSelfContactId( mContact->localId() );
                 }
+                
+                emit contactUpdated(success);
+                
+                QString name = mgr->synthesizedDisplayLabel( *mContact );
+                
+                if ( success )
+                {
+                    HbNotificationDialog::launchDialog(HbParameterLengthLimiter("txt_phob_dpophead_contact_1_saved").arg(name));
+                }
+                else
+                {
+                    //TODO: localization is missing
+                    HbNotificationDialog::launchDialog(qtTrId("SAVING FAILED!"));
+                }
+                
                 QVariant var;
                 var.setValue(*mContact);
                 mArgs.insert(ESelectedContact, var);
-                mArgs.insert( ESelectedAction, success ? "save" : "failed" );
-                emit contactUpdated(success);
-            }
+            }        
         }
         else
         {
@@ -400,24 +427,28 @@
                 
                 bool success = mgr->removeContact( mContact->localId() );
                 emit contactRemoved(success);
-                if ( success )
-                {
-                    mArgs.insert( ESelectedAction, "delete" );
-                    QVariant contact;
-                    contact.setValue( c );
-                    mArgs.insert( ESelectedContact, contact );
-                }
             }
             else
             {
                 bool success = mgr->saveContact(mContact);
-                mArgs.insert( ESelectedAction, success ? "save" : "failed");
+                
+                emit contactUpdated( success );
+                
+                QString name = mgr->synthesizedDisplayLabel( *mContact );
+                
+                if ( success )
+                {
+                    HbNotificationDialog::launchDialog(HbParameterLengthLimiter("txt_phob_dpophead_contacts_1_updated").arg(name));
+                }
+                else
+                {
+                    //TODO: localization is missing
+                    HbNotificationDialog::launchDialog(qtTrId("SAVING FAILED!"));
+                }
                 
                 QVariant var;
                 var.setValue(*mContact);
-                mArgs.insert(ESelectedContact, var);
-                    
-                emit contactUpdated( success );
+                mArgs.insert(ESelectedContact, var);           
             }
         }
     }
@@ -502,9 +533,8 @@
              def == QContactUrl::DefinitionName || 
              def == QContactNote::DefinitionName )
         {
-            HbAction* add = menu->addAction(HbParameterLengthLimiter(
-                    map->getContactEditorAddLocString(detail.definitionName(), "")));
-            add->setCommandRole( HbAction::NewRole );
+            HbAction* add = menu->addAction(map->getContactEditorAddLocString(detail.definitionName(), ""));
+            add->setProperty( "menu", HbAction::NewRole );
             add->setData( data );
         }
         
@@ -532,18 +562,19 @@
             context = QString();
             subtype = detail.definitionName();
         }
-            HbAction* edit = menu->addAction(HbParameterLengthLimiter(map->getContactEditorEditLocString(subtype, context)));
-            HbAction* del = menu->addAction(HbParameterLengthLimiter(map->getContactEditorDelLocString(subtype, context)));
-            edit->setCommandRole( HbAction::EditRole );
-            del->setCommandRole( HbAction::DeleteRole );
-            edit->setData( data );
-            del->setData( data );
+        
+        HbAction* edit = menu->addAction(hbTrId("txt_common_menu_edit"));
+        HbAction* del = menu->addAction(map->getContactEditorDelLocString(subtype, context));
+        edit->setProperty( "menu", HbAction::EditRole );
+        del->setProperty( "menu" , HbAction::DeleteRole );
+        edit->setData( data );
+        del->setData( data );
     }
     else
     {
-        HbAction* edit = menu->addAction(HbParameterLengthLimiter(map->getContactEditorEditLocString(detail.definitionName(), "")));
-        edit->setCommandRole( HbAction::EditRole );
-        edit->setData( data );
+        HbAction* add = menu->addAction(map->getContactEditorAddLocString(detail.definitionName(), ""));
+        add->setProperty( "menu", HbAction::NewRole );
+        add->setData( data );
     }
     
     return menu;