20 #include "addtransportdialog.h"
21 #include "transport.h"
22 #include "transportconfigwidget.h"
23 #include "transportmanager.h"
24 #include "transporttype.h"
25 #include "ui_addtransportdialog.h"
29 #include <akonadi/agentinstance.h>
30 #include <akonadi/agentinstancecreatejob.h>
32 using namespace MailTransport;
37 class AddTransportDialog::Private
54 void updateOkButton();
57 ::Ui::AddTransportDialog ui;
60 TransportType AddTransportDialog::Private::selectedType()
const
62 QList<QTreeWidgetItem*> sel = ui.typeListView->selectedItems();
64 return sel.first()->data( 0, Qt::UserRole ).value<
TransportType>();
69 void AddTransportDialog::Private::updateOkButton()
72 q->enableButtonOk( selectedType().isValid() && !ui.name->text().trimmed().isEmpty() );
76 : KDialog( parent ), d( new Private( this ) )
80 QWidget *widget =
new QWidget(
this );
81 d->ui.setupUi( widget );
82 setMainWidget( widget );
83 setCaption( i18n(
"Create Outgoing Account" ) );
84 setButtons( Ok|Cancel );
85 enableButtonOk(
false );
86 setButtonText( Ok, i18nc(
"create and configure a mail transport",
"Create and Configure" ) );
88 #ifdef KDEPIM_MOBILE_UI
89 d->ui.descLabel->hide();
90 d->ui.setDefault->hide();
96 QTreeWidgetItem *treeItem =
new QTreeWidgetItem( d->ui.typeListView );
97 treeItem->setText( 0, type.
name() );
99 treeItem->setData( 0, Qt::UserRole, QVariant::fromValue( type ) );
101 d->ui.typeListView->resizeColumnToContents( 0 );
103 d->ui.typeListView->setFocus();
106 connect( d->ui.typeListView, SIGNAL(itemClicked(QTreeWidgetItem*,
int)),
107 this, SLOT(updateOkButton()) );
108 connect( d->ui.typeListView, SIGNAL(itemSelectionChanged()),
109 this, SLOT(updateOkButton()) );
110 connect( d->ui.typeListView, SIGNAL(doubleClicked(QModelIndex)),
111 this, SLOT(accept()) );
112 connect( d->ui.name, SIGNAL(textChanged(QString)),
113 this, SLOT(updateOkButton()) );
121 void AddTransportDialog::accept()
123 if ( !d->selectedType().isValid() ) {
130 if ( d->selectedType().type() == Transport::EnumType::Akonadi ) {
132 using namespace Akonadi;
133 AgentInstanceCreateJob *cjob =
new AgentInstanceCreateJob( d->selectedType().agentType() );
134 if ( !cjob->exec() ) {
135 kWarning() <<
"Failed to create agent instance of type"
136 << d->selectedType().agentType().identifier();
139 transport->setHost( cjob->instance().identifier() );
141 transport->setName( d->ui.name->text().trimmed() );
146 #ifndef KDEPIM_MOBILE_UI
147 if ( d->ui.setDefault->isChecked() ) {
155 #include "moc_addtransportdialog.cpp"