Added new ServiceHelper::serviceSetupContext()
[accounts-sso:libaccounts-ui.git] / lib / AccountsUI / service-helper.h
1 /*
2  * This file is part of accounts-ui
3  *
4  * Copyright (C) 2009-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_SERVICE_H
24 #define ACCOUNTSUI_SERVICE_H
25
26 //AccountsUI
27 #include <AccountsUI/AbstractServiceSetupContext>
28
29 //accounts-qt
30 #include <Accounts/Service>
31
32 namespace AccountsUI {
33
34 class ServiceHelperPrivate;
35
36 /*!
37  * @class ServiceHelper
38  * @brief Helper class to handle service specific data and UIs
39  *
40  * @details The ServiceHelper class offers some methods to retrieve
41  * service-specific data and takes care of loading the account service
42  * plugins when necessary.
43  */
44 class ACCOUNTSUI_EXPORT ServiceHelper : public QObject
45 {
46     Q_OBJECT
47
48 public:
49     /*!
50      * Class constructor.
51      */
52     explicit ServiceHelper(Accounts::Service *service, QObject *parent = 0);
53     virtual ~ServiceHelper();
54
55     /*!
56      * Gets the Accounts::Service that was used to construct this object.
57      */
58     Accounts::Service *service() const;
59
60     /*!
61      * Gets the QDomDocument installed by the service.
62      */
63     const QDomDocument domDocument() const;
64
65     /*!
66      * Gets an icon for the service. If the icon is dynamic, calling this
67      * method will cause the loading of the service plugin.
68      */
69     MWidget *iconWidget(QGraphicsItem *parent = 0);
70
71     /*!
72      * Gets the display name of the service. This might cause the loading of the
73      * service plugin.
74      */
75     QString prettyName();
76
77     /*!
78      * Gets the service description. This might cause the loading of the
79      * service plugin.
80      */
81     QString description();
82
83     /*!
84      * Gets the service provider name.
85      */
86     QString providerName();
87
88     /*!
89      * Gets the service type
90      */
91     QString serviceType();
92
93     /*!
94      * Gets the service name
95      */
96     QString serviceName();
97
98     /*!
99      * Gets the context object which handles account service
100      * creation/settings/deletion.
101      * Calling this method will cause the loading of the service plugin.
102      *
103      * @param context The account setup context.
104      * @param parent The parent object for the context.
105      */
106     AbstractServiceSetupContext *serviceSetupContext(
107         AbstractAccountSetupContext *context,
108         QObject *parent = 0);
109
110     /*!
111      * Gets the context object which handles account service
112      * creation/settings/deletion.
113      * Calling this method will cause the loading of the service plugin.
114      *
115      * @param account the account which is used
116      * @param parent The parent object for the context.
117      */
118     AbstractServiceSetupContext *serviceSetupContext(
119         Accounts::Account *account,
120         QObject *parent = 0);
121
122 private:
123     ServiceHelperPrivate *d_ptr;
124     Q_DECLARE_PRIVATE(ServiceHelper)
125 };
126
127 } // namespace
128
129 #endif // ACCOUNTSUI_SERVICE_H