mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-23 18:32:51 +00:00
172 lines
6.5 KiB
C++
172 lines
6.5 KiB
C++
/*
|
|
Copyright (c) 2013, 2014 Montel Laurent <montel@kde.org>
|
|
|
|
This library is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU Library General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or (at your
|
|
option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful, but WITHOUT
|
|
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
|
|
License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to the
|
|
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
02110-1301, USA.
|
|
|
|
*/
|
|
|
|
#include "serversievesettings.h"
|
|
#include "ui_serversievesettings.h"
|
|
#include <mailtransport/transport.h>
|
|
|
|
#include <KLocalizedString>
|
|
|
|
/** static helper functions **/
|
|
static QString authenticationModeString( MailTransport::Transport::EnumAuthenticationType::type mode )
|
|
{
|
|
switch ( mode ) {
|
|
case MailTransport::Transport::EnumAuthenticationType::LOGIN:
|
|
return QLatin1String("LOGIN");
|
|
case MailTransport::Transport::EnumAuthenticationType::PLAIN:
|
|
return QLatin1String("PLAIN");
|
|
case MailTransport::Transport::EnumAuthenticationType::CRAM_MD5:
|
|
return QLatin1String("CRAM-MD5");
|
|
case MailTransport::Transport::EnumAuthenticationType::DIGEST_MD5:
|
|
return QLatin1String("DIGEST-MD5");
|
|
case MailTransport::Transport::EnumAuthenticationType::GSSAPI:
|
|
return QLatin1String("GSSAPI");
|
|
case MailTransport::Transport::EnumAuthenticationType::NTLM:
|
|
return QLatin1String("NTLM");
|
|
case MailTransport::Transport::EnumAuthenticationType::CLEAR:
|
|
return i18nc( "Authentication method", "Clear text" );
|
|
case MailTransport::Transport::EnumAuthenticationType::ANONYMOUS:
|
|
return i18nc( "Authentication method", "Anonymous" );
|
|
default:
|
|
break;
|
|
}
|
|
return QString();
|
|
}
|
|
|
|
static void addAuthenticationItem( QComboBox* authCombo, MailTransport::Transport::EnumAuthenticationType::type authtype )
|
|
{
|
|
//kDebug() << "adding auth item " << authenticationModeString( authtype );
|
|
authCombo->addItem( authenticationModeString( authtype ), QVariant( authtype ) );
|
|
}
|
|
|
|
static MailTransport::Transport::EnumAuthenticationType::type getCurrentAuthMode( QComboBox* authCombo )
|
|
{
|
|
MailTransport::Transport::EnumAuthenticationType::type authtype = (MailTransport::Transport::EnumAuthenticationType::type) authCombo->itemData( authCombo->currentIndex() ).toInt();
|
|
//kDebug() << "current auth mode: " << authenticationModeString( authtype );
|
|
return authtype;
|
|
}
|
|
|
|
|
|
static void setCurrentAuthMode( QComboBox* authCombo, MailTransport::Transport::EnumAuthenticationType::type authtype )
|
|
{
|
|
//kDebug() << "setting authcombo: " << authenticationModeString( authtype );
|
|
int index = authCombo->findData( authtype );
|
|
if ( index == -1 )
|
|
kWarning() << "desired authmode not in the combo";
|
|
//kDebug() << "found corresponding index: " << index << "with data" << authenticationModeString( (MailTransport::Transport::EnumAuthenticationType::type) authCombo->itemData( index ).toInt() );
|
|
authCombo->setCurrentIndex( index );
|
|
MailTransport::Transport::EnumAuthenticationType::type t = (MailTransport::Transport::EnumAuthenticationType::type) authCombo->itemData( authCombo->currentIndex() ).toInt();
|
|
//kDebug() << "selected auth mode:" << authenticationModeString( t );
|
|
Q_ASSERT( t == authtype );
|
|
}
|
|
|
|
ServerSieveSettings::ServerSieveSettings(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::ServerSieveSettings)
|
|
{
|
|
ui->setupUi(this);
|
|
populateDefaultAuthenticationOptions();
|
|
connect(ui->serverName, SIGNAL(textChanged(QString)), this, SLOT(slotUserServerNameChanged()));
|
|
connect(ui->userName, SIGNAL(textChanged(QString)), this, SLOT(slotUserServerNameChanged()));
|
|
}
|
|
|
|
ServerSieveSettings::~ServerSieveSettings()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void ServerSieveSettings::populateDefaultAuthenticationOptions()
|
|
{
|
|
ui->authenticationCombo->clear();
|
|
addAuthenticationItem( ui->authenticationCombo, MailTransport::Transport::EnumAuthenticationType::CLEAR);
|
|
addAuthenticationItem( ui->authenticationCombo, MailTransport::Transport::EnumAuthenticationType::LOGIN );
|
|
addAuthenticationItem( ui->authenticationCombo, MailTransport::Transport::EnumAuthenticationType::PLAIN );
|
|
addAuthenticationItem( ui->authenticationCombo, MailTransport::Transport::EnumAuthenticationType::CRAM_MD5 );
|
|
addAuthenticationItem( ui->authenticationCombo, MailTransport::Transport::EnumAuthenticationType::DIGEST_MD5 );
|
|
addAuthenticationItem( ui->authenticationCombo, MailTransport::Transport::EnumAuthenticationType::NTLM );
|
|
addAuthenticationItem( ui->authenticationCombo, MailTransport::Transport::EnumAuthenticationType::GSSAPI );
|
|
addAuthenticationItem( ui->authenticationCombo, MailTransport::Transport::EnumAuthenticationType::ANONYMOUS );
|
|
}
|
|
|
|
void ServerSieveSettings::slotUserServerNameChanged()
|
|
{
|
|
Q_EMIT enableOkButton(!ui->userName->text().isEmpty() && !ui->serverName->text().isEmpty());
|
|
}
|
|
|
|
QString ServerSieveSettings::serverName() const
|
|
{
|
|
return ui->serverName->text();
|
|
}
|
|
|
|
void ServerSieveSettings::setServerName(const QString &name)
|
|
{
|
|
ui->serverName->setText(name);
|
|
}
|
|
|
|
int ServerSieveSettings::port() const
|
|
{
|
|
return ui->port->value();
|
|
}
|
|
|
|
void ServerSieveSettings::setPort(int value)
|
|
{
|
|
ui->port->setValue(value);
|
|
}
|
|
|
|
QString ServerSieveSettings::userName() const
|
|
{
|
|
return ui->userName->text();
|
|
}
|
|
|
|
void ServerSieveSettings::setUserName(const QString &name)
|
|
{
|
|
ui->userName->setText(name);
|
|
}
|
|
|
|
QString ServerSieveSettings::password() const
|
|
{
|
|
return ui->password->text();
|
|
}
|
|
|
|
void ServerSieveSettings::setPassword(const QString &pass)
|
|
{
|
|
ui->password->setText(pass);
|
|
}
|
|
|
|
void ServerSieveSettings::setServerSieveConfig(const SieveEditorUtil::SieveServerConfig &conf)
|
|
{
|
|
setPassword(conf.password);
|
|
setPort(conf.port);
|
|
setServerName(conf.serverName);
|
|
setUserName(conf.userName);
|
|
setCurrentAuthMode( ui->authenticationCombo, conf.authenticationType );
|
|
}
|
|
|
|
SieveEditorUtil::SieveServerConfig ServerSieveSettings::serverSieveConfig() const
|
|
{
|
|
SieveEditorUtil::SieveServerConfig conf;
|
|
conf.password = password();
|
|
conf.port = port();
|
|
conf.serverName = serverName();
|
|
conf.userName = userName();
|
|
const MailTransport::Transport::EnumAuthenticationType::type authtype = getCurrentAuthMode( ui->authenticationCombo );
|
|
conf.authenticationType = authtype;
|
|
return conf;
|
|
}
|