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>
43 #include <klocalizedstring.h>
44 #include <kstandarddirs.h>
45 #include <ktabwidget.h>
46 #include <ktextedit.h>
48 #include <Nepomuk2/ResourceManager>
50 #include <QtCore/QDirIterator>
51 #include <QtCore/QPluginLoader>
57 class ContactEditorWidget::Private
61 : mDisplayMode(displayMode), mParent( parent ), mCustomFieldsWidget(0)
66 void initGuiContactTab();
67 void initGuiLocationTab();
68 void initGuiBusinessTab();
69 void initGuiPersonalTab();
70 void initGuiNotesTab();
71 void initGuiCustomFieldsTab();
73 void loadCustomPages();
75 QString loadCustom(
const KABC::Addressee &contact,
const QString &key )
const;
76 void storeCustom( KABC::Addressee &contact,
const QString &key,
const QString &value )
const;
80 KTabWidget *mTabWidget;
84 ImageWidget *mPhotoWidget;
86 KLineEdit *mNickNameWidget;
87 SoundEditWidget *mPronunciationWidget;
91 KLineEdit *mHomepageWidget;
92 KLineEdit *mBlogWidget;
100 KComboBox* mMailPreferFormatting;
101 QCheckBox *mAllowRemoteContent;
107 GeoEditWidget *mCoordinatesWidget;
110 ImageWidget *mLogoWidget;
111 KLineEdit *mOrganizationWidget;
112 KLineEdit *mProfessionWidget;
113 KLineEdit *mTitleWidget;
114 KLineEdit *mDepartmentWidget;
115 KLineEdit *mOfficeWidget;
116 KLineEdit *mManagerWidget;
117 KLineEdit *mAssistantWidget;
120 FreeBusyEditWidget *mFreeBusyWidget;
123 KTextEdit *mNotesWidget;
126 DateEditWidget *mBirthdateWidget;
127 DateEditWidget *mAnniversaryWidget;
130 KLineEdit *mPartnerWidget;
133 CustomFieldsEditWidget *mCustomFieldsWidget;
136 QList<Akonadi::ContactEditorPagePlugin*> mCustomPages;
139 void ContactEditorWidget::Private::initGui()
141 QVBoxLayout *layout =
new QVBoxLayout( mParent );
142 layout->setMargin( 0 );
144 mTabWidget =
new KTabWidget( mParent );
145 layout->addWidget( mTabWidget );
148 initGuiLocationTab();
149 initGuiBusinessTab();
150 initGuiPersonalTab();
152 if (mDisplayMode == FullMode) {
153 initGuiCustomFieldsTab();
158 void ContactEditorWidget::Private::initGuiContactTab()
160 QWidget *widget =
new QWidget;
161 QGridLayout *layout =
new QGridLayout( widget );
163 mTabWidget->addTab( widget, i18nc(
"@title:tab",
"Contact" ) );
165 QGroupBox *nameGroupBox =
new QGroupBox( i18nc(
"@title:group Name related properties of a contact",
"Name" ) );
166 QGroupBox *internetGroupBox =
new QGroupBox( i18nc(
"@title:group",
"Internet" ) );
167 QGroupBox *phonesGroupBox =
new QGroupBox( i18nc(
"@title:group",
"Phones" ) );
169 nameGroupBox->setMinimumSize(320,200);
170 layout->addWidget( nameGroupBox, 0, 0 );
171 layout->addWidget( internetGroupBox, 0, 1 );
172 layout->addWidget( phonesGroupBox, 1, 0, 4, 1 );
174 QGridLayout *nameLayout =
new QGridLayout( nameGroupBox );
175 QGridLayout *internetLayout =
new QGridLayout( internetGroupBox );
176 QGridLayout *phonesLayout =
new QGridLayout( phonesGroupBox );
181 label =
new QLabel( i18nc(
"@label The name of a contact",
"Name:" ) );
182 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
183 nameLayout->addWidget( label, 0, 0 );
186 label->setBuddy( mNameWidget );
187 nameLayout->addWidget( mNameWidget, 0, 1 );
189 mPhotoWidget =
new ImageWidget( ImageWidget::Photo );
190 nameLayout->addWidget( mPhotoWidget, 0, 2, 4, 1 );
192 label =
new QLabel( i18nc(
"@label The display name of a contact",
"Display:" ) );
193 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
194 nameLayout->addWidget( label, 1, 0 );
197 label->setBuddy( mDisplayNameWidget );
198 nameLayout->addWidget( mDisplayNameWidget, 1, 1 );
200 label =
new QLabel( i18nc(
"@label The nickname of a contact",
"Nickname:" ) );
201 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
202 nameLayout->addWidget( label, 2, 0 );
204 mNickNameWidget =
new KLineEdit;
205 label->setBuddy( mNickNameWidget );
206 nameLayout->addWidget( mNickNameWidget, 2, 1 );
208 label =
new QLabel( i18nc(
"@label The pronunciation of a contact's name",
"Pronunciation:" ) );
209 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
210 nameLayout->addWidget( label, 3, 0 );
212 mPronunciationWidget =
new SoundEditWidget;
213 label->setBuddy( mPronunciationWidget );
214 nameLayout->addWidget( mPronunciationWidget, 3, 1 );
216 nameLayout->setRowStretch( 4, 1 );
219 label =
new QLabel( i18nc(
"@label The email address of a contact",
"Email:" ) );
220 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
221 internetLayout->addWidget( label, 0, 0 );
224 label->setBuddy( mEmailWidget );
225 internetLayout->addWidget( mEmailWidget, 0, 1 );
227 label =
new QLabel( i18nc(
"@label The homepage URL of a contact",
"Homepage:" ) );
228 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
229 internetLayout->addWidget( label, 1, 0 );
231 mHomepageWidget =
new KLineEdit;
232 label->setBuddy( mHomepageWidget );
233 internetLayout->addWidget( mHomepageWidget, 1, 1 );
235 label =
new QLabel( i18nc(
"@label The blog URL of a contact",
"Blog:" ) );
236 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
237 internetLayout->addWidget( label, 2, 0 );
239 mBlogWidget =
new KLineEdit;
240 label->setBuddy( mBlogWidget );
241 internetLayout->addWidget( mBlogWidget, 2, 1 );
243 label =
new QLabel( i18nc(
"@label The instant messaging address of a contact",
"Messaging:" ) );
244 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
245 internetLayout->addWidget( label, 3, 0 );
248 label->setBuddy( mIMWidget );
249 internetLayout->addWidget( mIMWidget, 3, 1 );
251 internetLayout->setRowStretch( 4, 1 );
255 phonesLayout->addWidget( mPhonesWidget, 0, 0 );
260 const bool nepomukInitialized( Nepomuk2::ResourceManager::instance()->initialized() );
261 QHBoxLayout *categoriesLayout =
new QHBoxLayout;
262 label =
new QLabel( i18nc(
"@label The categories of a contact",
"Categories:" ) );
263 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
264 label->setVisible( nepomukInitialized );
267 mCategoriesWidget->setVisible( nepomukInitialized );
268 label->setBuddy( mCategoriesWidget );
270 categoriesLayout->addWidget( label );
271 categoriesLayout->addWidget( mCategoriesWidget );
273 layout->addLayout( categoriesLayout, 1, 1 );
275 QGroupBox *receivedMessageGroupBox =
new QGroupBox( i18n(
"Messages") );
276 layout->addWidget( receivedMessageGroupBox, 2, 1 );
278 QVBoxLayout *vbox =
new QVBoxLayout(receivedMessageGroupBox);
280 QHBoxLayout *mailPreferFormattingLayout =
new QHBoxLayout;
281 label =
new QLabel( i18n(
"Show messages received from this contact as:" ) );
282 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
283 mMailPreferFormatting =
new KComboBox;
284 label->setBuddy( mMailPreferFormatting );
285 QStringList listFormat;
286 listFormat << i18n(
"Default" ) << i18n(
"Plain Text" ) << i18n(
"HTML" );
287 mMailPreferFormatting->addItems( listFormat );
288 mailPreferFormattingLayout->addWidget( label );
289 mailPreferFormattingLayout->addWidget( mMailPreferFormatting );
292 vbox->addLayout( mailPreferFormattingLayout );
294 mAllowRemoteContent =
new QCheckBox( i18n(
"Allow remote content in received HTML messages" ) );
295 vbox->addWidget( mAllowRemoteContent );
297 layout->setRowStretch( 4,1 );
300 void ContactEditorWidget::Private::initGuiLocationTab()
302 QWidget *widget =
new QWidget;
303 QHBoxLayout *layout =
new QHBoxLayout( widget );
305 mTabWidget->addTab( widget, i18nc(
"@title:tab",
"Location" ) );
307 QGroupBox *addressesGroupBox =
new QGroupBox( i18nc(
"@title:group",
"Addresses" ) );
308 QGroupBox *coordinatesGroupBox =
new QGroupBox( i18nc(
"@title:group",
"Coordinates" ) );
310 layout->addWidget( addressesGroupBox );
311 layout->addWidget( coordinatesGroupBox );
313 QGridLayout *addressesLayout =
new QGridLayout( addressesGroupBox );
314 QGridLayout *coordinatesLayout =
new QGridLayout( coordinatesGroupBox );
318 mAddressesWidget->setMinimumHeight( 200 );
319 addressesLayout->addWidget( mAddressesWidget, 0, 0 );
320 addressesLayout->setRowStretch( 1, 1 );
323 mCoordinatesWidget =
new GeoEditWidget;
324 coordinatesLayout->addWidget( mCoordinatesWidget, 0, 0 );
325 coordinatesLayout->setRowStretch( 1, 1 );
328 void ContactEditorWidget::Private::initGuiBusinessTab()
330 QWidget *widget =
new QWidget;
331 QVBoxLayout *layout =
new QVBoxLayout( widget );
333 mTabWidget->addTab( widget, i18nc(
"@title:tab",
"Business" ) );
335 QGroupBox *generalGroupBox =
new QGroupBox( i18nc(
"@title:group General properties of a contact",
"General" ) );
336 QGroupBox *groupwareGroupBox =
new QGroupBox( i18nc(
"@title:group",
"Groupware" ) );
338 layout->addWidget( generalGroupBox );
339 layout->addWidget( groupwareGroupBox );
341 QGridLayout *generalLayout =
new QGridLayout( generalGroupBox );
342 QGridLayout *groupwareLayout =
new QGridLayout( groupwareGroupBox );
347 mLogoWidget =
new ImageWidget( ImageWidget::Logo );
348 generalLayout->addWidget( mLogoWidget, 0, 2, 6, 1, Qt::AlignTop );
350 label =
new QLabel( i18nc(
"@label The organization of a contact",
"Organization:" ) );
351 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
352 generalLayout->addWidget( label, 0, 0 );
354 mOrganizationWidget =
new KLineEdit;
355 label->setBuddy( mOrganizationWidget );
356 generalLayout->addWidget( mOrganizationWidget, 0, 1 );
358 label =
new QLabel( i18nc(
"@label The profession of a contact",
"Profession:" ) );
359 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
360 generalLayout->addWidget( label, 1, 0 );
362 mProfessionWidget =
new KLineEdit;
363 label->setBuddy( mProfessionWidget );
364 generalLayout->addWidget( mProfessionWidget, 1, 1 );
366 label =
new QLabel( i18nc(
"@label The title of a contact",
"Title:" ) );
367 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
368 generalLayout->addWidget( label, 2, 0 );
370 mTitleWidget =
new KLineEdit;
371 label->setBuddy( mTitleWidget );
372 generalLayout->addWidget( mTitleWidget , 2, 1 );
374 label =
new QLabel( i18nc(
"@label The department of a contact",
"Department:" ) );
375 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
376 generalLayout->addWidget( label, 3, 0 );
378 mDepartmentWidget =
new KLineEdit;
379 label->setBuddy( mDepartmentWidget );
380 generalLayout->addWidget( mDepartmentWidget, 3, 1 );
382 label =
new QLabel( i18nc(
"@label The office of a contact",
"Office:" ) );
383 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
384 generalLayout->addWidget( label, 4, 0 );
386 mOfficeWidget =
new KLineEdit;
387 label->setBuddy( mOfficeWidget );
388 generalLayout->addWidget( mOfficeWidget, 4, 1 );
390 label =
new QLabel( i18nc(
"@label The manager's name of a contact",
"Manager's name:" ) );
391 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
392 generalLayout->addWidget( label, 5, 0 );
394 mManagerWidget =
new KLineEdit;
395 label->setBuddy( mManagerWidget );
396 generalLayout->addWidget( mManagerWidget, 5, 1 );
398 label =
new QLabel( i18nc(
"@label The assistant's name of a contact",
"Assistant's name:" ) );
399 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
400 generalLayout->addWidget( label, 6, 0 );
402 mAssistantWidget =
new KLineEdit;
403 label->setBuddy( mAssistantWidget );
404 generalLayout->addWidget( mAssistantWidget, 6, 1 );
407 label =
new QLabel( i18nc(
"@label The free/busy information of a contact",
"Free/Busy:" ) );
408 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
409 groupwareLayout->addWidget( label, 0, 0 );
411 mFreeBusyWidget =
new FreeBusyEditWidget;
412 label->setBuddy( mFreeBusyWidget );
413 groupwareLayout->addWidget( mFreeBusyWidget, 0, 1 );
414 groupwareLayout->setRowStretch( 1, 1 );
417 void ContactEditorWidget::Private::initGuiPersonalTab()
419 QWidget *widget =
new QWidget;
420 QVBoxLayout *layout =
new QVBoxLayout( widget );
422 mTabWidget->addTab( widget, i18nc(
"@title:tab Personal properties of a contact",
"Personal" ) );
424 QGroupBox *datesGroupBox =
new QGroupBox( i18nc(
"@title:group Date related properties of a contact",
"Dates" ) );
425 QGroupBox *familyGroupBox =
new QGroupBox( i18nc(
"@title:group Family related properties of a contact",
"Family" ) );
427 layout->addWidget( datesGroupBox );
428 layout->addWidget( familyGroupBox );
430 QGridLayout *datesLayout =
new QGridLayout( datesGroupBox );
431 QGridLayout *familyLayout =
new QGridLayout( familyGroupBox );
436 label =
new QLabel( i18nc(
"@label The birthdate of a contact",
"Birthdate:" ) );
437 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
438 datesLayout->addWidget( label, 0, 0 );
440 mBirthdateWidget =
new DateEditWidget( DateEditWidget::Birthday );
441 label->setBuddy( mBirthdateWidget );
442 datesLayout->addWidget( mBirthdateWidget, 0, 1 );
444 label =
new QLabel( i18nc(
"@label The anniversary of a contact",
"Anniversary:" ) );
445 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
446 datesLayout->addWidget( label, 1, 0 );
448 mAnniversaryWidget =
new DateEditWidget( DateEditWidget::Anniversary );
449 label->setBuddy( mAnniversaryWidget );
450 datesLayout->addWidget( mAnniversaryWidget, 1, 1 );
452 datesLayout->setRowStretch( 2, 1 );
453 datesLayout->setColumnStretch( 1, 1 );
456 label =
new QLabel( i18nc(
"@label The partner's name of a contact",
"Partner's name:" ) );
457 label->setAlignment( Qt::AlignRight | Qt::AlignVCenter );
458 familyLayout->addWidget( label, 0, 0 );
460 mPartnerWidget =
new KLineEdit;
461 label->setBuddy( mPartnerWidget );
462 familyLayout->addWidget( mPartnerWidget, 0, 1 );
464 familyLayout->setRowStretch( 1, 1 );
467 void ContactEditorWidget::Private::initGuiNotesTab()
469 QWidget *widget =
new QWidget;
470 QVBoxLayout *layout =
new QVBoxLayout( widget );
472 mTabWidget->addTab( widget, i18nc(
"@title:tab",
"Notes" ) );
474 mNotesWidget =
new KTextEdit;
475 mNotesWidget->setAcceptRichText(
false);
476 layout->addWidget( mNotesWidget );
479 void ContactEditorWidget::Private::initGuiCustomFieldsTab()
481 QWidget *widget =
new QWidget;
482 QVBoxLayout *layout =
new QVBoxLayout( widget );
484 mTabWidget->addTab( widget, i18nc(
"@title:tab",
"Custom Fields" ) );
486 mCustomFieldsWidget =
new CustomFieldsEditWidget;
487 layout->addWidget( mCustomFieldsWidget );
490 void ContactEditorWidget::Private::loadCustomPages()
492 qDeleteAll( mCustomPages );
493 mCustomPages.clear();
495 const QString pluginDirectory = KStandardDirs::locate(
"lib", QLatin1String(
"akonadi/contact/editorpageplugins/" ) );
496 QDirIterator it( pluginDirectory, QDir::Files );
497 while ( it.hasNext() ) {
498 QPluginLoader loader( it.next() );
499 if ( !loader.load() ) {
508 mCustomPages.append( plugin );
512 mTabWidget->addTab( plugin, plugin->
title() );
516 QString ContactEditorWidget::Private::loadCustom(
const KABC::Addressee &contact,
const QString &key )
const
518 return contact.custom( QLatin1String(
"KADDRESSBOOK" ), key );
521 void ContactEditorWidget::Private::storeCustom( KABC::Addressee &contact,
const QString &key,
const QString &value )
const
523 if ( value.isEmpty() ) {
524 contact.removeCustom( QLatin1String(
"KADDRESSBOOK" ), key );
526 contact.insertCustom( QLatin1String(
"KADDRESSBOOK" ), key, value );
530 ContactEditorWidget::ContactEditorWidget( QWidget* )
531 : d( new Private( FullMode, this ) )
535 connect( d->mNameWidget, SIGNAL(nameChanged(KABC::Addressee)),
536 d->mDisplayNameWidget, SLOT(changeName(KABC::Addressee)) );
537 connect( d->mOrganizationWidget, SIGNAL(textChanged(QString)),
538 d->mDisplayNameWidget, SLOT(changeOrganization(QString)) );
542 : d( new Private( displayMode, this ) )
546 connect( d->mNameWidget, SIGNAL(nameChanged(KABC::Addressee)),
547 d->mDisplayNameWidget, SLOT(changeName(KABC::Addressee)) );
548 connect( d->mOrganizationWidget, SIGNAL(textChanged(QString)),
549 d->mDisplayNameWidget, SLOT(changeOrganization(QString)) );
560 d->mPhotoWidget->loadContact( contact );
561 d->mNameWidget->loadContact( contact );
562 d->mDisplayNameWidget->loadContact( contact );
563 d->mNickNameWidget->setText( contact.nickName() );
564 d->mPronunciationWidget->loadContact( contact );
567 d->mEmailWidget->loadContact( contact );
568 d->mHomepageWidget->setUrl( contact.url() );
569 d->mBlogWidget->setText( d->loadCustom( contact, QLatin1String(
"BlogFeed" ) ) );
570 d->mIMWidget->loadContact( contact );
573 d->mPhonesWidget->loadContact( contact );
576 d->mCategoriesWidget->loadContact( contact );
578 const QString mailPreferedFormatting = d->loadCustom( contact, QLatin1String(
"MailPreferedFormatting" ) );
579 if ( mailPreferedFormatting.isEmpty() ) {
580 d->mMailPreferFormatting->setCurrentIndex( 0 );
581 }
else if ( mailPreferedFormatting == QLatin1String(
"TEXT" ) ) {
582 d->mMailPreferFormatting->setCurrentIndex( 1 );
583 }
else if ( mailPreferedFormatting == QLatin1String(
"HTML" ) ) {
584 d->mMailPreferFormatting->setCurrentIndex( 2 );
586 d->mMailPreferFormatting->setCurrentIndex( 0 );
589 const QString mailAllowToRemoteContent = d->loadCustom( contact, QLatin1String(
"MailAllowToRemoteContent" ) );
590 d->mAllowRemoteContent->setChecked( mailAllowToRemoteContent == QLatin1String(
"TRUE" ) );
593 d->mAddressesWidget->loadContact( contact );
596 d->mCoordinatesWidget->loadContact( contact );
599 d->mLogoWidget->loadContact( contact );
600 d->mOrganizationWidget->setText( contact.organization() );
601 d->mProfessionWidget->setText( d->loadCustom( contact, QLatin1String(
"X-Profession" ) ) );
602 d->mTitleWidget->setText( contact.title() );
603 d->mDepartmentWidget->setText( contact.department() );
604 d->mOfficeWidget->setText( d->loadCustom( contact, QLatin1String(
"X-Office" ) ) );
605 d->mManagerWidget->setText( d->loadCustom( contact, QLatin1String(
"X-ManagersName" ) ) );
606 d->mAssistantWidget->setText( d->loadCustom( contact, QLatin1String(
"X-AssistantsName" ) ) );
609 d->mFreeBusyWidget->loadContact( contact );
612 d->mNotesWidget->setPlainText( contact.note() );
615 d->mBirthdateWidget->setDate( contact.birthday().date() );
616 d->mAnniversaryWidget->setDate( QDate::fromString( d->loadCustom( contact, QLatin1String(
"X-Anniversary" ) ),
620 d->mPartnerWidget->setText( d->loadCustom( contact, QLatin1String(
"X-SpousesName" ) ) );
624 if (d->mDisplayMode == FullMode) {
627 d->mCustomFieldsWidget->loadContact( contact );
639 d->mPhotoWidget->storeContact( contact );
640 d->mNameWidget->storeContact( contact );
641 d->mDisplayNameWidget->storeContact( contact );
642 contact.setNickName( d->mNickNameWidget->text().trimmed() );
643 d->mPronunciationWidget->storeContact( contact );
646 d->mEmailWidget->storeContact( contact );
647 contact.setUrl( KUrl( d->mHomepageWidget->text().trimmed() ) );
648 d->storeCustom( contact, QLatin1String(
"BlogFeed" ), d->mBlogWidget->text().trimmed() );
649 d->mIMWidget->storeContact( contact );
652 d->mPhonesWidget->storeContact( contact );
655 d->mCategoriesWidget->storeContact( contact );
657 QString mailPreferedFormatting;
658 const int index = d->mMailPreferFormatting->currentIndex();
661 }
else if ( index == 1 ) {
662 mailPreferedFormatting = QLatin1String(
"TEXT" );
663 }
else if ( index == 2 ) {
664 mailPreferedFormatting = QLatin1String(
"HTML" );
666 d->storeCustom( contact, QLatin1String(
"MailPreferedFormatting" ), mailPreferedFormatting );
668 QString mailAllowToRemoteContent;
669 if ( d->mAllowRemoteContent->isChecked() ) {
670 mailAllowToRemoteContent = QLatin1String(
"TRUE" );
672 d->storeCustom( contact, QLatin1String(
"MailAllowToRemoteContent" ), mailAllowToRemoteContent );
675 d->mAddressesWidget->storeContact( contact );
678 d->mCoordinatesWidget->storeContact( contact );
681 d->mLogoWidget->storeContact( contact );
682 contact.setOrganization( d->mOrganizationWidget->text() );
683 d->storeCustom( contact, QLatin1String(
"X-Profession" ), d->mProfessionWidget->text().trimmed() );
684 contact.setTitle( d->mTitleWidget->text().trimmed() );
685 contact.setDepartment( d->mDepartmentWidget->text().trimmed() );
686 d->storeCustom( contact, QLatin1String(
"X-Office" ), d->mOfficeWidget->text().trimmed() );
687 d->storeCustom( contact, QLatin1String(
"X-ManagersName" ), d->mManagerWidget->text().trimmed() );
688 d->storeCustom( contact, QLatin1String(
"X-AssistantsName" ), d->mAssistantWidget->text().trimmed() );
691 d->mFreeBusyWidget->storeContact( contact );
694 contact.setNote( d->mNotesWidget->toPlainText() );
697 QDateTime birthday = QDateTime( d->mBirthdateWidget->date(), QTime(), contact.birthday().timeSpec() );
700 birthday.setTime( QTime() );
702 contact.setBirthday( birthday );
703 d->storeCustom( contact, QLatin1String(
"X-Anniversary" ), d->mAnniversaryWidget->date().toString( Qt::ISODate ) );
706 d->storeCustom( contact, QLatin1String(
"X-SpousesName" ), d->mPartnerWidget->text().trimmed() );
708 if (d->mDisplayMode == FullMode) {
710 d->mCustomFieldsWidget->storeContact( contact );
725 d->mNameWidget->setReadOnly( readOnly );
726 d->mPhotoWidget->setReadOnly( readOnly );
727 d->mDisplayNameWidget->setReadOnly( readOnly );
728 d->mNickNameWidget->setReadOnly( readOnly );
729 d->mPronunciationWidget->setReadOnly( readOnly );
732 d->mEmailWidget->setReadOnly( readOnly );
733 d->mHomepageWidget->setReadOnly( readOnly );
734 d->mBlogWidget->setReadOnly( readOnly );
735 d->mIMWidget->setReadOnly( readOnly );
738 d->mPhonesWidget->setReadOnly( readOnly );
741 d->mCategoriesWidget->setReadOnly( readOnly );
744 d->mMailPreferFormatting->setEnabled( !readOnly );
745 d->mAllowRemoteContent->setEnabled( !readOnly );
748 d->mAddressesWidget->setReadOnly( readOnly );
751 d->mCoordinatesWidget->setReadOnly( readOnly );
754 d->mLogoWidget->setReadOnly( readOnly );
755 d->mOrganizationWidget->setReadOnly( readOnly );
756 d->mProfessionWidget->setReadOnly( readOnly );
757 d->mTitleWidget->setReadOnly( readOnly );
758 d->mDepartmentWidget->setReadOnly( readOnly );
759 d->mOfficeWidget->setReadOnly( readOnly );
760 d->mManagerWidget->setReadOnly( readOnly );
761 d->mAssistantWidget->setReadOnly( readOnly );
764 d->mFreeBusyWidget->setReadOnly( readOnly );
767 d->mNotesWidget->setReadOnly( readOnly );
770 d->mBirthdateWidget->setReadOnly( readOnly );
771 d->mAnniversaryWidget->setReadOnly( readOnly );
774 d->mPartnerWidget->setReadOnly( readOnly );
776 if (d->mDisplayMode == FullMode) {
778 d->mCustomFieldsWidget->setReadOnly( readOnly );
virtual void loadContact(const KABC::Addressee &contact)=0
This method is called to fill the editor widget with the data from contact.
The base class for custom ContactEditor page plugins.
virtual void storeContact(KABC::Addressee &contact) const =0
This method is called to store the data from the editor widget into contact.
virtual QString title() const =0
Returns the i18n'd page title.
virtual void setReadOnly(bool readOnly)=0
This method is called to set the editor widget readOnly.