22 #include "contacteditorwidget.h"
24 #include "addresseditwidget.h"
25 #include "categorieseditwidget.h"
26 #include "contacteditorpageplugin.h"
27 #include "contactmetadata_p.h"
28 #include "customfieldseditwidget.h"
29 #include "dateeditwidget.h"
30 #include "displaynameeditwidget.h"
31 #include "emaileditwidget.h"
32 #include "freebusyeditwidget.h"
33 #include "geoeditwidget.h"
34 #include "imagewidget.h"
35 #include "imeditwidget.h"
36 #include "nameeditwidget.h"
37 #include "phoneeditwidget.h"
38 #include "soundeditwidget.h"
41 #include <kconfiggroup.h>
42 #include <klineedit.h>
44 #include <kstandarddirs.h>
45 #include <ktabwidget.h>
46 #include <ktextedit.h>
47 #include <kurlrequester.h>
49 #include <Nepomuk2/ResourceManager>
51 #include <QtCore/QDirIterator>
52 #include <QtCore/QPluginLoader>
58 class ContactEditorWidget::Private
62 : mDisplayMode(displayMode), mParent( parent ), mCustomFieldsWidget(0)
67 void initGuiContactTab();
68 void initGuiLocationTab();
69 void initGuiBusinessTab();
70 void initGuiPersonalTab();
71 void initGuiNotesTab();
72 void initGuiCustomFieldsTab();
74 void loadCustomPages();
76 QString loadCustom(
const KABC::Addressee &contact,
const QString &key )
const;
77 void storeCustom( KABC::Addressee &contact,
const QString &key,
const QString &value )
const;
81 KTabWidget *mTabWidget;
85 ImageWidget *mPhotoWidget;
87 KLineEdit *mNickNameWidget;
88 SoundEditWidget *mPronunciationWidget;
92 KLineEdit *mHomepageWidget;
93 KLineEdit *mBlogWidget;
101 KComboBox* mMailPreferFormatting;
102 QCheckBox *mAllowRemoteContent;
109 GeoEditWidget *mCoordinatesWidget;
112 ImageWidget *mLogoWidget;
113 KLineEdit *mOrganizationWidget;
114 KLineEdit *mProfessionWidget;
115 KLineEdit *mTitleWidget;
116 KLineEdit *mDepartmentWidget;
117 KLineEdit *mOfficeWidget;
118 KLineEdit *mManagerWidget;
119 KLineEdit *mAssistantWidget;
122 FreeBusyEditWidget *mFreeBusyWidget;
125 KTextEdit *mNotesWidget;
128 DateEditWidget *mBirthdateWidget;
129 DateEditWidget *mAnniversaryWidget;
132 KLineEdit *mPartnerWidget;
135 CustomFieldsEditWidget *mCustomFieldsWidget;
138 QList<Akonadi::ContactEditorPagePlugin*> mCustomPages;
141 void ContactEditorWidget::Private::initGui()
143 QVBoxLayout *layout =
new QVBoxLayout( mParent );
144 layout->setMargin( 0 );
146 mTabWidget =
new KTabWidget( mParent );
147 layout->addWidget( mTabWidget );
150 initGuiLocationTab();
151 initGuiBusinessTab();
152 initGuiPersonalTab();
154 if(mDisplayMode == FullMode) {
155 initGuiCustomFieldsTab();
160 void ContactEditorWidget::Private::initGuiContactTab()
162 QWidget *widget =
new QWidget;
163 QGridLayout *layout =
new QGridLayout( widget );
165 mTabWidget->addTab( widget, i18nc(
"@title:tab",
"Contact" ) );
167 QGroupBox *nameGroupBox =
new QGroupBox( i18nc(
"@title:group Name related properties of a contact",
"Name" ) );
168 QGroupBox *internetGroupBox =
new QGroupBox( i18nc(
"@title:group",
"Internet" ) );
169 QGroupBox *phonesGroupBox =
new QGroupBox( i18nc(
"@title:group",
"Phones" ) );
171 layout->addWidget( nameGroupBox, 0, 0 );
172 layout->addWidget( internetGroupBox, 0, 1 );
173 layout->addWidget( phonesGroupBox, 1, 0, 4, 1 );
175 QGridLayout *nameLayout =
new QGridLayout( nameGroupBox );
176 QGridLayout *internetLayout =
new QGridLayout( internetGroupBox );
177 QGridLayout *phonesLayout =
new QGridLayout( phonesGroupBox );
182 label =
new QLabel( i18nc(
"@label The name of a contact",
"Name:" ) );
183 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
184 nameLayout->addWidget( label, 0, 0 );
187 label->setBuddy( mNameWidget );
188 nameLayout->addWidget( mNameWidget, 0, 1 );
190 mPhotoWidget =
new ImageWidget( ImageWidget::Photo );
191 mPhotoWidget->setMinimumSize( QSize( 100, 140 ) );
192 nameLayout->addWidget( mPhotoWidget, 0, 2, 4, 1 );
194 label =
new QLabel( i18nc(
"@label The display name of a contact",
"Display:" ) );
195 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
196 nameLayout->addWidget( label, 1, 0 );
199 label->setBuddy( mDisplayNameWidget );
200 nameLayout->addWidget( mDisplayNameWidget, 1, 1 );
202 label =
new QLabel( i18nc(
"@label The nickname of a contact",
"Nickname:" ) );
203 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
204 nameLayout->addWidget( label, 2, 0 );
206 mNickNameWidget =
new KLineEdit;
207 label->setBuddy( mNickNameWidget );
208 nameLayout->addWidget( mNickNameWidget, 2, 1 );
210 label =
new QLabel( i18nc(
"@label The pronunciation of a contact's name",
"Pronunciation:" ) );
211 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
212 nameLayout->addWidget( label, 3, 0 );
214 mPronunciationWidget =
new SoundEditWidget;
215 label->setBuddy( mPronunciationWidget );
216 nameLayout->addWidget( mPronunciationWidget, 3, 1 );
218 nameLayout->setRowStretch( 4, 1 );
221 label =
new QLabel( i18nc(
"@label The email address of a contact",
"Email:" ) );
222 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
223 internetLayout->addWidget( label, 0, 0 );
226 label->setBuddy( mEmailWidget );
227 internetLayout->addWidget( mEmailWidget, 0, 1 );
229 label =
new QLabel( i18nc(
"@label The homepage URL of a contact",
"Homepage:" ) );
230 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
231 internetLayout->addWidget( label, 1, 0 );
233 mHomepageWidget =
new KLineEdit;
234 label->setBuddy( mHomepageWidget );
235 internetLayout->addWidget( mHomepageWidget, 1, 1 );
237 label =
new QLabel( i18nc(
"@label The blog URL of a contact",
"Blog:" ) );
238 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
239 internetLayout->addWidget( label, 2, 0 );
241 mBlogWidget =
new KLineEdit;
242 label->setBuddy( mBlogWidget );
243 internetLayout->addWidget( mBlogWidget, 2, 1 );
245 label =
new QLabel( i18nc(
"@label The instant messaging address of a contact",
"Messaging:" ) );
246 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
247 internetLayout->addWidget( label, 3, 0 );
250 label->setBuddy( mIMWidget );
251 internetLayout->addWidget( mIMWidget, 3, 1 );
253 internetLayout->setRowStretch( 4, 1 );
257 phonesLayout->addWidget( mPhonesWidget, 0, 0 );
262 const bool nepomukInitialized( Nepomuk2::ResourceManager::instance()->initialized() );
263 QHBoxLayout *categoriesLayout =
new QHBoxLayout;
264 label =
new QLabel( i18nc(
"@label The categories of a contact",
"Categories:" ) );
265 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
266 label->setVisible( nepomukInitialized );
269 mCategoriesWidget->setVisible( nepomukInitialized );
270 label->setBuddy( mCategoriesWidget );
272 categoriesLayout->addWidget( label );
273 categoriesLayout->addWidget( mCategoriesWidget );
275 layout->addLayout( categoriesLayout, 1, 1 );
277 QHBoxLayout *mailPreferFormattingLayout =
new QHBoxLayout;
278 label =
new QLabel( i18n(
"Prefers to receive messages formatted as:" ) );
279 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
280 mMailPreferFormatting =
new KComboBox;
281 QStringList listFormat;
282 listFormat << i18n(
"Unknown" ) << i18n(
"Plain Text" ) << i18n(
"HTML" );
283 mMailPreferFormatting->addItems( listFormat );
284 mailPreferFormattingLayout->addWidget( label );
285 mailPreferFormattingLayout->addWidget( mMailPreferFormatting );
286 layout->addLayout( mailPreferFormattingLayout, 2, 1 );
288 mAllowRemoteContent =
new QCheckBox( i18n(
"Allow remote content." ) );
289 layout->addWidget( mAllowRemoteContent, 3,1 );
291 layout->setRowStretch( 4,1 );
294 void ContactEditorWidget::Private::initGuiLocationTab()
296 QWidget *widget =
new QWidget;
297 QHBoxLayout *layout =
new QHBoxLayout( widget );
299 mTabWidget->addTab( widget, i18nc(
"@title:tab",
"Location" ) );
301 QGroupBox *addressesGroupBox =
new QGroupBox( i18nc(
"@title:group",
"Addresses" ) );
302 QGroupBox *coordinatesGroupBox =
new QGroupBox( i18nc(
"@title:group",
"Coordinates" ) );
304 layout->addWidget( addressesGroupBox );
305 layout->addWidget( coordinatesGroupBox );
307 QGridLayout *addressesLayout =
new QGridLayout( addressesGroupBox );
308 QGridLayout *coordinatesLayout =
new QGridLayout( coordinatesGroupBox );
312 mAddressesWidget->setMinimumHeight( 200 );
313 addressesLayout->addWidget( mAddressesWidget, 0, 0 );
314 addressesLayout->setRowStretch( 1, 1 );
317 mCoordinatesWidget =
new GeoEditWidget;
318 coordinatesLayout->addWidget( mCoordinatesWidget, 0, 0 );
319 coordinatesLayout->setRowStretch( 1, 1 );
322 void ContactEditorWidget::Private::initGuiBusinessTab()
324 QWidget *widget =
new QWidget;
325 QVBoxLayout *layout =
new QVBoxLayout( widget );
327 mTabWidget->addTab( widget, i18nc(
"@title:tab",
"Business" ) );
329 QGroupBox *generalGroupBox =
new QGroupBox( i18nc(
"@title:group General properties of a contact",
"General" ) );
330 QGroupBox *groupwareGroupBox =
new QGroupBox( i18nc(
"@title:group",
"Groupware" ) );
332 layout->addWidget( generalGroupBox );
333 layout->addWidget( groupwareGroupBox );
335 QGridLayout *generalLayout =
new QGridLayout( generalGroupBox );
336 QGridLayout *groupwareLayout =
new QGridLayout( groupwareGroupBox );
341 mLogoWidget =
new ImageWidget( ImageWidget::Logo );
342 generalLayout->addWidget( mLogoWidget, 0, 2, 6, 1, Qt::AlignTop );
344 label =
new QLabel( i18nc(
"@label The organization of a contact",
"Organization:" ) );
345 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
346 generalLayout->addWidget( label, 0, 0 );
348 mOrganizationWidget =
new KLineEdit;
349 label->setBuddy( mOrganizationWidget );
350 generalLayout->addWidget( mOrganizationWidget, 0, 1 );
352 label =
new QLabel( i18nc(
"@label The profession of a contact",
"Profession:" ) );
353 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
354 generalLayout->addWidget( label, 1, 0 );
356 mProfessionWidget =
new KLineEdit;
357 label->setBuddy( mProfessionWidget );
358 generalLayout->addWidget( mProfessionWidget, 1, 1 );
360 label =
new QLabel( i18nc(
"@label The title of a contact",
"Title:" ) );
361 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
362 generalLayout->addWidget( label, 2, 0 );
364 mTitleWidget =
new KLineEdit;
365 label->setBuddy( mTitleWidget );
366 generalLayout->addWidget( mTitleWidget , 2, 1 );
368 label =
new QLabel( i18nc(
"@label The department of a contact",
"Department:" ) );
369 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
370 generalLayout->addWidget( label, 3, 0 );
372 mDepartmentWidget =
new KLineEdit;
373 label->setBuddy( mDepartmentWidget );
374 generalLayout->addWidget( mDepartmentWidget, 3, 1 );
376 label =
new QLabel( i18nc(
"@label The office of a contact",
"Office:" ) );
377 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
378 generalLayout->addWidget( label, 4, 0 );
380 mOfficeWidget =
new KLineEdit;
381 label->setBuddy( mOfficeWidget );
382 generalLayout->addWidget( mOfficeWidget, 4, 1 );
384 label =
new QLabel( i18nc(
"@label The manager's name of a contact",
"Manager's name:" ) );
385 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
386 generalLayout->addWidget( label, 5, 0 );
388 mManagerWidget =
new KLineEdit;
389 label->setBuddy( mManagerWidget );
390 generalLayout->addWidget( mManagerWidget, 5, 1 );
392 label =
new QLabel( i18nc(
"@label The assistant's name of a contact",
"Assistant's name:" ) );
393 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
394 generalLayout->addWidget( label, 6, 0 );
396 mAssistantWidget =
new KLineEdit;
397 label->setBuddy( mAssistantWidget );
398 generalLayout->addWidget( mAssistantWidget, 6, 1 );
401 label =
new QLabel( i18nc(
"@label The free/busy information of a contact",
"Free/Busy:" ) );
402 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
403 groupwareLayout->addWidget( label, 0, 0 );
405 mFreeBusyWidget =
new FreeBusyEditWidget;
406 label->setBuddy( mFreeBusyWidget );
407 groupwareLayout->addWidget( mFreeBusyWidget, 0, 1 );
408 groupwareLayout->setRowStretch( 1, 1 );
411 void ContactEditorWidget::Private::initGuiPersonalTab()
413 QWidget *widget =
new QWidget;
414 QVBoxLayout *layout =
new QVBoxLayout( widget );
416 mTabWidget->addTab( widget, i18nc(
"@title:tab Personal properties of a contact",
"Personal" ) );
418 QGroupBox *datesGroupBox =
new QGroupBox( i18nc(
"@title:group Date related properties of a contact",
"Dates" ) );
419 QGroupBox *familyGroupBox =
new QGroupBox( i18nc(
"@title:group Family related properties of a contact",
"Family" ) );
421 layout->addWidget( datesGroupBox );
422 layout->addWidget( familyGroupBox );
424 QGridLayout *datesLayout =
new QGridLayout( datesGroupBox );
425 QGridLayout *familyLayout =
new QGridLayout( familyGroupBox );
430 label =
new QLabel( i18nc(
"@label The birthdate of a contact",
"Birthdate:" ) );
431 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
432 datesLayout->addWidget( label, 0, 0 );
434 mBirthdateWidget =
new DateEditWidget( DateEditWidget::Birthday );
435 label->setBuddy( mBirthdateWidget );
436 datesLayout->addWidget( mBirthdateWidget, 0, 1 );
438 label =
new QLabel( i18nc(
"@label The anniversary of a contact",
"Anniversary:" ) );
439 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
440 datesLayout->addWidget( label, 1, 0 );
442 mAnniversaryWidget =
new DateEditWidget( DateEditWidget::Anniversary );
443 label->setBuddy( mAnniversaryWidget );
444 datesLayout->addWidget( mAnniversaryWidget, 1, 1 );
446 datesLayout->setRowStretch( 2, 1 );
447 datesLayout->setColumnStretch( 1, 1 );
450 label =
new QLabel( i18nc(
"@label The partner's name of a contact",
"Partner's name:" ) );
451 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
452 familyLayout->addWidget( label, 0, 0 );
454 mPartnerWidget =
new KLineEdit;
455 label->setBuddy( mPartnerWidget );
456 familyLayout->addWidget( mPartnerWidget, 0, 1 );
458 familyLayout->setRowStretch( 1, 1 );
461 void ContactEditorWidget::Private::initGuiNotesTab()
463 QWidget *widget =
new QWidget;
464 QVBoxLayout *layout =
new QVBoxLayout( widget );
466 mTabWidget->addTab( widget, i18nc(
"@title:tab",
"Notes" ) );
468 mNotesWidget =
new KTextEdit;
469 mNotesWidget->setAcceptRichText(
false);
470 layout->addWidget( mNotesWidget );
473 void ContactEditorWidget::Private::initGuiCustomFieldsTab()
475 QWidget *widget =
new QWidget;
476 QVBoxLayout *layout =
new QVBoxLayout( widget );
478 mTabWidget->addTab( widget, i18nc(
"@title:tab",
"Custom Fields" ) );
480 mCustomFieldsWidget =
new CustomFieldsEditWidget;
481 layout->addWidget( mCustomFieldsWidget );
484 void ContactEditorWidget::Private::loadCustomPages()
486 qDeleteAll( mCustomPages );
487 mCustomPages.clear();
489 const QString pluginDirectory = KStandardDirs::locate(
"lib", QLatin1String(
"akonadi/contact/editorpageplugins/" ) );
490 QDirIterator it( pluginDirectory, QDir::Files );
491 while ( it.hasNext() ) {
492 QPluginLoader loader( it.next() );
493 if ( !loader.load() ) {
502 mCustomPages.append( plugin );
506 mTabWidget->addTab( plugin, plugin->
title() );
510 QString ContactEditorWidget::Private::loadCustom(
const KABC::Addressee &contact,
const QString &key )
const
512 return contact.custom( QLatin1String(
"KADDRESSBOOK" ), key );
515 void ContactEditorWidget::Private::storeCustom( KABC::Addressee &contact,
const QString &key,
const QString &value )
const
517 if ( value.isEmpty() ) {
518 contact.removeCustom( QLatin1String(
"KADDRESSBOOK" ), key );
520 contact.insertCustom( QLatin1String(
"KADDRESSBOOK" ), key, value );
524 ContactEditorWidget::ContactEditorWidget( QWidget* )
525 : d( new Private( FullMode, this ) )
529 connect( d->mNameWidget, SIGNAL(nameChanged(KABC::Addressee)),
530 d->mDisplayNameWidget, SLOT(changeName(KABC::Addressee)) );
531 connect( d->mOrganizationWidget, SIGNAL(textChanged(QString)),
532 d->mDisplayNameWidget, SLOT(changeOrganization(QString)) );
536 : d( new Private( displayMode, this ) )
540 connect( d->mNameWidget, SIGNAL(nameChanged(KABC::Addressee)),
541 d->mDisplayNameWidget, SLOT(changeName(KABC::Addressee)) );
542 connect( d->mOrganizationWidget, SIGNAL(textChanged(QString)),
543 d->mDisplayNameWidget, SLOT(changeOrganization(QString)) );
554 d->mPhotoWidget->loadContact( contact );
555 d->mNameWidget->loadContact( contact );
556 d->mDisplayNameWidget->loadContact( contact );
557 d->mNickNameWidget->setText( contact.nickName() );
558 d->mPronunciationWidget->loadContact( contact );
561 d->mEmailWidget->loadContact( contact );
562 d->mHomepageWidget->setUrl( contact.url() );
563 d->mBlogWidget->setText( d->loadCustom( contact, QLatin1String(
"BlogFeed" ) ) );
564 d->mIMWidget->loadContact( contact );
567 d->mPhonesWidget->loadContact( contact );
570 d->mCategoriesWidget->loadContact( contact );
573 const QString mailPreferedFormatting = d->loadCustom( contact, QLatin1String(
"MailPreferedFormatting" ) );
574 if ( mailPreferedFormatting.isEmpty() ) {
575 d->mMailPreferFormatting->setCurrentIndex( 0 );
576 }
else if ( mailPreferedFormatting == QLatin1String(
"TEXT" ) ) {
577 d->mMailPreferFormatting->setCurrentIndex( 1 );
578 }
else if ( mailPreferedFormatting == QLatin1String(
"HTML" ) ) {
579 d->mMailPreferFormatting->setCurrentIndex( 2 );
581 d->mMailPreferFormatting->setCurrentIndex( 0 );
584 const QString mailAllowToRemoteContent = d->loadCustom( contact, QLatin1String(
"MailAllowToRemoteContent" ) );
585 d->mAllowRemoteContent->setChecked( mailAllowToRemoteContent == QLatin1String(
"TRUE" ) );
588 d->mAddressesWidget->loadContact( contact );
591 d->mCoordinatesWidget->loadContact( contact );
594 d->mLogoWidget->loadContact( contact );
595 d->mOrganizationWidget->setText( contact.organization() );
596 d->mProfessionWidget->setText( d->loadCustom( contact, QLatin1String(
"X-Profession" ) ) );
597 d->mTitleWidget->setText( contact.title() );
598 d->mDepartmentWidget->setText( contact.department() );
599 d->mOfficeWidget->setText( d->loadCustom( contact, QLatin1String(
"X-Office" ) ) );
600 d->mManagerWidget->setText( d->loadCustom( contact, QLatin1String(
"X-ManagersName" ) ) );
601 d->mAssistantWidget->setText( d->loadCustom( contact, QLatin1String(
"X-AssistantsName" ) ) );
604 d->mFreeBusyWidget->loadContact( contact );
607 d->mNotesWidget->setPlainText( contact.note() );
610 d->mBirthdateWidget->setDate( contact.birthday().date() );
611 d->mAnniversaryWidget->setDate( QDate::fromString( d->loadCustom( contact, QLatin1String(
"X-Anniversary" ) ),
615 d->mPartnerWidget->setText( d->loadCustom( contact, QLatin1String(
"X-SpousesName" ) ) );
619 if(d->mDisplayMode == FullMode) {
622 d->mCustomFieldsWidget->loadContact( contact );
634 d->mPhotoWidget->storeContact( contact );
635 d->mNameWidget->storeContact( contact );
636 d->mDisplayNameWidget->storeContact( contact );
637 contact.setNickName( d->mNickNameWidget->text().trimmed() );
638 d->mPronunciationWidget->storeContact( contact );
641 d->mEmailWidget->storeContact( contact );
642 contact.setUrl( KUrl( d->mHomepageWidget->text().trimmed() ) );
643 d->storeCustom( contact, QLatin1String(
"BlogFeed" ), d->mBlogWidget->text().trimmed() );
644 d->mIMWidget->storeContact( contact );
647 d->mPhonesWidget->storeContact( contact );
650 d->mCategoriesWidget->storeContact( contact );
654 QString mailPreferedFormatting;
655 const int index = d->mMailPreferFormatting->currentIndex();
658 }
else if ( index == 1 ) {
659 mailPreferedFormatting = QLatin1String(
"TEXT" );
660 }
else if ( index == 2 ) {
661 mailPreferedFormatting = QLatin1String(
"HTML" );
663 d->storeCustom( contact, QLatin1String(
"MailPreferedFormatting" ), mailPreferedFormatting );
665 QString mailAllowToRemoteContent;
666 if ( d->mAllowRemoteContent->isChecked() ) {
667 mailAllowToRemoteContent = QLatin1String(
"TRUE" );
669 d->storeCustom( contact, QLatin1String(
"MailAllowToRemoteContent" ), mailAllowToRemoteContent );
672 d->mAddressesWidget->storeContact( contact );
675 d->mCoordinatesWidget->storeContact( contact );
678 d->mLogoWidget->storeContact( contact );
679 contact.setOrganization( d->mOrganizationWidget->text() );
680 d->storeCustom( contact, QLatin1String(
"X-Profession" ), d->mProfessionWidget->text().trimmed() );
681 contact.setTitle( d->mTitleWidget->text().trimmed() );
682 contact.setDepartment( d->mDepartmentWidget->text().trimmed() );
683 d->storeCustom( contact, QLatin1String(
"X-Office" ), d->mOfficeWidget->text().trimmed() );
684 d->storeCustom( contact, QLatin1String(
"X-ManagersName" ), d->mManagerWidget->text().trimmed() );
685 d->storeCustom( contact, QLatin1String(
"X-AssistantsName" ), d->mAssistantWidget->text().trimmed() );
688 d->mFreeBusyWidget->storeContact( contact );
691 contact.setNote( d->mNotesWidget->toPlainText() );
694 QDateTime birthday = QDateTime( d->mBirthdateWidget->date(), QTime(), contact.birthday().timeSpec() );
697 birthday.setTime( QTime() );
699 contact.setBirthday( birthday );
700 d->storeCustom( contact, QLatin1String(
"X-Anniversary" ), d->mAnniversaryWidget->date().toString( Qt::ISODate ) );
703 d->storeCustom( contact, QLatin1String(
"X-SpousesName" ), d->mPartnerWidget->text().trimmed() );
705 if(d->mDisplayMode == FullMode) {
707 d->mCustomFieldsWidget->storeContact( contact );
722 d->mNameWidget->setReadOnly( readOnly );
723 d->mPhotoWidget->setReadOnly( readOnly );
724 d->mDisplayNameWidget->setReadOnly( readOnly );
725 d->mNickNameWidget->setReadOnly( readOnly );
726 d->mPronunciationWidget->setReadOnly( readOnly );
729 d->mEmailWidget->setReadOnly( readOnly );
730 d->mHomepageWidget->setReadOnly( readOnly );
731 d->mBlogWidget->setReadOnly( readOnly );
732 d->mIMWidget->setReadOnly( readOnly );
735 d->mPhonesWidget->setReadOnly( readOnly );
738 d->mCategoriesWidget->setReadOnly( readOnly );
741 d->mMailPreferFormatting->setEnabled( !readOnly );
742 d->mAllowRemoteContent->setEnabled( !readOnly );
745 d->mAddressesWidget->setReadOnly( readOnly );
748 d->mCoordinatesWidget->setReadOnly( readOnly );
751 d->mLogoWidget->setReadOnly( readOnly );
752 d->mOrganizationWidget->setReadOnly( readOnly );
753 d->mProfessionWidget->setReadOnly( readOnly );
754 d->mTitleWidget->setReadOnly( readOnly );
755 d->mDepartmentWidget->setReadOnly( readOnly );
756 d->mOfficeWidget->setReadOnly( readOnly );
757 d->mManagerWidget->setReadOnly( readOnly );
758 d->mAssistantWidget->setReadOnly( readOnly );
761 d->mFreeBusyWidget->setReadOnly( readOnly );
764 d->mNotesWidget->setReadOnly( readOnly );
767 d->mBirthdateWidget->setReadOnly( readOnly );
768 d->mAnniversaryWidget->setReadOnly( readOnly );
771 d->mPartnerWidget->setReadOnly( readOnly );
773 if(d->mDisplayMode == FullMode) {
775 d->mCustomFieldsWidget->setReadOnly( readOnly );