22 #include "contactgroupeditordialog.h"
24 #include "contactgroupeditor.h"
25 #include "contactgroupeditor_p.h"
27 #include <akonadi/collectioncombobox.h>
28 #include <akonadi/item.h>
29 #include <kabc/contactgroup.h>
31 #include <kpushbutton.h>
32 #include <klineedit.h>
34 #include <QtGui/QGridLayout>
35 #include <QtGui/QLabel>
37 using namespace Akonadi;
39 class ContactGroupEditorDialog::Private
42 Private( ContactGroupEditorDialog *qq, ContactGroupEditorDialog::Mode mode )
43 : q( qq ), mAddressBookBox( 0 ), mMode( mode )
47 void slotGroupNameChanged(
const QString& name )
49 bool isValid = !(name.contains(QLatin1Char(
'@')) || name.contains(QLatin1Char(
'.')));
50 q->button( Ok )->setEnabled( !name.isEmpty() && isValid );
51 mEditor->groupNameIsValid(isValid);
54 ContactGroupEditorDialog *q;
55 CollectionComboBox *mAddressBookBox;
56 ContactGroupEditor *mEditor;
57 ContactGroupEditorDialog::Mode mMode;
60 ContactGroupEditorDialog::ContactGroupEditorDialog( Mode mode, QWidget *parent )
61 : KDialog( parent ), d( new Private( this, mode ) )
63 KGlobal::locale()->insertCatalog( QLatin1String(
"akonadicontact" ) );
64 setCaption( mode == CreateMode ? i18n(
"New Contact Group" ) : i18n(
"Edit Contact Group" ) );
65 setButtons( Ok | Cancel );
69 button( Ok )->setAutoDefault(
false );
70 button( Cancel )->setAutoDefault(
false );
72 QWidget *mainWidget =
new QWidget(
this );
73 setMainWidget( mainWidget );
75 QGridLayout *layout =
new QGridLayout( mainWidget );
77 d->mEditor =
new Akonadi::ContactGroupEditor( mode == CreateMode ?
78 Akonadi::ContactGroupEditor::CreateMode : Akonadi::ContactGroupEditor::EditMode,
81 if ( mode == CreateMode ) {
82 QLabel *label =
new QLabel( i18n(
"Add to:" ), mainWidget );
84 d->mAddressBookBox =
new CollectionComboBox( mainWidget );
85 d->mAddressBookBox->setMimeTypeFilter( QStringList() << KABC::ContactGroup::mimeType() );
86 d->mAddressBookBox->setAccessRightsFilter( Collection::CanCreateItem );
88 layout->addWidget( label, 0, 0 );
89 layout->addWidget( d->mAddressBookBox, 0, 1 );
92 layout->addWidget( d->mEditor, 1, 0, 1, 2 );
93 layout->setColumnStretch( 1, 1 );
97 connect( d->mEditor->d->mGui.groupName, SIGNAL(textChanged(QString)),
98 this, SLOT(slotGroupNameChanged(QString)) );
100 button( Ok )->setEnabled( !d->mEditor->d->mGui.groupName->text().isEmpty() );
102 setInitialSize( QSize( 470, 400 ) );
105 ContactGroupEditorDialog::~ContactGroupEditorDialog()
110 void ContactGroupEditorDialog::setContactGroup(
const Akonadi::Item &group )
112 d->mEditor->loadContactGroup( group );
115 void ContactGroupEditorDialog::setDefaultAddressBook(
const Akonadi::Collection &addressbook )
117 if ( d->mMode == EditMode )
120 d->mAddressBookBox->setDefaultCollection( addressbook );
123 ContactGroupEditor* ContactGroupEditorDialog::editor()
const
128 void ContactGroupEditorDialog::slotButtonClicked(
int button )
130 if ( button == KDialog::Ok ) {
131 if ( d->mAddressBookBox )
132 d->mEditor->setDefaultAddressBook( d->mAddressBookBox->currentCollection() );
134 if ( d->mEditor->saveContactGroup() )
136 }
else if ( button == KDialog::Cancel ) {
141 #include "contactgroupeditordialog.moc"