Add support for setting brand images in message view widgets
[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 void
67 modest_mail_header_view_set_branding (ModestMailHeaderView *self, const gchar *brand_name, const GdkPixbuf *brand_icon)
68 {
69         MODEST_MAIL_HEADER_VIEW_GET_IFACE (self)->set_branding (self, brand_name, brand_icon);
70 }
71
72 const GtkWidget *
73 modest_mail_header_view_add_custom_header (ModestMailHeaderView *self,
74                                            const gchar *label,
75                                            GtkWidget *custom_widget,
76                                            gboolean with_expander,
77                                            gboolean start)
78 {
79         return MODEST_MAIL_HEADER_VIEW_GET_IFACE (self)->add_custom_header (self, label, custom_widget, 
80                                                                             with_expander, start);
81 }
82
83 static void
84 modest_mail_header_view_base_init (gpointer g_class)
85 {
86         static gboolean initialized = FALSE;
87
88         if (!initialized) {
89                 
90                 signals[RECPT_ACTIVATED_SIGNAL] =
91                         g_signal_new ("recpt_activated",
92                                       MODEST_TYPE_MAIL_HEADER_VIEW,
93                                       G_SIGNAL_RUN_FIRST,
94                                       G_STRUCT_OFFSET(ModestMailHeaderViewIface, recpt_activated),
95                                       NULL, NULL,
96                                       g_cclosure_marshal_VOID__STRING,
97                                       G_TYPE_NONE, 1, G_TYPE_STRING);
98                 
99                 signals[SHOW_DETAILS_SIGNAL] =
100                         g_signal_new ("show_details",
101                                       MODEST_TYPE_MAIL_HEADER_VIEW,
102                                       G_SIGNAL_RUN_FIRST,
103                                       G_STRUCT_OFFSET(ModestMailHeaderViewIface, show_details),
104                                       NULL, NULL,
105                                       g_cclosure_marshal_VOID__VOID,
106                                       G_TYPE_NONE, 0);
107                 
108                 initialized = TRUE;
109         }
110 }
111
112 GType
113 modest_mail_header_view_get_type (void)
114 {
115         static GType my_type = 0;
116         if (!my_type) {
117                 static const GTypeInfo my_info = {
118                         sizeof(ModestMailHeaderViewIface),
119                         modest_mail_header_view_base_init,   /* base init */
120                         NULL,           /* base finalize */
121                         NULL,           /* class_init */
122                         NULL,           /* class finalize */
123                         NULL,           /* class data */
124                         0,
125                         0,              /* n_preallocs */
126                         NULL,           /* instance_init */
127                         NULL
128                 };
129
130                 my_type = g_type_register_static (G_TYPE_INTERFACE,
131                                                   "ModestMailHeaderView",
132                                                   &my_info, 0);
133
134                 g_type_interface_add_prerequisite (my_type,
135                                                    TNY_TYPE_HEADER_VIEW);
136
137         }
138         return my_type;
139 }