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 { |
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 |