Added implementation of loading method in ModestMailHeaderView interface
[modest] / src / widgets / modest-mail-header-view.c
1 /* Copyright (c) 2008, 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 <config.h>
31
32 #include <widgets/modest-mail-header-view.h>
33 #include <modest-marshal.h>
34
35 enum {
36         RECPT_ACTIVATED_SIGNAL,
37         SHOW_DETAILS_SIGNAL,
38         LAST_SIGNAL
39 };
40 static guint signals[LAST_SIGNAL] = {0};
41
42 TnyHeaderFlags
43 modest_mail_header_view_get_priority (ModestMailHeaderView *self)
44 {
45         return MODEST_MAIL_HEADER_VIEW_GET_IFACE (self)->get_priority (self);
46 }
47
48 void
49 modest_mail_header_view_set_priority (ModestMailHeaderView *self, TnyHeaderFlags flags)
50 {
51         MODEST_MAIL_HEADER_VIEW_GET_IFACE (self)->set_priority (self, flags);
52 }
53
54 gboolean
55 modest_mail_header_view_get_loading (ModestMailHeaderView *self)
56 {
57         return MODEST_MAIL_HEADER_VIEW_GET_IFACE (self)->get_loading (self);
58 }
59
60 void
61 modest_mail_header_view_set_loading (ModestMailHeaderView *self, gboolean is_loading)
62 {
63         MODEST_MAIL_HEADER_VIEW_GET_IFACE (self)->set_loading (self, is_loading);
64 }
65
66 const GtkWidget *
67 modest_mail_header_view_add_custom_header (ModestMailHeaderView *self,
68                                            const gchar *label,
69                                            GtkWidget *custom_widget,
70                                            gboolean with_expander,
71                                            gboolean start)
72 {
73         return MODEST_MAIL_HEADER_VIEW_GET_IFACE (self)->add_custom_header (self, label, custom_widget, 
74                                                                             with_expander, start);
75 }
76
77 static void
78 modest_mail_header_view_base_init (gpointer g_class)
79 {
80         static gboolean initialized = FALSE;
81
82         if (!initialized) {
83                 
84                 signals[RECPT_ACTIVATED_SIGNAL] =
85                         g_signal_new ("recpt_activated",
86                                       MODEST_TYPE_MAIL_HEADER_VIEW,
87                                       G_SIGNAL_RUN_FIRST,
88                                       G_STRUCT_OFFSET(ModestMailHeaderViewIface, recpt_activated),
89                                       NULL, NULL,
90                                       g_cclosure_marshal_VOID__STRING,
91                                       G_TYPE_NONE, 1, G_TYPE_STRING);
92                 
93                 signals[SHOW_DETAILS_SIGNAL] =
94                         g_signal_new ("show_details",
95                                       MODEST_TYPE_MAIL_HEADER_VIEW,
96                                       G_SIGNAL_RUN_FIRST,
97                                       G_STRUCT_OFFSET(ModestMailHeaderViewIface, show_details),
98                                       NULL, NULL,
99                                       g_cclosure_marshal_VOID__VOID,
100                                       G_TYPE_NONE, 0);
101                 
102                 initialized = TRUE;
103         }
104 }
105
106 GType
107 modest_mail_header_view_get_type (void)
108 {
109         static GType my_type = 0;
110         if (!my_type) {
111                 static const GTypeInfo my_info = {
112                         sizeof(ModestMailHeaderViewIface),
113                         modest_mail_header_view_base_init,   /* base init */
114                         NULL,           /* base finalize */
115                         NULL,           /* class_init */
116                         NULL,           /* class finalize */
117                         NULL,           /* class data */
118                         0,
119                         0,              /* n_preallocs */
120                         NULL,           /* instance_init */
121                         NULL
122                 };
123
124                 my_type = g_type_register_static (G_TYPE_INTERFACE,
125                                                   "ModestMailHeaderView",
126                                                   &my_info, 0);
127
128                 g_type_interface_add_prerequisite (my_type,
129                                                    TNY_TYPE_HEADER_VIEW);
130
131         }
132         return my_type;
133 }