Better detection of valid child in signed
[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 const GtkWidget *
55 modest_mail_header_view_add_custom_header (ModestMailHeaderView *self,
56                                            const gchar *label,
57                                            GtkWidget *custom_widget,
58                                            gboolean with_expander,
59                                            gboolean start)
60 {
61         return MODEST_MAIL_HEADER_VIEW_GET_IFACE (self)->add_custom_header (self, label, custom_widget, 
62                                                                             with_expander, start);
63 }
64
65 static void
66 modest_mail_header_view_base_init (gpointer g_class)
67 {
68         static gboolean initialized = FALSE;
69
70         if (!initialized) {
71                 
72                 signals[RECPT_ACTIVATED_SIGNAL] =
73                         g_signal_new ("recpt_activated",
74                                       MODEST_TYPE_MAIL_HEADER_VIEW,
75                                       G_SIGNAL_RUN_FIRST,
76                                       G_STRUCT_OFFSET(ModestMailHeaderViewIface, recpt_activated),
77                                       NULL, NULL,
78                                       g_cclosure_marshal_VOID__STRING,
79                                       G_TYPE_NONE, 1, G_TYPE_STRING);
80                 
81                 signals[SHOW_DETAILS_SIGNAL] =
82                         g_signal_new ("show_details",
83                                       MODEST_TYPE_MAIL_HEADER_VIEW,
84                                       G_SIGNAL_RUN_FIRST,
85                                       G_STRUCT_OFFSET(ModestMailHeaderViewIface, show_details),
86                                       NULL, NULL,
87                                       g_cclosure_marshal_VOID__VOID,
88                                       G_TYPE_NONE, 0);
89                 
90                 initialized = TRUE;
91         }
92 }
93
94 GType
95 modest_mail_header_view_get_type (void)
96 {
97         static GType my_type = 0;
98         if (!my_type) {
99                 static const GTypeInfo my_info = {
100                         sizeof(ModestMailHeaderViewIface),
101                         modest_mail_header_view_base_init,   /* base init */
102                         NULL,           /* base finalize */
103                         NULL,           /* class_init */
104                         NULL,           /* class finalize */
105                         NULL,           /* class data */
106                         0,
107                         0,              /* n_preallocs */
108                         NULL,           /* instance_init */
109                         NULL
110                 };
111
112                 my_type = g_type_register_static (G_TYPE_INTERFACE,
113                                                   "ModestMailHeaderView",
114                                                   &my_info, 0);
115
116                 g_type_interface_add_prerequisite (my_type,
117                                                    TNY_TYPE_HEADER_VIEW);
118
119         }
120         return my_type;
121 }