summaryrefslogtreecommitdiffstats
path: root/kmail/accountmanager.h
diff options
context:
space:
mode:
Diffstat (limited to 'kmail/accountmanager.h')
-rw-r--r--kmail/accountmanager.h141
1 files changed, 141 insertions, 0 deletions
diff --git a/kmail/accountmanager.h b/kmail/accountmanager.h
new file mode 100644
index 000000000..fda0591f7
--- /dev/null
+++ b/kmail/accountmanager.h
@@ -0,0 +1,141 @@
+/* -*- mode: C++ -*-
+ * kmail: KDE mail client
+ * Copyright (c) 1996-1998 Stefan Taferner <taferner@kde.org>
+ *
+ * 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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 accountmanager_h
+#define accountmanager_h
+
+#include <qobject.h>
+#include "kmaccount.h"
+#include <kdepimmacros.h>
+
+class QString;
+class QStringList;
+
+namespace KMail {
+/**
+ * The account manager is responsible for creating accounts of various types
+ * via the factory method create() and for keeping track of them.
+ */
+class KDE_EXPORT AccountManager: public QObject
+{
+ Q_OBJECT
+ friend class ::KMAccount;
+
+public:
+ /** Initializes the account manager. readConfig() needs to be called in
+ * order to fill it with persisted account information from the config file. */
+ AccountManager();
+ ~AccountManager();
+
+ /** Completely reload accounts from config. */
+ void readConfig(void);
+
+ /** Write accounts to config. */
+ 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. */
+ KMAccount* create( const QString& type,
+ const QString& name = QString::null,
+ uint id = 0);
+
+ /** Adds an account to the list of accounts */
+ void add( KMAccount *account );
+
+ /** Find account by name. Returns 0 if account does not exist.
+ Search is done case sensitive. */
+ KMAccount* findByName( const QString& name ) const;
+
+ /** Find account by id. Returns 0 if account does not exist.
+ */
+ KMAccount* find( const uint id ) const;
+
+ /** Physically remove account. Also deletes the given account object !
+ Returns FALSE and does nothing if the account cannot be removed. */
+ bool remove( KMAccount* );
+
+ /** First account of the list */
+ const KMAccount* first() const { return first(); }
+ KMAccount* first();
+
+ /** Next account of the list */
+ const KMAccount* next() const { return next(); }
+ KMAccount* next();
+
+ /** Processes all accounts looking for new mail */
+ void checkMail( bool interactive = true );
+
+ /** Delete all IMAP folders and resync them */
+ void invalidateIMAPFolders();
+
+ QStringList getAccounts() const;
+
+ /// Called on exit (KMMainWin::queryExit)
+ void cancelMailCheck();
+
+ /** Read passwords of all accounts from the wallet */
+ void readPasswords();
+
+public slots:
+ void singleCheckMail( KMAccount *, bool interactive = true );
+ void singleInvalidateIMAPFolders( KMAccount * );
+
+ void intCheckMail( int, bool interactive = true );
+ void processNextCheck( bool newMail );
+
+ /** this slot increases the count of new mails to show a total number
+ after checking in multiple accounts. */
+ 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:
+ /** Create a new unique ID */
+ uint createId();
+
+ AccountList mAcctList;
+ AccountList::Iterator mPtrListInterfaceProxyIterator;
+ AccountList mAcctChecking;
+ AccountList mAcctTodo;
+ bool mNewMailArrived;
+ bool mInteractive;
+ int mTotalNewMailsArrived;
+
+ // for detailed (per folder) new mail notification
+ QMap<QString, int> mTotalNewInFolder;
+
+ // if a summary should be displayed
+ bool mDisplaySummary;
+};
+
+} // namespace KMail
+#endif /*accountmanager_h*/