kmail

expirejob.h

Go to the documentation of this file.
00001 /* -*- mode: C++ -*-
00002  * Copyright (c) 2004 David Faure <faure@kde.org>
00003  *
00004  *  This program is free software; you can redistribute it and/or modify
00005  *  it under the terms of the GNU General Public License as published by
00006  *  the Free Software Foundation; version 2 of the License
00007  *
00008  *  This program is distributed in the hope that it will be useful,
00009  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00010  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00011  *  GNU General Public License for more details.
00012  *
00013  *  You should have received a copy of the GNU General Public License
00014  *  along with this program; if not, write to the Free Software
00015  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
00016  *
00017  *  In addition, as a special exception, the copyright holders give
00018  *  permission to link the code of this program with any edition of
00019  *  the Qt library by Trolltech AS, Norway (or with modified versions
00020  *  of Qt that use the same license as Qt), and distribute linked
00021  *  combinations including the two.  You must obey the GNU General
00022  *  Public License in all respects for all of the code used other than
00023  *  Qt.  If you modify this file, you may extend this exception to
00024  *  your version of the file, but you are not obligated to do so.  If
00025  *  you do not wish to do so, delete this exception statement from
00026  *  your version.
00027  */
00028 #ifndef EXPIREJOB_H
00029 #define EXPIREJOB_H
00030 
00031 #include "jobscheduler.h"
00032 #include "kmcommands.h"
00033 
00034 namespace KMail {
00035 
00036 class ExpireJob : public ScheduledJob
00037 {
00038   Q_OBJECT
00039 public:
00040   ExpireJob( KMFolder* folder, bool immediate );
00041   virtual ~ExpireJob();
00042 
00043   virtual void execute();
00044   virtual void kill();
00045 
00046 private slots:
00047   void slotDoWork();
00048   void slotMessagesMoved( KMCommand *command );
00049 
00050 private:
00051   void done();
00052 
00053 private:
00054   QTimer mTimer;
00055   QPtrList<KMMsgBase> mRemovedMsgs;
00056   int mCurrentIndex;
00057   int mMaxUnreadTime;
00058   int mMaxReadTime;
00059   bool mFolderOpen;
00060   KMFolder *mMoveToFolder;
00061 };
00062 
00064 class ScheduledExpireTask : public ScheduledTask
00065 {
00066 public:
00069   ScheduledExpireTask( KMFolder* folder, bool immediate )
00070     : ScheduledTask( folder, immediate ) {}
00071   virtual ~ScheduledExpireTask() {}
00072   virtual ScheduledJob* run() {
00073     return folder() ? new ExpireJob( folder(), isImmediate() ) : 0;
00074   }
00075   virtual int taskTypeId() const { return 1; }
00076 };
00077 
00078 } // namespace
00079 
00080 #endif /* EXPIREJOB_H */
00081