QList<QWidget*> ServiceItemDelegate::createItemWidgets() const
{
    QCheckBox* checkBox = new QCheckBox();
    QPalette palette = checkBox->palette();
    palette.setColor(QPalette::WindowText, palette.color(QPalette::Text));
    checkBox->setPalette(palette);
    connect(checkBox, SIGNAL(clicked(bool)), this, SLOT(slotCheckBoxClicked(bool)));

    KPushButton* configureButton = new KPushButton();
    connect(configureButton, SIGNAL(clicked()), this, SLOT(slotConfigureButtonClicked()));

    return QList<QWidget*>() << checkBox << configureButton;
}
Kleo::BackendConfigWidget::BackendConfigWidget( CryptoBackendFactory * factory, QWidget * parent, const char * name, Qt::WFlags f )
  : QWidget( parent, f ), d( 0 )
{
  setObjectName( name) ;
  assert( factory );
  d = new Private();
  d->backendFactory = factory;

  QHBoxLayout * hlay =
    new QHBoxLayout( this );
  hlay->setMargin( 0 );
  hlay->setSpacing( KDialog::spacingHint() );

  d->listView = new BackendListView( this );
  d->listView->setObjectName( "d->listView" );
  d->listView->addColumn( i18n("Available Backends") );
  d->listView->setAllColumnsShowFocus( true );
  d->listView->setSorting( -1 );
  d->listView->header()->setClickEnabled( false );
  d->listView->setFullWidth( true );

  hlay->addWidget( d->listView, 1 );

  connect( d->listView, SIGNAL(selectionChanged(Q3ListViewItem*)),
	   SLOT(slotSelectionChanged(Q3ListViewItem*)) );

  QVBoxLayout * vlay = new QVBoxLayout();
  hlay->addLayout(vlay);

  d->configureButton = new QPushButton( i18n("Confi&gure..."), this );
  d->configureButton->setAutoDefault( false );
  vlay->addWidget( d->configureButton );

  connect( d->configureButton, SIGNAL(clicked()),
	   SLOT(slotConfigureButtonClicked()) );

  d->rescanButton = new QPushButton( i18n("Rescan"), this );
  d->rescanButton->setAutoDefault( false );
  vlay->addWidget( d->rescanButton );

  connect( d->rescanButton, SIGNAL(clicked()),
	   SLOT(slotRescanButtonClicked()) );

  vlay->addStretch( 1 );
}