phonebookui/pbkcommonui/src/cntdetaileditor.cpp
changeset 53 e6aff7b69165
parent 50 77bc263e1626
child 61 d30183af6ca6
equal deleted inserted replaced
51:81c360d47083 53:e6aff7b69165
    35 #include <hbscrollbar.h>
    35 #include <hbscrollbar.h>
    36 #include <hbdevicenotificationdialog.h>
    36 #include <hbdevicenotificationdialog.h>
    37 #include <hbparameterlengthlimiter.h>
    37 #include <hbparameterlengthlimiter.h>
    38 
    38 
    39 #include <QApplication>
    39 #include <QApplication>
       
    40 #include <QTimer>
    40 
    41 
    41 const char *CNT_DETAILEDITOR_XML = ":/xml/contacts_detail_editor.docml";
    42 const char *CNT_DETAILEDITOR_XML = ":/xml/contacts_detail_editor.docml";
    42 
    43 
    43 CntDetailEditor::CntDetailEditor( int aId ) :
    44 CntDetailEditor::CntDetailEditor( int aId ) :
    44     QObject(),
    45     QObject(),
   124     else
   125     else
   125     {
   126     {
   126         selectedContact = aArgs.value(ESelectedContact).value<QContact>();
   127         selectedContact = aArgs.value(ESelectedContact).value<QContact>();
   127         connect( mDataForm, SIGNAL(itemShown(const QModelIndex&)), this, SLOT(handleItemShown(const QModelIndex&)) );
   128         connect( mDataForm, SIGNAL(itemShown(const QModelIndex&)), this, SLOT(handleItemShown(const QModelIndex&)) );
   128     }
   129     }
       
   130     
       
   131     QContactManager* cm = mViewManager->contactManager(SYMBIAN_BACKEND);
       
   132     connect(cm, SIGNAL(contactsRemoved(const QList<QContactLocalId>&)), 
       
   133         this, SLOT(contactDeletedFromOtherSource(const QList<QContactLocalId>&)));
       
   134     
   129     mEditorFactory->setupEditorView(*this, selectedContact);
   135     mEditorFactory->setupEditorView(*this, selectedContact);
   130     
   136     
   131     QString myCard = mArgs.value( EMyCard ).toString();
   137     QString myCard = mArgs.value( EMyCard ).toString();
   132     QContactLocalId localId = selectedContact.localId();
   138     QContactLocalId localId = selectedContact.localId();
   133     QContactLocalId selfContactId = mViewManager->contactManager(SYMBIAN_BACKEND)->selfContactId();
   139     QContactLocalId selfContactId = mViewManager->contactManager(SYMBIAN_BACKEND)->selfContactId();
   162 {
   168 {
   163     if( mId == groupEditorView) {
   169     if( mId == groupEditorView) {
   164         QContactManager* mgr = mViewManager->contactManager(SYMBIAN_BACKEND);
   170         QContactManager* mgr = mViewManager->contactManager(SYMBIAN_BACKEND);
   165         mgr->saveContact( mDataFormModel->contact() );
   171         mgr->saveContact( mDataFormModel->contact() );
   166     }
   172     }
       
   173     
       
   174     QContactManager *cm = mViewManager->contactManager(SYMBIAN_BACKEND);
       
   175     disconnect(cm, SIGNAL(contactsRemoved(const QList<QContactLocalId>&)),
       
   176             this, SLOT(contactDeletedFromOtherSource(const QList<QContactLocalId>&)));
   167 }
   177 }
   168     
   178     
   169 bool CntDetailEditor::isDefault() const
   179 bool CntDetailEditor::isDefault() const
   170 {
   180 {
   171     return false;
   181     return false;
   190     mDataFormModel->insertDetailField();
   200     mDataFormModel->insertDetailField();
   191 }
   201 }
   192 
   202 
   193 void CntDetailEditor::handleItemShown(const QModelIndex& aIndex )
   203 void CntDetailEditor::handleItemShown(const QModelIndex& aIndex )
   194 {
   204 {
   195     if ( mId == groupEditorView )
   205     HbDataFormModelItem* modelItem = mDataFormModel->itemFromIndex( aIndex );
   196     {
   206     
   197         CntGroupEditorModel* groupModel = static_cast<CntGroupEditorModel*>( mDataFormModel );    
   207     if ( modelItem->type() == HbDataFormModelItem::TextItem ) 
   198         if ( groupModel->isConferenceNumber(aIndex) )
   208     {
       
   209         HbDataFormViewItem* viewItem = static_cast<HbDataFormViewItem*>(mDataForm->itemByIndex( aIndex ));
       
   210         HbLineEdit* edit = static_cast<HbLineEdit*>( viewItem->dataItemContentWidget() );
       
   211         QString objName;
       
   212         
       
   213         if ( mId == groupEditorView )
   199         {
   214         {
   200             HbDataFormViewItem* viewItem = static_cast<HbDataFormViewItem*>(mDataForm->itemByIndex( aIndex ));
   215             CntGroupEditorModel* groupModel = static_cast<CntGroupEditorModel*>( mDataFormModel );    
   201             HbLineEdit* edit = static_cast<HbLineEdit*>( viewItem->dataItemContentWidget() );
   216             if ( groupModel->isConferenceNumber(aIndex) )
   202             edit->setInputMethodHints( Qt::ImhDialableCharactersOnly );
   217             {
       
   218                 edit->setInputMethodHints( Qt::ImhDialableCharactersOnly );
       
   219                 objName = "Conference number line edit %1";
       
   220             }
       
   221             else
       
   222             {
       
   223                 edit->setInputMethodHints( Qt::ImhNoPredictiveText );
       
   224                 objName = "Group name line edit %1";
       
   225             }
   203         }
   226         }
   204         else
   227         else
   205         {
   228         {
   206             HbDataFormViewItem* viewItem = static_cast<HbDataFormViewItem*>(mDataForm->itemByIndex( aIndex ));
       
   207             HbLineEdit* edit = static_cast<HbLineEdit*>( viewItem->dataItemContentWidget() );
       
   208             edit->setInputMethodHints( Qt::ImhNoPredictiveText );
   229             edit->setInputMethodHints( Qt::ImhNoPredictiveText );
       
   230             
       
   231             if (modelItem->contentWidgetData( "preferDigits" ).toBool())
       
   232             {
       
   233                 edit->setInputMethodHints( Qt::ImhPreferNumbers );
       
   234             }
       
   235             
       
   236             objName = mDataFormModel->detail().definitionName() + " line edit %1";
   209         }
   237         }
   210     }
       
   211     else
       
   212     {
       
   213         HbDataFormViewItem* viewItem = static_cast<HbDataFormViewItem*>(mDataForm->itemByIndex( aIndex ));
       
   214         HbLineEdit* edit = static_cast<HbLineEdit*>( viewItem->dataItemContentWidget() );
       
   215         edit->setInputMethodHints( Qt::ImhNoPredictiveText );
       
   216         
   238         
   217         HbDataFormModelItem* modelItem = mDataFormModel->itemFromIndex( aIndex );
   239         // Naming UI components for automation testability
   218         if (modelItem->contentWidgetData( "preferDigits" ).toBool())
   240         edit->setObjectName(objName.arg(aIndex.row()));
   219         {
       
   220             edit->setInputMethodHints( Qt::ImhPreferNumbers );
       
   221         }
       
   222     }
   241     }
   223 }
   242 }
   224 
   243 
   225 void CntDetailEditor::discardChanges()
   244 void CntDetailEditor::discardChanges()
   226 {
   245 {
   267 */
   286 */
   268 void CntDetailEditor::saveContact()
   287 void CntDetailEditor::saveContact()
   269 {
   288 {
   270     mDataFormModel->saveContactDetails();
   289     mDataFormModel->saveContactDetails();
   271     
   290     
   272     QString name = mViewManager->contactManager(SYMBIAN_BACKEND)->synthesizedDisplayLabel(*mDataFormModel->contact());
   291     QString name = mViewManager->contactManager(SYMBIAN_BACKEND)->synthesizedContactDisplayLabel(*mDataFormModel->contact());
   273     
   292     
   274     if (name.isEmpty())
   293     if (name.isEmpty())
   275     {
   294     {
   276         name = hbTrId("txt_phob_list_unnamed");
   295         name = hbTrId("txt_phob_list_unnamed");
   277     }
   296     }
   325 int CntDetailEditor::viewId() const
   344 int CntDetailEditor::viewId() const
   326 {
   345 {
   327     return mId;
   346     return mId;
   328 }
   347 }
   329 
   348 
       
   349 /*!
       
   350 Go back to the root view
       
   351 */
       
   352 void CntDetailEditor::showRootView()
       
   353 {   
       
   354     mViewManager->back( mArgs, true );
       
   355 }
       
   356 
       
   357 
       
   358 void CntDetailEditor::contactDeletedFromOtherSource(const QList<QContactLocalId>& contactIds)
       
   359 {
       
   360     CNT_ENTRY
       
   361     
       
   362     QContact normalContact = mArgs.value(ESelectedContact).value<QContact>();
       
   363     QContact groupContact = mArgs.value(ESelectedGroupContact).value<QContact>();
       
   364     if ( contactIds.contains(normalContact.localId()) || contactIds.contains(groupContact.localId()) )
       
   365     {
       
   366         // Do not switch to the previous view immediately. List views are
       
   367         // not updated properly if this is not done in the event loop
       
   368         QTimer::singleShot(0, this, SLOT(showRootView()));
       
   369     }
       
   370     CNT_EXIT
       
   371 }
       
   372 
   330 // End of File
   373 // End of File