2007-06-25 Johannes Schmid <johannes.schmid@openismus.com>
[modest] / src / widgets / modest-window.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_WINDOW_H__
31 #define __MODEST_WINDOW_H__
32
33 #include <glib-object.h>
34 #include <tny-account-store.h>
35
36 G_BEGIN_DECLS
37
38 #ifdef HAVE_CONFIG_H
39 #include <config.h>
40 #endif /*HAVE_CONFIG_H*/
41
42 #include <gtk/gtk.h>
43
44 /* 
45  * admittedly, the ifdefs for gtk and maemo are rather ugly; still
46  * this way is probably the easiest to maintain
47  */
48 #ifdef MODEST_PLATFORM_GNOME
49 #include <gtk/gtkwindow.h>
50 typedef GtkWindow      ModestWindowParent;
51 typedef GtkWindowClass ModestWindowParentClass;
52 #endif /* MODEST_PLATFORM_GNOME */
53
54 #ifdef MODEST_PLATFORM_MAEMO
55 #ifdef MODEST_HAVE_HILDON0_WIDGETS
56 #include <hildon-widgets/hildon-window.h>
57 #else
58 #include <hildon/hildon-window.h>
59 #endif /*MODEST_HAVE_HILDON0_WIDGETS*/
60 typedef HildonWindow      ModestWindowParent;
61 typedef HildonWindowClass ModestWindowParentClass;
62
63 #ifndef GTK_STOCK_FULLSCREEN
64 #define GTK_STOCK_FULLSCREEN ""
65 #endif /*GTK_STOCK_FULLSCREEN*/
66
67 #endif /*MODEST_PLATFORM_MAEMO */
68
69 /* convenience macros */
70 #define MODEST_TYPE_WINDOW             (modest_window_get_type())
71 #define MODEST_WINDOW(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj),MODEST_TYPE_WINDOW,ModestWindow))
72 #define MODEST_WINDOW_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass),MODEST_TYPE_WINDOW,GObject))
73 #define MODEST_IS_WINDOW(obj)          (G_TYPE_CHECK_INSTANCE_TYPE((obj),MODEST_TYPE_WINDOW))
74 #define MODEST_IS_WINDOW_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass),MODEST_TYPE_WINDOW))
75 #define MODEST_WINDOW_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj),MODEST_TYPE_WINDOW,ModestWindowClass))
76
77 typedef struct _ModestWindow      ModestWindow;
78 typedef struct _ModestWindowClass ModestWindowClass;
79
80 struct _ModestWindow {
81          ModestWindowParent parent;
82 };
83
84 struct _ModestWindowClass {
85         ModestWindowParentClass parent_class;
86
87         /* virtual methods */
88         void (*set_zoom_func) (ModestWindow *self, gdouble zoom);
89         gdouble (*get_zoom_func) (ModestWindow *self);
90         gboolean (*zoom_plus_func) (ModestWindow *self);
91         gboolean (*zoom_minus_func) (ModestWindow *self);
92         void (*show_toolbar_func) (ModestWindow *self, gboolean show_toolbar);
93         
94         void (*save_state_func) (ModestWindow *self);
95 };
96
97 /**
98  * modest_window_get_type:
99  *
100  * get the #GType for #ModestWindow
101  * 
102  * Returns: the type
103  */     
104 GType        modest_window_get_type    (void) G_GNUC_CONST;
105
106
107 /**
108  * modest_window_get_active_account:
109  * @self: a modest window instance
110  * 
111  * get the name of the active account
112  * 
113  * Returns: the active account name as a constant string
114  */     
115 const gchar* modest_window_get_active_account (ModestWindow *self);
116
117
118
119 /**
120  * modest_window_set_active_account:
121  * @self: a modest window instance
122  * @active_account: a new active account name for this window
123  * 
124  * set the active account for this window
125  * 
126  */     
127 void modest_window_set_active_account (ModestWindow *self, const gchar *active_account);
128
129 /**
130  * modest_window_set_zoom:
131  * @window: a #ModestWindow instance
132  * @zoom: the zoom level (1.0 is no zoom)
133  *
134  * sets the zoom level of the window
135  */
136 void            modest_window_set_zoom    (ModestWindow *window,
137                                            gdouble value);
138
139 /**
140  * modest_window_get_zoom:
141  * @window: a #ModestWindow instance
142  *
143  * gets the zoom of the window
144  *
145  * Returns: the current zoom value (1.0 is no zoom)
146  */
147 gdouble         modest_window_get_zoom    (ModestWindow *window);
148
149 /**
150  * modest_window_zoom_plus:
151  * @window: a #ModestWindow
152  *
153  * increases one level the zoom.
154  *
155  * Returns: %TRUE if successful, %FALSE if increasing zoom is not available
156  */
157 gboolean modest_window_zoom_plus (ModestWindow *window);
158
159 /**
160  * modest_window_zoom_minus:
161  * @window: a #ModestWindow
162  *
163  * decreases one level the zoom.
164  *
165  * Returns: %TRUE if successful, %FALSE if increasing zoom is not available
166  */
167 gboolean modest_window_zoom_minus (ModestWindow *window);
168
169
170 /**
171  * modest_window_show_toolbar:
172  * @window: 
173  * @view_toolbar: whether or not the toolbar should be shown
174  * 
175  * shows/hides the window toolbar
176  **/
177 void     modest_window_show_toolbar (ModestWindow *window, 
178                                      gboolean show_toolbar);
179                                      
180 /**
181  * modest_window_save_state:
182  * @window: 
183  * 
184  * Ask the window to save its settings for loading again later.
185  * This actually invokes the save_setting_func vfunc, which 
186  * derived windows should implement.
187  **/
188 void     modest_window_save_state (ModestWindow *window);
189
190
191 /**
192  * modest_window_get_action:
193  * @window: a #ModestWindow instance object
194  * @action_path: the full path of required action.
195  * 
196  * Get an action from ui manager, using @action_path parameter,
197  * which represent the full path to the required action into UIManager 
198  * xml definition.
199  **/
200 GtkAction * modest_window_get_action (ModestWindow *window, const gchar *action_path); 
201
202 /**
203  * modest_window_get_action_widget:
204  * @window: a #ModestWindow instance object
205  * @action_path: the full path of required action.
206  * 
207  * Get action widget from ui manager, using @action_path parameter,
208  * which represent the full path to the required action into UIManager 
209  * xml definition.
210  **/
211 GtkWidget *modest_window_get_action_widget (ModestWindow *window, 
212                                             const gchar *action_path);
213
214 /**
215  * modest_window_check_dimming_rules:
216  * @self: a #ModestWindow instance object
217  * 
218  * Calls UI Dimming Manager of @self window to check all dimming rules.
219  * 
220  **/
221 void modest_window_check_dimming_rules (ModestWindow *self);
222
223 /**
224  * modest_window_check_dimming_rules:
225  * @self: a #ModestWindow instance object
226  * @group: a #ModestWindow instance object
227  * 
228  * Calls UI Dimming Manager of @self window to check @group_name specific
229  * dimming rules.
230  * 
231  **/
232 void
233 modest_window_check_dimming_rules_group (ModestWindow *self,
234                                          const gchar *group_name);
235
236 G_END_DECLS
237
238 #endif /* __MODEST_WINDOW_H__ */