1 /* Copyright (c) 2006, Nokia Corporation
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
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.
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.
31 #include <glade/glade.h>
32 #include <glib/gi18n.h>
37 #endif /*HAVE_CONFIG_H*/
39 #include "../modest-ui.h"
40 #include "../modest-account-mgr.h"
41 #include "../modest-widget-factory.h"
42 #include "modest-main-window.h"
45 /* 'private'/'protected' functions */
46 static void modest_ui_class_init (ModestUIClass *klass);
47 static void modest_ui_init (ModestUI *obj);
48 static void modest_ui_finalize (GObject *obj);
50 gchar *on_password_requested (TnyAccountIface *, const gchar *, gboolean *);
53 typedef struct _ModestUIPrivate ModestUIPrivate;
54 struct _ModestUIPrivate {
56 ModestAccountMgr *account_mgr;
57 ModestWidgetFactory *widget_factory;
58 ModestTnyAccountStore *account_store;
60 GtkWidget *main_window;
63 #define MODEST_UI_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
76 static GObjectClass *parent_class = NULL;
80 modest_ui_get_type (void)
82 static GType my_type = 0;
84 static const GTypeInfo my_info = {
85 sizeof(ModestUIClass),
87 NULL, /* base finalize */
88 (GClassInitFunc) modest_ui_class_init,
89 NULL, /* class finalize */
90 NULL, /* class data */
93 (GInstanceInitFunc) modest_ui_init,
96 my_type = g_type_register_static (G_TYPE_OBJECT,
105 modest_ui_class_init (ModestUIClass *klass)
107 GObjectClass *gobject_class;
108 gobject_class = (GObjectClass*) klass;
110 parent_class = g_type_class_peek_parent (klass);
111 gobject_class->finalize = modest_ui_finalize;
113 g_type_class_add_private (gobject_class, sizeof(ModestUIPrivate));
119 modest_ui_init (ModestUI *obj)
121 ModestUIPrivate *priv;
123 priv = MODEST_UI_GET_PRIVATE(obj);
125 priv->account_store = NULL;
126 priv->account_mgr = NULL;
128 priv->widget_factory = NULL;
130 priv->main_window = NULL;
135 modest_ui_finalize (GObject *obj)
138 ModestUIPrivate *priv = MODEST_UI_GET_PRIVATE(obj);
140 if (priv->account_store) {
141 g_object_unref (G_OBJECT(priv->account_store));
142 priv->account_store = NULL;
145 if (priv->account_mgr) {
146 g_object_unref (G_OBJECT(priv->account_mgr));
147 priv->account_mgr = NULL;
150 if (priv->widget_factory) {
151 g_object_unref (G_OBJECT(priv->widget_factory));
152 priv->widget_factory = NULL;
156 g_object_unref (G_OBJECT(priv->conf));
163 modest_ui_new (ModestConf *modest_conf)
166 ModestUIPrivate *priv;
168 g_return_val_if_fail (modest_conf, NULL);
170 obj = g_object_new(MODEST_TYPE_UI, NULL);
171 priv = MODEST_UI_GET_PRIVATE(obj);
173 g_object_ref (G_OBJECT(modest_conf));
174 priv->conf = modest_conf;
176 priv->account_mgr = MODEST_ACCOUNT_MGR(modest_account_mgr_new (priv->conf));
177 if (!priv->account_mgr) {
178 g_printerr ("modest: could not create ModestAccountMgr instance\n");
179 g_object_unref (obj);
183 priv->account_store = modest_tny_account_store_new (priv->account_mgr);
184 if (!priv->account_store) {
185 g_printerr ("modest: could not initialze ModestTnyAccountStore instance\n");
189 priv->widget_factory = modest_widget_factory_new (
190 priv->conf, priv->account_store, priv->account_mgr);
191 if (!priv->account_store) {
192 g_printerr ("modest: could not initialize widget factory\n");
196 return MODEST_UI(obj);
200 on_main_window_delete_event (GtkWidget *widget, GdkEvent *event, ModestUI *self)
202 g_warning (__FUNCTION__);
209 modest_ui_main_window (ModestUI *modest_ui)
211 ModestUIPrivate *priv;
213 g_return_val_if_fail (modest_ui, NULL);
214 priv = MODEST_UI_GET_PRIVATE(modest_ui);
216 if (!priv->main_window) {
218 modest_main_window_new (priv->conf, priv->account_mgr,
219 priv->widget_factory);
220 g_signal_connect (G_OBJECT(priv->main_window), "delete-event",
221 G_CALLBACK(on_main_window_delete_event), modest_ui);
224 if (!priv->main_window)
225 g_printerr ("modest: could not create main window\n");
227 return priv->main_window;