/* * kmacctimap.h * * Copyright (c) 2000-2002 Michael Haeckel * * This file is based on popaccount.h by Don Sanders * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef KMAcctImap_h #define KMAcctImap_h #include "imapaccountbase.h" #include class KMFolderImap; class KMFolderTreeItem; namespace KMail { class ImapJob; class ActionScheduler; } namespace TDEIO { class Job; } class FolderStorage; //----------------------------------------------------------------------------- class KMAcctImap: public KMail::ImapAccountBase { Q_OBJECT friend class KMail::ImapJob; public: virtual ~KMAcctImap(); /** A weak assignment operator */ virtual void pseudoAssign( const KMAccount * a ); /** * Inherited methods. */ virtual TQString type(void) const; virtual void processNewMail(bool); ConnectionState makeConnection(); /** * Kill all jobs related the the specified folder/msg */ virtual void ignoreJobsForMessage( KMMessage * msg ); virtual void ignoreJobsForFolder( KMFolder * folder ); virtual void removeSlaveJobsForFolder( KMFolder * folder ); /** * Kill the slave if any jobs are active */ virtual void killAllJobs( bool disconnectSlave=false ); /** * Set the top level pseudo folder */ virtual void setImapFolder(KMFolderImap *); /** * Starts the folderlisting for the root folder */ virtual void listDirectory(); /** * Read config file entries. This method is called by the account * manager when a new account is created. The config group is * already properly set by the caller. */ virtual void readConfig(TDEConfig& config); /** * Returns the root folder of this account */ virtual FolderStorage* rootFolder() const; /** * Queues a message for automatic filtering */ void execFilters(TQ_UINT32 serNum); public slots: /** * updates the new-mail-check folderlist */ void slotFiltered(TQ_UINT32 serNum); void slotUpdateFolderList(); protected: friend class ::AccountManager; KMAcctImap(AccountManager* owner, const TQString& accountName, uint id); /** * Handle an error coming from a TDEIO job * See ImapAccountBase::handleJobError for details. */ virtual bool handleError( int error, const TQString &errorMsg, TDEIO::Job* job, const TQString& context, bool abortSync = false ); virtual void cancelMailCheck(); TQPtrList mJobList; TQGuardedPtr mFolder; protected slots: /** new-mail-notification for the current folder (is called via folderComplete) */ void postProcessNewMail(KMFolderImap*, bool); /** * new-mail-notification for not-selected folders (is called via * numUnreadMsgsChanged) */ void postProcessNewMail( KMFolder * f ); /** * hooked up to the progress item signaling cancellation. * Cleanup and reset state. */ void slotMailCheckCanceled(); /** * called to reset the connection error status */ void slotResetConnectionError(); /** * Slots for automatic filtering */ void slotFolderSelected( KMFolderImap*, bool ); int slotFilterMsg( KMMessage* ); private: int mCountRemainChecks; /** used to reset connection errors */ TQTimer mErrorTimer; TQValueList mFilterSerNums; TQDict mFilterSerNumsToSave; KMail::ActionScheduler *mScheduler; }; #endif /*KMAcctImap_h*/