Changeset View
Changeset View
Standalone View
Standalone View
libksieve/ksieveui/vacation/vacationpagewidget.cpp
Show All 14 Lines | /* | ||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
*/ | */ | ||||
#include "vacationpagewidget.h" | #include "vacationpagewidget.h" | ||||
#include "vacationeditwidget.h" | #include "vacationeditwidget.h" | ||||
#include "vacationwarningwidget.h" | #include "vacationwarningwidget.h" | ||||
#include "vacationcreatescriptjob.h" | #include "vacationcreatescriptjob.h" | ||||
#include "vacationutils.h" | #include "vacationutils.h" | ||||
#include "multiimapvacationmanager.h" | |||||
#include <managescriptsjob/parseuserscriptjob.h> | |||||
#include "sieve-vacation.h" | #include "sieve-vacation.h" | ||||
#include <kmime/kmime_header_parsing.h> | #include <kmime/kmime_header_parsing.h> | ||||
#include <kmanagesieve/sievejob.h> | #include <kmanagesieve/sievejob.h> | ||||
#include <KDebug> | #include <KDebug> | ||||
#include <KLocalizedString> | #include <KLocalizedString> | ||||
#include <QStackedWidget> | #include <QStackedWidget> | ||||
#include <QVBoxLayout> | #include <QVBoxLayout> | ||||
#include <QLabel> | #include <QLabel> | ||||
using namespace KSieveUi; | using namespace KSieveUi; | ||||
VacationPageWidget::VacationPageWidget(QWidget *parent) | VacationPageWidget::VacationPageWidget(QWidget *parent) | ||||
: QWidget(parent), | : QWidget(parent), | ||||
mPageScript(Script), | mPageScript(Script), | ||||
mSieveJob(0), | |||||
mWasActive(false) | mWasActive(false) | ||||
{ | { | ||||
QVBoxLayout *lay = new QVBoxLayout; | QVBoxLayout *lay = new QVBoxLayout; | ||||
lay->setMargin(0); | lay->setMargin(0); | ||||
mStackWidget = new QStackedWidget; | mStackWidget = new QStackedWidget; | ||||
lay->addWidget(mStackWidget); | lay->addWidget(mStackWidget); | ||||
Show All 25 Lines | VacationPageWidget::VacationPageWidget(QWidget *parent) | ||||
mStackWidget->addWidget(w); | mStackWidget->addWidget(w); | ||||
mStackWidget->setCurrentIndex(Script); | mStackWidget->setCurrentIndex(Script); | ||||
setLayout(lay); | setLayout(lay); | ||||
} | } | ||||
VacationPageWidget::~VacationPageWidget() | VacationPageWidget::~VacationPageWidget() | ||||
{ | { | ||||
if ( mSieveJob ) | |||||
mSieveJob->kill(); | |||||
mSieveJob = 0; | |||||
} | } | ||||
void VacationPageWidget::setServerUrl(const KUrl &url) | void VacationPageWidget::setServerUrl(const KUrl &url) | ||||
{ | { | ||||
mUrl = url; | mUrl = url; | ||||
mVacationEditWidget->setEnabled(false); | mVacationEditWidget->setEnabled(false); | ||||
mSieveJob = KManageSieve::SieveJob::get( url ); | } | ||||
connect( mSieveJob, SIGNAL(gotScript(KManageSieve::SieveJob*,bool,QString,bool)), | |||||
SLOT(slotGetResult(KManageSieve::SieveJob*,bool,QString,bool)) ); | void VacationPageWidget::setVacationManager(MultiImapVacationManager *vacationManager) | ||||
{ | |||||
mVacationManager = vacationManager; | |||||
connect(mVacationManager, SIGNAL(scriptAvailable(QString,QStringList,QString,QString,bool)), | |||||
SLOT(slotGetResult(QString,QStringList,QString,QString,bool))); | |||||
mVacationManager->checkVacation(mServerName, mUrl); | |||||
} | } | ||||
void VacationPageWidget::setServerName(const QString &serverName) | void VacationPageWidget::setServerName(const QString &serverName) | ||||
{ | { | ||||
mServerName = serverName; | mServerName = serverName; | ||||
} | } | ||||
void VacationPageWidget::slotGetResult( KManageSieve::SieveJob * job, bool success, const QString & script, bool active ) | void VacationPageWidget::slotGetResult(const QString &serverName, const QStringList &sieveCapabilities, const QString &scriptName, const QString &script, bool active) | ||||
{ | { | ||||
kDebug() << success | if (serverName != mServerName) { | ||||
<< ", ?," << active << ")" << endl | return; | ||||
} | |||||
kDebug() << serverName << sieveCapabilities << endl | |||||
<< scriptName << "(" << active << ")" << endl | |||||
<< "script:" << endl | << "script:" << endl | ||||
<< script; | << script; | ||||
mSieveJob = 0; // job deletes itself after returning from this slot! | |||||
if ( mUrl.protocol() == QLatin1String("sieve") && | if ( mUrl.protocol() == QLatin1String("sieve") && | ||||
!job->sieveCapabilities().contains(QLatin1String("vacation")) ) { | !sieveCapabilities.contains(QLatin1String("vacation")) ) { | ||||
mStackWidget->setCurrentIndex(ScriptNotSupported); | mStackWidget->setCurrentIndex(ScriptNotSupported); | ||||
return; | return; | ||||
} | } | ||||
// Whether the server supports the "date" extension | // Whether the server supports the "date" extension | ||||
const bool supportsSieveDate = mUrl.protocol() == QLatin1String("sieve") && job->sieveCapabilities().contains(QLatin1String("date")); | const bool supportsSieveDate = mUrl.protocol() == QLatin1String("sieve") && sieveCapabilities.contains(QLatin1String("date")); | ||||
mVacationEditWidget->setEnabled(true); | |||||
QString messageText = VacationUtils::defaultMessageText(); | QString messageText = VacationUtils::defaultMessageText(); | ||||
QString subject = VacationUtils::defaultSubject(); | QString subject = VacationUtils::defaultSubject(); | ||||
int notificationInterval = VacationUtils::defaultNotificationInterval(); | int notificationInterval = VacationUtils::defaultNotificationInterval(); | ||||
QStringList aliases = VacationUtils::defaultMailAliases(); | QStringList aliases = VacationUtils::defaultMailAliases(); | ||||
bool sendForSpam = VacationUtils::defaultSendForSpam(); | bool sendForSpam = VacationUtils::defaultSendForSpam(); | ||||
QString domainName = VacationUtils::defaultDomainName(); | QString domainName = VacationUtils::defaultDomainName(); | ||||
QDate startDate = VacationUtils::defaultStartDate(); | QDate startDate = VacationUtils::defaultStartDate(); | ||||
QDate endDate = VacationUtils::defaultEndDate(); | QDate endDate = VacationUtils::defaultEndDate(); | ||||
if ( !success ) | |||||
active = false; // default to inactive | |||||
if ( ( !success || !KSieveUi::VacationUtils::parseScript( script, messageText, subject, notificationInterval, aliases, sendForSpam, domainName, startDate, endDate ) ) ) | const bool bParse = KSieveUi::VacationUtils::parseScript(script, messageText, subject, notificationInterval, aliases, sendForSpam, domainName, startDate, endDate); | ||||
if (!bParse) { | |||||
mVacationWarningWidget->setVisible(true); | mVacationWarningWidget->setVisible(true); | ||||
} | |||||
mWasActive = active; | mWasActive = active; | ||||
mVacationEditWidget->setEnabled(true); | |||||
mVacationEditWidget->setActivateVacation( active ); | mVacationEditWidget->setActivateVacation( active ); | ||||
mVacationEditWidget->setMessageText( messageText ); | mVacationEditWidget->setMessageText( messageText ); | ||||
mVacationEditWidget->setSubject( subject ); | mVacationEditWidget->setSubject( subject ); | ||||
mVacationEditWidget->setNotificationInterval( notificationInterval ); | mVacationEditWidget->setNotificationInterval( notificationInterval ); | ||||
mVacationEditWidget->setMailAliases( aliases.join(QLatin1String(", ")) ); | mVacationEditWidget->setMailAliases( aliases.join(QLatin1String(", ")) ); | ||||
mVacationEditWidget->setSendForSpam( sendForSpam ); | mVacationEditWidget->setSendForSpam( sendForSpam ); | ||||
mVacationEditWidget->setDomainName( domainName ); | mVacationEditWidget->setDomainName( domainName ); | ||||
mVacationEditWidget->enableDomainAndSendForSpam( !VacationSettings::allowOutOfOfficeUploadButNoSettings() ); | mVacationEditWidget->enableDomainAndSendForSpam( !VacationSettings::allowOutOfOfficeUploadButNoSettings() ); | ||||
mVacationEditWidget->enableDates( supportsSieveDate ); | mVacationEditWidget->enableDates( supportsSieveDate ); | ||||
if ( supportsSieveDate ) { | if ( supportsSieveDate ) { | ||||
mVacationEditWidget->setStartDate( startDate ); | mVacationEditWidget->setStartDate( startDate ); | ||||
mVacationEditWidget->setEndDate( endDate ); | mVacationEditWidget->setEndDate( endDate ); | ||||
} | } | ||||
//emit scriptActive( mWasActive, mServerName ); | //emit scriptActive( mWasActive, mServerName ); | ||||
} | } | ||||
KSieveUi::VacationCreateScriptJob *VacationPageWidget::writeScript() | KSieveUi::VacationCreateScriptJob *VacationPageWidget::writeScript() | ||||
{ | { | ||||
if (mPageScript == Script) { | if (mPageScript == Script) { | ||||
KSieveUi::VacationCreateScriptJob *createJob = new KSieveUi::VacationCreateScriptJob; | KSieveUi::VacationCreateScriptJob *createJob = new KSieveUi::VacationCreateScriptJob; | ||||
createJob->setServerUrl(mUrl); | createJob->setServerUrl(mUrl); | ||||
createJob->setServerName(mServerName); | createJob->setServerName(mServerName); | ||||
const QString script = VacationUtils::composeScript( mVacationEditWidget->messageText(), | const QString script = VacationUtils::composeScript( mVacationEditWidget->messageText(), | ||||
mVacationEditWidget->subject(), | mVacationEditWidget->subject(), | ||||
Show All 20 Lines |