You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

117 lines
3.3 KiB

/* -*- mode: C++ -*-
* KMail Account Manager
*
* Author: Stefan Taferner <taferner@alpin.or.at>
*/
#ifndef kmacctmgr_h
#define kmacctmgr_h
#include <qobject.h>
#include "kmaccount.h"
class QString;
class QStringList;
class KMAcctMgr: public QObject
{
Q_OBJECT
friend class KMAccount;
public:
/** Initialize Account Manager and load accounts with reload() if the
base path is given */
KMAcctMgr();
virtual ~KMAcctMgr();
/** Completely reload accounts from config. */
virtual void readConfig(void);
/** Write accounts to config. */
virtual void writeConfig(bool withSync=TRUE);
/** Create a new account of given type with given name. Currently
the types "local" for local mail folders and "pop" are supported. */
virtual KMAccount* create(const QString& type, const QString& name, uint id = 0);
/** Adds an account to the list of accounts */
virtual void add(KMAccount *account);
/** Find account by name. Returns 0 if account does not exist.
Search is done case sensitive. */
virtual KMAccount* findByName(const QString& name);
/** Find account by id. Returns 0 if account does not exist.
*/
virtual KMAccount* find(const uint id);
/** Physically remove account. Also deletes the given account object !
Returns FALSE and does nothing if the account cannot be removed. */
virtual bool remove(KMAccount*);
/** First account of the list */
virtual KMAccount* first(void);
/** Next account of the list */
virtual KMAccount* next(void);
/** Processes all accounts looking for new mail */
virtual void checkMail(bool _interactive = true);
/** Delete all IMAP folders and resync them */
void invalidateIMAPFolders();
QStringList getAccounts(bool noImap = false);
/** Create a new unique ID */
uint createId();
/// Called on exit (KMMainWin::queryExit)
void cancelMailCheck();
public slots:
virtual void singleCheckMail(KMAccount *, bool _interactive = true);
virtual void singleInvalidateIMAPFolders(KMAccount *);
virtual void intCheckMail(int, bool _interactive = true);
virtual void processNextCheck(bool _newMail);
/** this slot increases the count of new mails to show a total number
after checking in multiple accounts. */
virtual void addToTotalNewMailCount( const QMap<QString, int> & newInFolder );
signals:
/**
* Emitted if new mail has been collected.
* @param newMail true if there was new mail
* @param interactive true if the mail check was initiated by the user
* @param newInFolder number of new messages for each folder
**/
void checkedMail( bool newMail, bool interactive,
const QMap<QString, int> & newInFolder );
/** emitted when an account is removed */
void accountRemoved( KMAccount* account );
/** emitted when an account is added */
void accountAdded( KMAccount* account );
private:
KMAcctList mAcctList;
KMAcctList mAcctChecking;
KMAcctList mAcctTodo;
bool newMailArrived;
bool interactive;
int mTotalNewMailsArrived;
// for detailed (per folder) new mail notification
QMap<QString, int> mTotalNewInFolder;
// for restricting number of concurrent connections to the same server
QMap<QString, int> mServerConnections;
QString hostForAccount(const KMAccount *acct) const;
// if a summary should be displayed
bool mDisplaySummary;
};
#endif /*kmacctmgr_h*/