kmail

folderjob.cpp

00001 /*  -*- mode: C++; c-file-style: "gnu" -*-
00002  *
00003  *  This file is part of KMail, the KDE mail client.
00004  *  Copyright (c) 2003 Zack Rusin <zack@kde.org>
00005  *
00006  *  KMail is free software; you can redistribute it and/or modify it
00007  *  under the terms of the GNU General Public License, version 2, as
00008  *  published by the Free Software Foundation.
00009  *
00010  *  KMail is distributed in the hope that it will be useful, but
00011  *  WITHOUT ANY WARRANTY; without even the implied warranty of
00012  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  *  General Public License for more details.
00014  *
00015  *  You should have received a copy of the GNU General Public License
00016  *  along with this program; if not, write to the Free Software
00017  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
00018  *
00019  *  In addition, as a special exception, the copyright holders give
00020  *  permission to link the code of this program with any edition of
00021  *  the Qt library by Trolltech AS, Norway (or with modified versions
00022  *  of Qt that use the same license as Qt), and distribute linked
00023  *  combinations including the two.  You must obey the GNU General
00024  *  Public License in all respects for all of the code used other than
00025  *  Qt.  If you modify this file, you may extend this exception to
00026  *  your version of the file, but you are not obligated to do so.  If
00027  *  you do not wish to do so, delete this exception statement from
00028  *  your version.
00029  */
00030 #ifdef HAVE_CONFIG_H
00031 #include <config.h>
00032 #endif
00033 
00034 #include "folderjob.h"
00035 
00036 #include "kmfolder.h"
00037 #include "globalsettings.h"
00038 #include "folderstorage.h"
00039 
00040 #include <kdebug.h>
00041 
00042 namespace KMail {
00043 
00044 //----------------------------------------------------------------------------
00045 FolderJob::FolderJob( KMMessage *msg, JobType jt, KMFolder* folder,
00046                           QString partSpecifier )
00047   : mType( jt ), mSrcFolder( 0 ), mDestFolder( folder ), mPartSpecifier( partSpecifier ),
00048     mErrorCode( 0 ),
00049     mPassiveDestructor( false ), mStarted( false )
00050 {
00051   if ( msg ) {
00052     mMsgList.append(msg);
00053     mSets = msg->headerField("X-UID");
00054   }
00055   init();
00056 }
00057 
00058 //----------------------------------------------------------------------------
00059 FolderJob::FolderJob( const QPtrList<KMMessage>& msgList, const QString& sets,
00060                           JobType jt, KMFolder *folder )
00061   : mMsgList( msgList ),mType( jt ),
00062     mSets( sets ), mSrcFolder( 0 ), mDestFolder( folder ),
00063     mErrorCode( 0 ),
00064     mPassiveDestructor( false ), mStarted( false )
00065 {
00066   init();
00067 }
00068 
00069 //----------------------------------------------------------------------------
00070 FolderJob::FolderJob( JobType jt )
00071   : mType( jt ),
00072     mErrorCode( 0 ),
00073     mPassiveDestructor( false ), mStarted( false )
00074 {
00075   init();
00076 }
00077 
00078 //----------------------------------------------------------------------------
00079 void FolderJob::init()
00080 {
00081   switch ( mType ) {
00082   case tListMessages:
00083   case tGetFolder:
00084   case tGetMessage:
00085   case tCheckUidValidity:
00086     mCancellable = true;
00087     break;
00088   default:
00089     mCancellable = false;
00090   }
00091 }
00092 
00093 //----------------------------------------------------------------------------
00094 FolderJob::~FolderJob()
00095 {
00096   if( !mPassiveDestructor ) {
00097     emit result( this );
00098     emit finished();
00099   }
00100 }
00101 
00102 //----------------------------------------------------------------------------
00103 void
00104 FolderJob::start()
00105 {
00106   if (!mStarted)
00107   {
00108     mStarted = true;
00109     execute();
00110   }
00111 }
00112 
00113 //----------------------------------------------------------------------------
00114 void FolderJob::kill()
00115 {
00116   delete this;
00117 }
00118 
00119 //----------------------------------------------------------------------------
00120 QPtrList<KMMessage>
00121 FolderJob::msgList() const
00122 {
00123   return mMsgList;
00124 }
00125 
00126 }
00127 
00128 #include "folderjob.moc"
KDE Home | KDE Accessibility Home | Description of Access Keys