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 typeListClicked();
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::typeListClicked()
72 q->enableButtonOk( selectedType().isValid() );
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(typeListClicked()) );
108 connect( d->ui.typeListView, SIGNAL(itemSelectionChanged()),
109 this, SLOT(typeListClicked()) );
110 connect( d->ui.typeListView, SIGNAL(doubleClicked(QModelIndex)),
111 this, SLOT(accept()) );
119 void AddTransportDialog::accept()
121 if( !d->selectedType().isValid() ) {
128 if( d->selectedType().type() == Transport::EnumType::Akonadi ) {
130 using namespace Akonadi;
131 AgentInstanceCreateJob *cjob =
new AgentInstanceCreateJob( d->selectedType().agentType() );
132 if( !cjob->exec() ) {
133 kWarning() <<
"Failed to create agent instance of type"
134 << d->selectedType().agentType().identifier();
137 transport->setHost( cjob->instance().identifier() );
139 transport->setName( d->ui.name->text().trimmed() );
144 #ifndef KDEPIM_MOBILE_UI
145 if( d->ui.setDefault->isChecked() ) {
153 #include "addtransportdialog.moc"