[prev in list] [next in list] [prev in thread] [next in thread]
List: kmail-devel
Subject: [KROUPWARE MERGE] Sieve vacation support
From: Marc Mutz <mutz () kde ! org>
Date: 2002-12-25 15:10:49
[Download RAW message or body]
[Attachment #2 (multipart/mixed)]
Hi!
[ If you want, I can break it up into smaller pieces. ]
This patch adds vacation editing support through Sieve. It's quite
Kroupware-centric, but shouls work with any managesieve-capable IMAP
server (tested with cyrus).
This patch depends on the new files sieve{config,job}.{h,cpp} and
vacation{,dialog}.{h,cpp}, already in HEAD. Plus, you need a KIO::Slave
for the managesieve protocol. You'll find that in
kdenetwork/kioslaves/sieve.
The code should work with every KIO-slaved-enabled protocol, so you can
test the code with file: URLs locally, if you like.
Marc
--
If privacy is outlawed, only outlaws will have privacy.
-- Phil Zimmermann
["sieve-vacation.diff" (text/x-diff)]
Index: Makefile.am
===================================================================
RCS file: /home/kde/kdenetwork/kmail/Makefile.am,v
retrieving revision 1.166
retrieving revision 1.167
diff -u -3 -p -r1.166 -r1.167
--- Makefile.am 13 Nov 2002 14:47:31 -0000 1.166
+++ Makefile.am 27 Nov 2002 21:27:08 -0000 1.167
@@ -37,6 +37,7 @@ kmail_SOURCES = kmmessage.cpp kmmainwin.
kmkernel.cpp kmailIface.skel kmailIface.stub 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 adddirectoryservicedialogimpl.cpp kmmimeparttree.cpp \
Index: accountdialog.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kmail/accountdialog.cpp,v
retrieving revision 1.99
retrieving revision 1.100
diff -u -3 -p -r1.99 -r1.100
--- accountdialog.cpp 11 Oct 2002 22:36:18 -0000 1.99
+++ accountdialog.cpp 27 Nov 2002 21:27:09 -0000 1.100
@@ -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 QStri
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" )
{
Index: accountdialog.h
===================================================================
RCS file: /home/kde/kdenetwork/kmail/accountdialog.h,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -p -r1.32 -r1.33
--- accountdialog.h 8 Jul 2002 11:13:52 -0000 1.32
+++ accountdialog.h 27 Nov 2002 21:27:09 -0000 1.33
@@ -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;
};
Index: kmacctimap.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kmail/kmacctimap.cpp,v
retrieving revision 1.111
retrieving revision 1.112
diff -u -3 -p -r1.111 -r1.112
--- kmacctimap.cpp 7 Nov 2002 15:33:56 -0000 1.111
+++ kmacctimap.cpp 27 Nov 2002 21:27:09 -0000 1.112
@@ -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*
setPasswd(acct->passwd(), acct->storePasswd());
setUseSSL(acct->useSSL());
setUseTLS(acct->useTLS());
+ setSieveConfig(acct->sieveConfig());
}
//-----------------------------------------------------------------------------
@@ -162,6 +164,7 @@ void KMAcctImap::readConfig(KConfig& con
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& co
config.writeEntry("subscribed-folders", mOnlySubscribedFolders);
config.writeEntry("use-ssl", mUseSSL);
config.writeEntry("use-tls", mUseTLS);
+
+ mSieveConfig.writeConfig( config );
}
Index: kmacctimap.h
===================================================================
RCS file: /home/kde/kdenetwork/kmail/kmacctimap.h,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -3 -p -r1.49 -r1.50
--- kmacctimap.h 30 Oct 2002 22:38:57 -0000 1.49
+++ kmacctimap.h 27 Nov 2002 21:27:09 -0000 1.50
@@ -23,6 +23,7 @@
#define KMAcctImap_h
#include "kmaccount.h"
+#include "sieveconfig.h"
#include <qdialog.h>
#include <kio/global.h>
#include <kio/job.h>
@@ -125,6 +126,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.
*/
@@ -239,6 +245,7 @@ protected:
int mCountUnread, mCountLastUnread;
int mCountRemainChecks;
QPtrList<QGuardedPtr<KMFolder> > mOpenFolders;
+ KMail::SieveConfig mSieveConfig;
protected slots:
/**
Index: kmmainwin.cpp
===================================================================
RCS file: /home/kde/kdenetwork/kmail/kmmainwin.cpp,v
retrieving revision 1.541
retrieving revision 1.542
diff -u -3 -p -r1.541 -r1.542
--- kmmainwin.cpp 13 Nov 2002 00:16:05 -0000 1.541
+++ kmmainwin.cpp 27 Nov 2002 21:27:09 -0000 1.542
@@ -15,6 +15,7 @@
#include <qvaluelist.h>
#include <qtextcodec.h>
#include <qheader.h>
+#include <qguardedptr.h>
#include <kopenwith.h>
@@ -62,6 +63,8 @@
#include "kmacctfolder.h"
#include "kmmimeparttree.h"
#include "kmundostack.h"
+#include "vacation.h"
+using KMail::Vacation;
#include <assert.h>
#include <kstatusbar.h>
@@ -1417,6 +1420,24 @@ void KMMainWin::slotApplyFilters()
mHeaders->applyFiltersOnMsg();
}
+void KMMainWin::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 KMMainWin::slotCopyMsg()
@@ -2230,6 +2251,10 @@ void KMMainWin::setupMenuBar()
(void) new KAction( i18n("&Import..."), "fileopen", 0, this,
SLOT(slotImport()), actionCollection(), "import" );
+
+ (void) new KAction( i18n("Edit \"Out of Office\" Replies..."),
+ "configure", 0, this, SLOT(slotEditVacation()),
+ actionCollection(), "tools_edit_vacation" );
//----- Edit Menu
KStdAction::undo( this, SLOT(slotUndo()), actionCollection(), "edit_undo");
Index: kmmainwin.h
===================================================================
RCS file: /home/kde/kdenetwork/kmail/kmmainwin.h,v
retrieving revision 1.148
retrieving revision 1.149
diff -u -3 -p -r1.148 -r1.149
--- kmmainwin.h 29 Oct 2002 08:35:06 -0000 1.148
+++ kmmainwin.h 27 Nov 2002 21:27:09 -0000 1.149
@@ -33,10 +33,14 @@ class KRadioAction;
class KProgressDialog;
template <typename T> class QValueList;
template <typename T, typename S> class QMap;
+template <typename T> class QGuardedPtr;
-namespace KIO
-{
+namespace KIO {
class Job;
+};
+
+namespace KMail {
+ class Vacation;
}
#define KMMainWinInherited KMTopLevelWidget
@@ -200,6 +204,7 @@ protected slots:
void slotCopyMsgToFolder( KMFolder *dest);
void slotCopyMsg();
void slotResendMsg();
+ void slotEditVacation();
void slotApplyFilters();
void slotSubjectFilter();
void slotMailingListFilter();
@@ -380,6 +385,8 @@ protected:
int mCountJobs, mCountMsgs;
QPtrList<KMMessage> mSelectedMsgs;
+
+ QGuardedPtr<KMail::Vacation> mVacation;
signals:
void messagesTransfered(bool);
Index: kmmainwin.rc
===================================================================
RCS file: /home/kde/kdenetwork/kmail/kmmainwin.rc,v
retrieving revision 1.45
retrieving revision 1.46
diff -u -3 -p -r1.45 -r1.46
--- kmmainwin.rc 12 Oct 2002 10:12:44 -0000 1.45
+++ kmmainwin.rc 27 Nov 2002 21:27:09 -0000 1.46
@@ -1,5 +1,5 @@
<!DOCTYPE kpartgui>
-<kpartgui version="44" name="kmmainwin" >
+<kpartgui version="45" name="kmmainwin" >
<MenuBar>
<Menu noMerge="1" name="file" >
<text>&File</text>
@@ -101,6 +101,8 @@
<Separator/>
<Action name="addressbook"/>
<Action name="import"/>
+ <Separator/>
+ <Action name="tools_edit_vacation"/>
<Separator/>
<Action name="create_filter"/>
</Menu>
[Attachment #6 (application/pgp-signature)]
_______________________________________________
KMail Developers mailing list
kmail@mail.kde.org
http://mail.kde.org/mailman/listinfo/kmail
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic