Merge branch 'master' into harmattan
[accounts-sso:libaccounts-ui.git] / lib / AccountsUI / service-settings-widget.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_SERVICESETTINGSWIDGET_H
24 #define ACCOUNTSUI_SERVICESETTINGSWIDGET_H
25
26 //M
27 #include <MContainer>
28 #include <MWidget>
29 #include <MBasicListItem>
30
31 namespace AccountsUI {
32
33     enum SettingsType {
34         ShowMandatory = 0,
35         ShowAll,
36         ShowOnlySettings,
37         ShowButtonAndSettings,
38     };
39
40 class ServiceSettingsWidgetPrivate;
41 class AbstractServiceSetupContext;
42 /*!
43  * @class ServiceSettingsWidget is the class to provide
44  * service settings.
45  *  It gives one switch to enable/disable settings and below are
46  * all the settings.
47  */
48 class ServiceSettingsWidget : public MWidget
49 {
50 Q_OBJECT;
51 public:
52     /*!
53      * Constuctor having following param
54      * @param context is the Service context for which it has to create settings widget
55      * @param parent is the parent widget
56      * @param showOnlySettings is bool which will show only settings and not the toggle switch button when true
57      * @param showAllSettings is bool which displays all settings when true and only mandatory settings when false
58      */
59     enum VisibleSettings {
60         MandatorySettings = 1 << 0,
61         NonMandatorySettings = 1 << 1,
62         EnableButton = 1 << 2
63     };
64
65     ServiceSettingsWidget(AccountsUI::AbstractServiceSetupContext *context,
66                           QGraphicsItem *parent = 0,
67                           int settingsConf = MandatorySettings | EnableButton,
68                           bool enabled = true
69                           );
70     ~ServiceSettingsWidget();
71     void setServiceButtonEnable(bool enable);
72     void setWidget(MWidget *widget);
73
74     Q_SIGNALS:
75         void serviceButtonEnabled(const QString &serviceType);
76         void serviceEnabled(const QString &serviceName, bool enabled);
77
78     private Q_SLOTS:
79         void enabled(bool enabled);
80         void openSettingsPage();
81
82 private:
83     ServiceSettingsWidgetPrivate *d_ptr;
84     Q_DISABLE_COPY(ServiceSettingsWidget)
85     Q_DECLARE_PRIVATE(ServiceSettingsWidget)
86 };
87
88 class ServiceSettingsWidgetListItem : public MBasicListItem
89 {
90     Q_OBJECT
91
92 public:
93     ServiceSettingsWidgetListItem(QGraphicsWidget *parent = 0);
94     virtual ~ServiceSettingsWidgetListItem();
95
96     void showDrillDownButton();
97
98 protected:
99     virtual QGraphicsLayout *createLayout();
100
101 private:
102     MLayout *horizontalLayout;
103 };
104
105 } //namespace
106
107 #endif // ACCOUNTSUI_SERVICESETTINGSWIDGET_H