akonadi/contact
contactgroupeditordialog.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "contactgroupeditordialog.h"
00023
00024 #include "contactgroupeditor.h"
00025
00026 #include <akonadi/collectioncombobox.h>
00027 #include <akonadi/item.h>
00028 #include <kabc/contactgroup.h>
00029 #include <klocale.h>
00030 #include <kpushbutton.h>
00031
00032 #include <QtGui/QGridLayout>
00033 #include <QtGui/QLabel>
00034
00035 using namespace Akonadi;
00036
00037 class ContactGroupEditorDialog::Private
00038 {
00039 public:
00040 Private( ContactGroupEditorDialog::Mode mode )
00041 : mAddressBookBox( 0 ), mMode( mode )
00042 {
00043 }
00044
00045 CollectionComboBox *mAddressBookBox;
00046 ContactGroupEditor *mEditor;
00047 ContactGroupEditorDialog::Mode mMode;
00048 };
00049
00050 ContactGroupEditorDialog::ContactGroupEditorDialog( Mode mode, QWidget *parent )
00051 : KDialog( parent ), d( new Private( mode ) )
00052 {
00053 KGlobal::locale()->insertCatalog( QLatin1String( "akonadicontact" ) );
00054 setCaption( mode == CreateMode ? i18n( "New Contact Group" ) : i18n( "Edit Contact Group" ) );
00055 setButtons( Ok | Cancel );
00056
00057
00058
00059 button( Ok )->setAutoDefault( false );
00060 button( Cancel )->setAutoDefault( false );
00061
00062 QWidget *mainWidget = new QWidget( this );
00063 setMainWidget( mainWidget );
00064
00065 QGridLayout *layout = new QGridLayout( mainWidget );
00066
00067 d->mEditor = new Akonadi::ContactGroupEditor( mode == CreateMode ?
00068 Akonadi::ContactGroupEditor::CreateMode : Akonadi::ContactGroupEditor::EditMode,
00069 this );
00070
00071 if ( mode == CreateMode ) {
00072 QLabel *label = new QLabel( i18n( "Add to:" ), mainWidget );
00073
00074 d->mAddressBookBox = new CollectionComboBox( mainWidget );
00075 d->mAddressBookBox->setMimeTypeFilter( QStringList() << KABC::ContactGroup::mimeType() );
00076 d->mAddressBookBox->setAccessRightsFilter( Collection::CanCreateItem );
00077
00078 layout->addWidget( label, 0, 0 );
00079 layout->addWidget( d->mAddressBookBox, 0, 1 );
00080 }
00081
00082 layout->addWidget( d->mEditor, 1, 0, 1, 2 );
00083 layout->setColumnStretch( 1, 1 );
00084
00085 connect( d->mEditor, SIGNAL( contactGroupStored( const Akonadi::Item& ) ),
00086 this, SIGNAL( contactGroupStored( const Akonadi::Item& ) ) );
00087
00088 setInitialSize( QSize( 470, 400 ) );
00089 }
00090
00091 ContactGroupEditorDialog::~ContactGroupEditorDialog()
00092 {
00093 delete d;
00094 }
00095
00096 void ContactGroupEditorDialog::setContactGroup( const Akonadi::Item &group )
00097 {
00098 d->mEditor->loadContactGroup( group );
00099 }
00100
00101 void ContactGroupEditorDialog::setDefaultAddressBook( const Akonadi::Collection &addressbook )
00102 {
00103 if ( d->mMode == EditMode )
00104 return;
00105
00106 d->mAddressBookBox->setDefaultCollection( addressbook );
00107 }
00108
00109 ContactGroupEditor* ContactGroupEditorDialog::editor() const
00110 {
00111 return d->mEditor;
00112 }
00113
00114 void ContactGroupEditorDialog::slotButtonClicked( int button )
00115 {
00116 if ( button == KDialog::Ok ) {
00117 if ( d->mAddressBookBox )
00118 d->mEditor->setDefaultAddressBook( d->mAddressBookBox->currentCollection() );
00119
00120 if ( d->mEditor->saveContactGroup() )
00121 accept();
00122 } else if ( button == KDialog::Cancel ) {
00123 reject();
00124 }
00125 }
00126
00127 #include "contactgroupeditordialog.moc"