Success page added
[accounts-sso:libaccounts-ui.git] / lib / AccountsUI / provider-plugin-proxy.h
1 /*
2  * This file is part of accounts-ui
3  *
4  * Copyright (C) 2010 Nokia Corporation.
5  *
6  * Contact: Alberto Mardegan <alberto.mardegan@nokia.com>
7  *
8  * This library is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public License
10  * version 2.1 as published by the Free Software Foundation.
11  *
12  * This library is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20  * 02110-1301 USA
21  */
22
23 #ifndef ACCOUNTSUI_PROVIDER_PLUGIN_PROXY_H
24 #define ACCOUNTSUI_PROVIDER_PLUGIN_PROXY_H
25
26 //libAccountsUI
27 #include <AccountsUI/common.h>
28
29 //Accounts
30 #include <Accounts/Account>
31 #include <Accounts/Provider>
32
33 //Qt
34 #include <QProcess>
35
36 namespace AccountsUI {
37
38 class ProviderPluginProxyPrivate;
39
40 /*!
41  * @class ProviderPluginProxy
42  * @headerfile AccountsUI/provider-plugin-proxy.h \
43  * AccountsUI/ProviderPluginProxy
44  * @brief Client class for accounts UI plugins.
45  *
46  * @details The ProviderPluginProxy class can be used to run the account
47  * plugins. Plugins can be started with the createAccount() and editAccount()
48  * methods, respectively to enter the account creation and editing modes.
49  * Plugin lifetime can be monitored with the created(), edited(), cancelled()
50  * signals, or inspected with the isPluginRunning() method.
51  */
52 class ACCOUNTSUI_EXPORT ProviderPluginProxy : public QObject
53 {
54     Q_OBJECT
55
56 public:
57     /*!
58      * Constructor
59      */
60     ProviderPluginProxy(QObject *parent = 0);
61     virtual ~ProviderPluginProxy();
62
63     /*!
64      * Runs the account plugin to create an account.
65      *
66      * @param provider The Accounts::Provider for the account to be created.
67      * @param serviceType The main service type the user is interested in, or
68      * empty string.
69      */
70     void createAccount(Accounts::Provider *provider,
71                        const QString &serviceType);
72     /*!
73      * Runs the account plugin to edit an account.
74      *
75      * @param account The Accounts::Account to be edited.
76      * @param serviceType The main service type the user is interested in, or
77      * empty string.
78      */
79     void editAccount(Accounts::Account *account, const QString &serviceType);
80
81     /*!
82      * Checks whether a plugin is running.
83      *
84      * @return Returns true if there is plugin process running.
85      */
86     bool isPluginRunning();
87
88     /*!
89      * @return the name of the currently running plugin, or empty string if no
90      * plugin is running.
91      */
92     QString pluginName();
93
94 public Q_SLOTS:
95     /*!
96      * Stops the plugin process.
97      */
98     void stopProcess();
99
100 Q_SIGNALS:
101     void created(int accountId, bool quitAccountsUI);
102     void edited();
103     void failed();
104
105 private:
106     ProviderPluginProxyPrivate *d_ptr;
107     Q_DECLARE_PRIVATE(ProviderPluginProxy)
108 };
109
110 } // namespace
111
112 #endif // ACCOUNTSUI_PROVIDER_PLUGIN_PROXY_H
113