TwitterMicroBlog plugin made operational.
[choqok:choqok-obsolete.git] / libchoqok / accountmanager.h
1 /*
2     This file is part of Choqok, the KDE micro-blogging client
3
4     Copyright (C) 2008-2009 Mehrdad Momeny <mehrdad.momeny@gmail.com>
5
6     This program is free software; you can redistribute it and/or
7     modify it under the terms of the GNU General Public License as
8     published by the Free Software Foundation; either version 2 of
9     the License or (at your option) version 3 or any later version
10     accepted by the membership of KDE e.V. (or its successor approved
11     by the membership of KDE e.V.), which shall act as a proxy
12     defined in Section 14 of version 3 of the license.
13
14
15     This program is distributed in the hope that it will be useful,
16     but WITHOUT ANY WARRANTY; without even the implied warranty of
17     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18     GNU General Public License for more details.
19
20     You should have received a copy of the GNU General Public License
21     along with this program; if not, see http://www.gnu.org/licenses/
22
23 */
24 #ifndef ACCOUNTMANAGER_H
25 #define ACCOUNTMANAGER_H
26
27 #include <QObject>
28 #include "account.h"
29
30 namespace Choqok
31 {
32 /**
33 Account manager class
34
35     @author Mehrdad Momeny <mehrdad.momeny@gmail.com>
36 */
37 class CHOQOK_EXPORT AccountManager : public QObject
38 {
39     Q_OBJECT
40 public:
41     ~AccountManager();
42     void loadAllAccounts();
43
44     /**
45      * \brief Retrieve the instance of AccountManager.
46      *
47      * The account manager is a singleton class of which only a single
48      * instance will exist. If no manager exists yet this function will
49      * create one for you.
50      *
51      * \return the instance of the AccountManager
52      */
53     static AccountManager* self();
54
55     /**
56      * \brief Retrieve the list of accounts
57      * \return a list of all the accounts
58      */
59     const QList<Account *> & accounts() const;
60
61     /**
62      * \brief Return the account asked
63      * \param alias is the alias of account
64      * \return the Account object found
65      */
66     Account * findAccount( const QString &alias );
67
68     /**
69      * @brief Add the account.
70      *
71      * This adds the account to the manager's account list.
72      * It will check no accounts already exist with the same Alias, if any, the account is deleted. and not added
73      *
74      * @return @p account, or 0L if the account was deleted because alias collision
75      */
76     Account * registerAccount( Account * account );
77
78     /**
79      * \brief Delete the account and clean the config data
80      *
81      * This is praticaly called by the account config page when you remove the account.
82      */
83     bool removeAccount( const QString &alias );
84
85     QString lastError() const;
86     QString generatePostBackupFileName( const QString &alias, QString type );
87 signals:
88     void accountAdded( Choqok::Account *account );
89     void accountRemoved( const QString &alias );
90     void allAccountsLoaded();
91
92 private:
93     AccountManager();
94     class Private;
95     Private * const d;
96     static AccountManager *mSelf;
97 };
98 }
99 #endif