c78ad96a20e81bcd951b5b8336995845888bb36d
[modest] / src / widgets / modest-global-settings-dialog.c
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 #include <glib/gi18n.h>
31 #include <gtk/gtknotebook.h>
32 #include <gtk/gtkstock.h>
33 #include <gtk/gtklabel.h>
34 #include "modest-global-settings-dialog.h"
35 #include "modest-defs.h"
36 #include "modest-ui-constants.h"
37 #include "widgets/modest-combo-box.h"
38 /* include other impl specific header files */
39
40 /* 'private'/'protected' functions */
41 static void modest_global_settings_dialog_class_init (ModestGlobalSettingsDialogClass *klass);
42 static void modest_global_settings_dialog_init       (ModestGlobalSettingsDialog *obj);
43 static void modest_global_settings_dialog_finalize   (GObject *obj);
44
45 /* list my signals  */
46 enum {
47         /* MY_SIGNAL_1, */
48         /* MY_SIGNAL_2, */
49         LAST_SIGNAL
50 };
51
52 /* globals */
53 static GtkDialogClass *parent_class = NULL;
54
55 /* uncomment the following if you have defined any signals */
56 /* static guint signals[LAST_SIGNAL] = {0}; */
57
58 GType
59 modest_global_settings_dialog_get_type (void)
60 {
61         static GType my_type = 0;
62         if (!my_type) {
63                 static const GTypeInfo my_info = {
64                         sizeof(ModestGlobalSettingsDialogClass),
65                         NULL,           /* base init */
66                         NULL,           /* base finalize */
67                         (GClassInitFunc) modest_global_settings_dialog_class_init,
68                         NULL,           /* class finalize */
69                         NULL,           /* class data */
70                         sizeof(ModestGlobalSettingsDialog),
71                         1,              /* n_preallocs */
72                         (GInstanceInitFunc) modest_global_settings_dialog_init,
73                         NULL
74                 };
75                 my_type = g_type_register_static (GTK_TYPE_DIALOG,
76                                                   "ModestGlobalSettingsDialog",
77                                                   &my_info, 0);
78         }
79         return my_type;
80 }
81
82 static void
83 modest_global_settings_dialog_class_init (ModestGlobalSettingsDialogClass *klass)
84 {
85         GObjectClass *gobject_class;
86         gobject_class = (GObjectClass*) klass;
87
88         parent_class            = g_type_class_peek_parent (klass);
89         gobject_class->finalize = modest_global_settings_dialog_finalize;
90
91         g_type_class_add_private (gobject_class, sizeof(ModestGlobalSettingsDialogPrivate));
92 }
93
94 static void
95 modest_global_settings_dialog_init (ModestGlobalSettingsDialog *self)
96 {
97         ModestGlobalSettingsDialogPrivate *priv;
98 /*      GdkGeometry *geometry; */
99
100         priv = MODEST_GLOBAL_SETTINGS_DIALOG_GET_PRIVATE (self);
101
102         priv->notebook = gtk_notebook_new ();
103            
104         /* Add the buttons: */
105         gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_OK, GTK_RESPONSE_OK);
106         gtk_dialog_add_button (GTK_DIALOG (self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
107     
108 /*      /\* Connect to the dialog's response signal: *\/ */
109 /*      /\* We use connect-before  */
110 /*       * so we can stop the signal emission,  */
111 /*       * to stop the default signal handler from closing the dialog. */
112 /*       *\/ */
113 /*      g_signal_connect (G_OBJECT (self), "response", */
114 /*                        G_CALLBACK (on_response), self);  */
115
116         /* Set title */
117         gtk_window_set_title (GTK_WINDOW (self), _("mcen_ti_options"));
118
119         /* Set geometry */
120 /*      geometry = g_malloc0(sizeof (GdkGeometry)); */
121 /*      geometry->max_width = MODEST_DIALOG_WINDOW_MAX_WIDTH; */
122 /*      geometry->min_width = MODEST_DIALOG_WINDOW_MIN_WIDTH; */
123 /*      geometry->max_height = MODEST_DIALOG_WINDOW_MAX_HEIGHT; */
124 /*      geometry->min_height = MODEST_DIALOG_WINDOW_MIN_HEIGHT; */
125 /*      gtk_window_set_geometry_hints (GTK_WINDOW (self), */
126 /*                                     GTK_WIDGET (self), */
127 /*                                     geometry, */
128 /*                                     GDK_HINT_MIN_SIZE | GDK_HINT_MAX_SIZE); */
129         gtk_widget_set_size_request (GTK_WIDGET (self), 
130                                      MODEST_DIALOG_WINDOW_MAX_WIDTH, 
131                                      MODEST_DIALOG_WINDOW_MAX_HEIGHT);
132 }
133
134 static void
135 modest_global_settings_dialog_finalize (GObject *obj)
136 {
137 /*      free/unref instance resources here */
138         G_OBJECT_CLASS(parent_class)->finalize (obj);
139 }
140
141 /*
142  * Creates a pair list (number,string) and adds it to the given list
143  */
144 static void
145 add_to_modest_pair_list (const gint num, const gchar *str, GSList **list)
146 {
147         guint *number;
148         ModestPair *pair;
149
150         number = g_malloc0 (sizeof (guint));
151         *number = num;
152         pair = modest_pair_new (number, g_strdup (str), TRUE);
153         *list = g_slist_prepend (*list, pair);
154 }
155
156 /*
157  * Gets a list of pairs 
158  */
159 ModestPairList *
160 _modest_global_settings_dialog_get_connected_via (void)
161 {
162         GSList *list = NULL;
163
164         add_to_modest_pair_list (MODEST_CONNECTED_VIA_WLAN, 
165                                  _("mcen_va_options_connectiontype_wlan"), 
166                                  &list);
167         add_to_modest_pair_list (MODEST_CONNECTED_VIA_ANY, 
168                                  _("mcen_va_options_connectiontype_all"), 
169                                  &list);
170
171         return (ModestPairList *) g_slist_reverse (list);
172 }
173
174 /*
175  * Gets a list of pairs of update intervals
176  */
177 ModestPairList *
178 _modest_global_settings_dialog_get_update_interval (void)
179 {
180         GSList *list = NULL;
181
182         add_to_modest_pair_list (MODEST_UPDATE_INTERVAL_5_MIN, 
183                                  _("mcen_va_options_updateinterval_5min"), 
184                                  &list);
185         add_to_modest_pair_list (MODEST_UPDATE_INTERVAL_10_MIN, 
186                                  _("mcen_va_options_updateinterval_10min"), 
187                                  &list);
188         add_to_modest_pair_list (MODEST_UPDATE_INTERVAL_15_MIN, 
189                                  _("mcen_va_options_updateinterval_15min"), 
190                                  &list);
191         add_to_modest_pair_list (MODEST_UPDATE_INTERVAL_30_MIN, 
192                                  _("mcen_va_options_updateinterval_30min"), 
193                                  &list);
194         add_to_modest_pair_list (MODEST_UPDATE_INTERVAL_1_HOUR, 
195                                  _("mcen_va_options_updateinterval_1h"), 
196                                  &list);
197         add_to_modest_pair_list (MODEST_UPDATE_INTERVAL_2_HOUR, 
198                                  _("mcen_va_options_updateinterval_2h"), 
199                                  &list);
200
201         return (ModestPairList *) g_slist_reverse (list);
202 }
203
204 /*
205  * Gets a list of pairs 
206  */
207 ModestPairList *
208 _modest_global_settings_dialog_get_msg_formats (void)
209 {
210         GSList *list = NULL;
211
212         add_to_modest_pair_list (MODEST_FILE_FORMAT_FORMATTED_TEXT, 
213                                  _("mcen_va_options_messageformat_html"), 
214                                  &list);
215         add_to_modest_pair_list (MODEST_FILE_FORMAT_PLAIN_TEXT, 
216                                  _("mcen_va_options_messageformat_plain"), 
217                                  &list);
218
219         return (ModestPairList *) g_slist_reverse (list);
220 }