* smalll cleanup
[modest] / src / modest-widget-factory.h
1 /* Copyright (c) 2006, Nokia Corporation
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are
6  * met:
7  *
8  * * Redistributions of source code must retain the above copyright
9  *   notice, this list of conditions and the following disclaimer.
10  * * Redistributions in binary form must reproduce the above copyright
11  *   notice, this list of conditions and the following disclaimer in the
12  *   documentation and/or other materials provided with the distribution.
13  * * Neither the name of the Nokia Corporation nor the names of its
14  *   contributors may be used to endorse or promote products derived from
15  *   this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
18  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
20  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
21  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28  */
29
30 #ifndef __MODEST_WIDGET_FACTORY_H__
31 #define __MODEST_WIDGET_FACTORY_H__
32
33 #include <glib-object.h>
34 #include <glib/gi18n.h>
35 #include <modest-account-mgr.h>
36 #include <modest-tny-account-store.h>
37
38 #include <widgets/modest-header-view.h>
39 #include <widgets/modest-folder-view.h>
40 #include <widgets/modest-msg-view.h>
41 #include <widgets/modest-account-view.h>
42 #include <widgets/modest-toolbar.h>
43
44 G_BEGIN_DECLS
45
46 /* convenience macros */
47 #define MODEST_TYPE_WIDGET_FACTORY             (modest_widget_factory_get_type())
48 #define MODEST_WIDGET_FACTORY(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_WIDGET_FACTORY,ModestWidgetFactory))
49 #define MODEST_WIDGET_FACTORY_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_WIDGET_FACTORY,GObject))
50 #define MODEST_IS_WIDGET_FACTORY(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_WIDGET_FACTORY))
51 #define MODEST_IS_WIDGET_FACTORY_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_WIDGET_FACTORY))
52 #define MODEST_WIDGET_FACTORY_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_WIDGET_FACTORY,ModestWidgetFactoryClass))
53
54 typedef struct _ModestWidgetFactory      ModestWidgetFactory;
55 typedef struct _ModestWidgetFactoryClass ModestWidgetFactoryClass;
56
57 struct _ModestWidgetFactory {
58          GObject parent;
59         /* insert public members, if any */
60 };
61
62 struct _ModestWidgetFactoryClass {
63         GObjectClass parent_class;
64         /* insert signal callback declarations, eg. */
65         /* void (* my_event) (ModestWidgetFactory* obj); */
66 };
67
68
69 enum _ModestComboBoxType {
70         MODEST_COMBO_BOX_TYPE_STORE_PROTOS,
71         MODEST_COMBO_BOX_TYPE_TRANSPORT_PROTOS,
72         MODEST_COMBO_BOX_TYPE_SECURITY_PROTOS,
73         MODEST_COMBO_BOX_TYPE_AUTH_PROTOS,
74 };
75 typedef enum _ModestComboBoxType ModestComboBoxType;
76
77
78 /**
79  * modest_widget_factory_get_type
80  *
81  * get the GType for ModestWidgetFactory
82  *
83  * Returns: the GType
84  */
85 GType        modest_widget_factory_get_type    (void) G_GNUC_CONST;
86
87
88 /**
89  * modest_widget_factory_new
90  * @conf: a modest conf instance
91  * @acc_store: a modest account store instance
92  * @acc_mgr: a modest account mgr instance
93  *
94  * instantiates a ModestWidgetFactory
95  *
96  * Returns: a new ModestWidgetFactory, or NULL in case of error
97  */
98 ModestWidgetFactory*      modest_widget_factory_new   (ModestConf *conf,
99                                                        ModestTnyAccountStore *acc_store,
100                                                        ModestAccountMgr *account_mgr);
101 /**
102  * modest_widget_factory_get_folder_view
103  * @self: a ModestWidgetFactory instance
104  * 
105  * return the folder tree widget (ie. the widget with the list of folders);
106  *
107  * This factory will always return the
108  * same widget, and takes care of its lifetime - users should *not* destroy it.
109  *
110  * Returns: a folder tree view, or NULL in case of error
111  */
112 ModestFolderView*    modest_widget_factory_get_folder_view (ModestWidgetFactory *self);
113
114
115 /**
116  * modest_widget_factory_get_header_view
117  * @self: a ModestWidgetFactory instance
118  * 
119  * return the header tree widget (ie. the widget with the list of headers);
120  *
121  * This factory will always return the
122  * same widget, and takes care of its lifetime - users should *not* destroy it.
123  *
124  * Returns: a header tree view, or NULL in case of error
125  */
126 ModestHeaderView*    modest_widget_factory_get_header_view (ModestWidgetFactory *self);
127
128
129 /**
130  * modest_widget_factory_get_msg_preview
131  * @self: a ModestWidgetFactory instance
132  * 
133  * return the message preview widget (ie. the widget with shows the currently selected message);
134  *
135  * This factory will always return the
136  * same widget, and takes care of its lifetime - users should *not* destroy it.
137  *
138  * Returns: a header tree view, or NULL in case of error
139  */
140 ModestMsgView*           modest_widget_factory_get_msg_preview (ModestWidgetFactory *self);
141
142
143 /**
144  * modest_widget_factory_get_account_view
145  * @self: a ModestWidgetFactory instance
146  * 
147  * return an account view widget (ie. the widget that shows a list of accounts)
148  *
149  * This factory will always return the
150  * same widget, and takes care of its lifetime - users should *not* destroy it.
151  *
152  * Returns: the account view, or NULL in case of error
153  */
154 ModestAccountView*    modest_widget_factory_get_account_view (ModestWidgetFactory *self);
155
156
157 /**
158  * modest_widget_factory_get_progress_bar
159  * @self: a ModestWidgetFactory instance
160  * 
161  * return an progress bar widget 
162  * if the widget factory was created with 'auto_connect', then this progress bar
163  * will automatically update for changes in the other widgets
164  * NOTE the naming inconsistency: GtkProgressBar vs GtkStatusbar 
165  * 
166  * This factory will always return the
167  * same widget, and takes care of its lifetime - users should *not* destroy it.
168  *
169  * Returns: the progress bar widget
170  */
171 GtkWidget*       modest_widget_factory_get_progress_bar (ModestWidgetFactory *self);
172
173
174
175 /**
176  * modest_widget_factory_get_status_bar
177  * @self: a ModestWidgetFactory instance
178  * 
179  * return an status bar widget 
180  * if the widget factory was created with 'auto_connect', then this status bar
181  * will automatically update for changes in the other widgets
182  * NOTE the naming inconsistency: GtkProgressBar vs GtkStatusbar 
183  * 
184  * This factory will always return the
185  * same widget, and takes care of its lifetime - users should *not* destroy it.
186  *
187  * Returns: the status bar widget
188  */
189 GtkWidget*     modest_widget_factory_get_status_bar (ModestWidgetFactory *self);
190
191 /**
192  * modest_widget_factory_get_store
193  * @self: a ModestWidgetFactory instance
194  * @type: the type of items we want a combo box for
195  * 
196  * return a combobox with with the given items
197  *  
198  * Returns: the combo box
199  */
200 GtkWidget*     modest_widget_factory_get_combo_box (ModestWidgetFactory *self,
201                                                     ModestComboBoxType type);
202
203
204 /**
205  * modest_widget_factory_get_online_combo
206  * @self: a ModestWidgetFactory instance
207  * 
208  * return a toggle which with one can see whether online/offline mode is active.
209  * In case of auto-connect, this will automatically be sync'd with the
210  * account_store / device
211  *  
212  * Returns: the combo box
213  */
214 GtkWidget*  modest_widget_factory_get_online_toggle (ModestWidgetFactory *self);
215
216
217
218
219 /**
220  * modest_widget_factory_get_folder_info_label
221  * @self: a ModestWidgetFactory instance
222  * 
223  * return a label with the number of items, unread items in the current folder
224  *  
225  * Returns: the label
226  */
227 GtkWidget* modest_widget_factory_get_folder_info_label (ModestWidgetFactory *self);
228
229
230 /**
231  * modest_widget_factory_get_main_toolbar
232  * @self: a ModestWidgetFactory instance
233  * @items: a list of ModestToolbarButtons (button_ids)
234  *
235  * returns the main toolbar widget; their enabled/disabled state synchronized with
236  * the other widgets. Note that after the first calling, this function will
237  * always return the same toolbar, regardless of the items
238  *  
239  * Returns: the toolbar
240  */
241 ModestToolbar *modest_widget_factory_get_main_toolbar (ModestWidgetFactory *self, 
242                                                        GSList *items);
243
244 /**
245  * modest_widget_factory_get_edit_toolbar
246  * @self: a ModestWidgetFactory instance
247  * @items: a list of ModestToolbarButtons (button_ids)
248  *
249  * returns the toolbar widget for edit windows; the enabled/disabled
250  * state synchronized with the other widgets.
251  *  
252  * Returns: the toolbar
253  */
254 ModestToolbar *modest_widget_factory_get_edit_toolbar (ModestWidgetFactory *self, 
255                                                        GSList *items);
256
257
258 G_END_DECLS
259
260 #endif /* __MODEST_WIDGET_FACTORY_H__ */
261