[KROUPWARE MERGE] Sieve vacation support

svn path=/trunk/kdenetwork/kmail/; revision=196030
wilder-work
Don Sanders 24 years ago
parent 6050a302a1
commit 7cdddbb8a3
  1. 1
      Makefile.am
  2. 16
      accountdialog.cpp
  3. 4
      accountdialog.h
  4. 5
      kmacctimap.cpp
  5. 7
      kmacctimap.h
  6. 27
      kmmainwidget.cpp
  7. 8
      kmmainwidget.h
  8. 4
      kmmainwin.rc

@ -52,6 +52,7 @@ libkmailpart_la_SOURCES = kmmessage.cpp kmmainwin.cpp configuredialog.cpp \
kmkernel.cpp kmailpartIface.skel kmailIface.skel main.cpp \
accountdialog.cpp kmfldsearch.cpp \
kmdisplayvcard.cpp vcard.cpp \
vacationdialog.cpp vacation.cpp sieveconfig.cpp sievejob.cpp \
kmpopheaders.cpp kmpopfiltercnfrmdlg.cpp \
directoryservicesconfigurationdialogimpl.cpp \
adddirectoryservicedialog.ui \

@ -33,6 +33,7 @@
#include <kfiledialog.h>
#include <klocale.h>
#include <kdebug.h>
#include <kmessagebox.h>
#include <knuminput.h>
#include <kseparator.h>
@ -42,6 +43,9 @@
#include <netinet/in.h>
#include "accountdialog.h"
#include "sieveconfig.h"
using KMail::SieveConfig;
using KMail::SieveConfigEditor;
#include "kmacctmaildir.h"
#include "kmacctlocal.h"
#include "kmacctmgr.h"
@ -50,6 +54,8 @@
#include "kmfoldermgr.h"
#include "kmservertest.h"
#include <cassert>
#include "accountdialog.moc"
#undef None
@ -227,7 +233,7 @@ ProcmailRCParser::expandVars(const QString &s)
AccountDialog::AccountDialog( const QString & caption, KMAccount *account,
QWidget *parent, const char *name, bool modal )
: KDialogBase( parent, name, modal, caption, Ok|Cancel|Help, Ok, true ),
mAccount(account)
mAccount(account), mSieveConfigEditor( 0 )
{
mServerTest = 0;
setHelp("receiving-mail");
@ -771,6 +777,10 @@ void AccountDialog::makeImapAccountPage()
buttonLay->addStretch();
buttonLay->addWidget( mImap.checkCapabilities );
mSieveConfigEditor = new SieveConfigEditor( tabWidget );
mSieveConfigEditor->layout()->setMargin( KDialog::marginHint() );
tabWidget->addTab( mSieveConfigEditor, i18n("&Filtering") );
connect(kapp,SIGNAL(kdisplayFontChanged()),SLOT(slotFontChanged()));
}
@ -890,6 +900,8 @@ void AccountDialog::setupSettings()
else if (ai.auth() == "LOGIN")
mImap.authLogin->setChecked( TRUE );
else mImap.authUser->setChecked( TRUE );
assert( mSieveConfigEditor );
mSieveConfigEditor->setConfig( ai.sieveConfig() );
}
else if( accountType == "maildir" )
{
@ -1170,6 +1182,8 @@ void AccountDialog::saveSettings()
else if (mImap.authLogin->isChecked())
epa.setAuth("LOGIN");
else epa.setAuth("*");
assert( mSieveConfigEditor );
epa.setSieveConfig( mSieveConfigEditor->config() );
}
else if( accountType == "maildir" )
{

@ -34,6 +34,9 @@ class KMAccount;
class KMFolder;
class KMServerTest;
class QButtonGroup;
namespace KMail {
class SieveConfigEditor;
};
class AccountDialog : public KDialogBase
{
@ -180,6 +183,7 @@ class AccountDialog : public KDialogBase
QValueList<QGuardedPtr<KMFolder> > mFolderList;
QStringList mFolderNames;
KMServerTest *mServerTest;
KMail::SieveConfigEditor *mSieveConfigEditor;
};

@ -99,6 +99,7 @@ void KMAcctImap::init(void)
mUseSSL = FALSE;
mUseTLS = FALSE;
mIdle = TRUE;
mSieveConfig = KMail::SieveConfig();
}
//-----------------------------------------------------------------------------
@ -132,6 +133,7 @@ void KMAcctImap::pseudoAssign(KMAccount* account)
setPasswd(acct->passwd(), acct->storePasswd());
setUseSSL(acct->useSSL());
setUseTLS(acct->useTLS());
setSieveConfig(acct->sieveConfig());
}
//-----------------------------------------------------------------------------
@ -162,6 +164,7 @@ void KMAcctImap::readConfig(KConfig& config)
mOnlySubscribedFolders = config.readBoolEntry("subscribed-folders", FALSE);
mUseSSL = config.readBoolEntry("use-ssl", FALSE);
mUseTLS = config.readBoolEntry("use-tls", FALSE);
mSieveConfig.readConfig( config );
}
@ -185,6 +188,8 @@ void KMAcctImap::writeConfig(KConfig& config)
config.writeEntry("subscribed-folders", mOnlySubscribedFolders);
config.writeEntry("use-ssl", mUseSSL);
config.writeEntry("use-tls", mUseTLS);
mSieveConfig.writeConfig( config );
}

@ -23,6 +23,7 @@
#define KMAcctImap_h
#include "kmaccount.h"
#include "sieveconfig.h"
#include <qdialog.h>
#include <kio/global.h>
#include <kio/job.h>
@ -123,6 +124,11 @@ public:
bool useTLS() { return mUseTLS; }
virtual void setUseTLS(bool);
KMail::SieveConfig sieveConfig() const { return mSieveConfig; }
void setSieveConfig( const KMail::SieveConfig & sieve ) {
mSieveConfig = sieve;
}
/**
* Inherited methods.
*/
@ -236,6 +242,7 @@ protected:
int mCountUnread, mCountLastUnread;
int mCountRemainChecks;
QPtrList<QGuardedPtr<KMFolder> > mOpenFolders;
KMail::SieveConfig mSieveConfig;
protected slots:
/**

@ -15,6 +15,7 @@
#include <qvaluelist.h>
#include <qtextcodec.h>
#include <qheader.h>
#include <qguardedptr.h>
#include <kopenwith.h>
@ -66,6 +67,8 @@
#include "kmmainwidget.h"
#include "kmmainwin.h"
#include "kmsystemtray.h"
#include "vacation.h"
using KMail::Vacation;
#include <assert.h>
#include <kstatusbar.h>
@ -1299,6 +1302,26 @@ void KMMainWidget::slotApplyFilters()
mHeaders->applyFiltersOnMsg();
}
//-----------------------------------------------------------------------------
void KMMainWidget::slotEditVacation()
{
if ( mVacation )
return;
mVacation = new Vacation( this );
if ( mVacation->isUsable() ) {
connect( mVacation, SIGNAL(result(bool)), mVacation, SLOT(deleteLater()) );
} else {
QString msg = i18n("KMail's Out of Office Reply functionality relies on "
"server-side filtering. You have not yet configured an "
"IMAP server for this.\n"
"You can do this on the \"Filtering\" tab of the IMAP "
"account configuration.");
KMessageBox::sorry( this, msg, i18n("No Server-Side Filtering Configured") );
delete mVacation; // QGuardedPtr sets itself to 0!
}
}
//-----------------------------------------------------------------------------
void KMMainWidget::slotCopyMsg()
@ -1909,6 +1932,10 @@ void KMMainWidget::setupActions()
(void) new KAction( i18n("&Import..."), "fileopen", 0, this,
SLOT(slotImport()), mActionCollection, "import" );
(void) new KAction( i18n("Edit \"Out of Office\" Replies..."),
"configure", 0, this, SLOT(slotEditVacation()),
mActionCollection, "tools_edit_vacation" );
//----- Edit Menu
trashAction = new KAction( KGuiItem( i18n("&Move to Trash"), "edittrash",
i18n("Move message to trashcan") ),

@ -34,12 +34,18 @@ class KRadioAction;
class KProgressDialog;
template <typename T> class QValueList;
template <typename T, typename S> class QMap;
template <typename T> class QGuardedPtr;
namespace KIO
{
class Job;
}
namespace KMail {
class Vacation;
}
typedef QMap<int,KMFolder*> KMMenuToFolder;
@ -177,6 +183,7 @@ protected slots:
void slotCopyMsgToFolder( KMFolder *dest);
void slotCopyMsg();
void slotResendMsg();
void slotEditVacation();
void slotApplyFilters();
void slotExpandThread();
void slotExpandAllThreads();
@ -321,6 +328,7 @@ protected:
int mCountJobs, mCountMsgs;
QPtrList<KMMessage> mSelectedMsgs;
QGuardedPtr<KMail::Vacation> mVacation;
KActionCollection *mActionCollection;
QVBoxLayout *mTopLayout;
bool mDestructed;

@ -1,5 +1,5 @@
<!DOCTYPE kpartgui>
<kpartgui version="52" name="kmmainwin" >
<kpartgui version="53" name="kmmainwin" >
<MenuBar>
<Menu noMerge="1" name="file" >
<text>&amp;File</text>
@ -106,6 +106,8 @@
<Action name="addressbook"/>
<Action name="import"/>
<Separator/>
<Action name="tools_edit_vacation"/>
<Separator/>
<Action name="create_filter"/>
</Menu>
<Menu noMerge="1" name="settings">

Loading…
Cancel
Save