Bug 794693 - Crash when trying to view email message source
[evolution.git] / src / mail / e-mail-reader.h
blobe1878b6acd1ad0f419385da8b8e45d8097438dcf
1 /*
2 * e-mail-reader.h
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation.
8 * This program is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
10 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 * for more details.
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program; if not, see <http://www.gnu.org/licenses/>.
17 * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com)
21 #ifndef E_MAIL_READER_H
22 #define E_MAIL_READER_H
24 /* XXX Anjal uses a different message list widget than Evolution, so
25 * avoid including <mail/message-list.h> in this file. This makes
26 * the get_message_list() method a little awkward since it returns
27 * a GtkWidget pointer which almost always has to be type casted. */
29 #include <gtk/gtk.h>
30 #include <camel/camel.h>
31 #include <e-util/e-util.h>
32 #include <composer/e-msg-composer.h>
34 #include <mail/e-mail-backend.h>
35 #include <mail/e-mail-display.h>
36 #include <mail/e-mail-enums.h>
38 /* Standard GObject macros */
39 #define E_TYPE_MAIL_READER \
40 (e_mail_reader_get_type ())
41 #define E_MAIL_READER(obj) \
42 (G_TYPE_CHECK_INSTANCE_CAST \
43 ((obj), E_TYPE_MAIL_READER, EMailReader))
44 #define E_MAIL_READER_INTERFACE(cls) \
45 (G_TYPE_CHECK_CLASS_CAST \
46 ((cls), E_TYPE_MAIL_READER, EMailReaderInterface))
47 #define E_IS_MAIL_READER(obj) \
48 (G_TYPE_CHECK_INSTANCE_TYPE \
49 ((obj), E_TYPE_MAIL_READER))
50 #define E_IS_MAIL_READER_INTERFACE(cls) \
51 (G_TYPE_CHECK_CLASS_TYPE \
52 ((cls), E_TYPE_MAIL_READER))
53 #define E_MAIL_READER_GET_INTERFACE(obj) \
54 (G_TYPE_INSTANCE_GET_INTERFACE \
55 ((obj), E_TYPE_MAIL_READER, EMailReaderInterface))
57 /* Basename of the UI definition file. */
58 #define E_MAIL_READER_UI_DEFINITION "evolution-mail-reader.ui"
60 G_BEGIN_DECLS
62 typedef struct _EMailReader EMailReader;
63 typedef struct _EMailReaderInterface EMailReaderInterface;
65 typedef enum {
66 E_MAIL_READER_ACTION_GROUP_STANDARD,
67 E_MAIL_READER_ACTION_GROUP_SEARCH_FOLDERS,
68 E_MAIL_READER_NUM_ACTION_GROUPS
69 } EMailReaderActionGroup;
71 enum {
72 E_MAIL_READER_HAVE_ENABLED_ACCOUNT = 1 << 0,
73 E_MAIL_READER_SELECTION_SINGLE = 1 << 1,
74 E_MAIL_READER_SELECTION_MULTIPLE = 1 << 2,
75 E_MAIL_READER_SELECTION_CAN_ADD_SENDER = 1 << 3,
76 E_MAIL_READER_SELECTION_FLAG_CLEAR = 1 << 4,
77 E_MAIL_READER_SELECTION_FLAG_COMPLETED = 1 << 5,
78 E_MAIL_READER_SELECTION_FLAG_FOLLOWUP = 1 << 6,
79 E_MAIL_READER_SELECTION_HAS_DELETED = 1 << 7,
80 E_MAIL_READER_SELECTION_HAS_IMPORTANT = 1 << 8,
81 E_MAIL_READER_SELECTION_HAS_JUNK = 1 << 9,
82 E_MAIL_READER_SELECTION_HAS_NOT_JUNK = 1 << 10,
83 E_MAIL_READER_SELECTION_HAS_READ = 1 << 11,
84 E_MAIL_READER_SELECTION_HAS_UNDELETED = 1 << 12,
85 E_MAIL_READER_SELECTION_HAS_UNIMPORTANT = 1 << 13,
86 E_MAIL_READER_SELECTION_HAS_UNREAD = 1 << 14,
87 E_MAIL_READER_SELECTION_HAS_ATTACHMENTS = 1 << 15,
88 E_MAIL_READER_SELECTION_IS_MAILING_LIST = 1 << 16,
89 E_MAIL_READER_FOLDER_IS_JUNK = 1 << 17,
90 E_MAIL_READER_FOLDER_IS_VTRASH = 1 << 18,
91 E_MAIL_READER_FOLDER_ARCHIVE_FOLDER_SET = 1 << 19,
92 E_MAIL_READER_SELECTION_HAS_IGNORE_THREAD = 1 << 20,
93 E_MAIL_READER_SELECTION_HAS_NOTIGNORE_THREAD = 1 << 21,
94 E_MAIL_READER_SELECTION_HAS_MAIL_NOTE = 1 << 22
97 struct _EMailReaderInterface {
98 GTypeInterface parent_interface;
100 GtkActionGroup *
101 (*get_action_group) (EMailReader *reader,
102 EMailReaderActionGroup group);
103 EAlertSink * (*get_alert_sink) (EMailReader *reader);
104 EMailBackend * (*get_backend) (EMailReader *reader);
105 EMailDisplay * (*get_mail_display) (EMailReader *reader);
106 gboolean (*get_hide_deleted) (EMailReader *reader);
107 GtkWidget * (*get_message_list) (EMailReader *reader);
108 GtkMenu * (*get_popup_menu) (EMailReader *reader);
109 EPreviewPane * (*get_preview_pane) (EMailReader *reader);
110 GPtrArray * (*get_selected_uids) (EMailReader *reader);
111 GPtrArray * (*get_selected_uids_with_collapsed_threads)
112 (EMailReader *reader);
113 GtkWindow * (*get_window) (EMailReader *reader);
115 CamelFolder * (*ref_folder) (EMailReader *reader);
116 void (*set_folder) (EMailReader *reader,
117 CamelFolder *folder);
118 void (*set_message) (EMailReader *reader,
119 const gchar *message_uid);
120 guint (*open_selected_mail) (EMailReader *reader);
122 /* Signals */
123 void (*composer_created) (EMailReader *reader,
124 EMsgComposer *composer,
125 CamelMimeMessage *source);
126 void (*folder_loaded) (EMailReader *reader);
127 void (*message_loaded) (EMailReader *reader,
128 const gchar *message_uid,
129 CamelMimeMessage *message);
130 void (*message_seen) (EMailReader *reader,
131 const gchar *message_uid,
132 CamelMimeMessage *message);
133 void (*show_search_bar) (EMailReader *reader);
134 void (*update_actions) (EMailReader *reader,
135 guint32 state);
137 /* Padding for future expansion */
138 gpointer reserved[4];
141 GType e_mail_reader_get_type (void);
142 void e_mail_reader_init (EMailReader *reader,
143 gboolean init_actions,
144 gboolean connect_signals);
145 void e_mail_reader_dispose (EMailReader *reader);
146 void e_mail_reader_changed (EMailReader *reader);
147 guint32 e_mail_reader_check_state (EMailReader *reader);
148 EActivity * e_mail_reader_new_activity (EMailReader *reader);
149 void e_mail_reader_update_actions (EMailReader *reader,
150 guint32 state);
151 GtkAction * e_mail_reader_get_action (EMailReader *reader,
152 const gchar *action_name);
153 GtkActionGroup *
154 e_mail_reader_get_action_group (EMailReader *reader,
155 EMailReaderActionGroup group);
156 EAlertSink * e_mail_reader_get_alert_sink (EMailReader *reader);
157 EMailBackend * e_mail_reader_get_backend (EMailReader *reader);
158 EMailDisplay * e_mail_reader_get_mail_display (EMailReader *reader);
159 gboolean e_mail_reader_get_hide_deleted (EMailReader *reader);
160 GtkWidget * e_mail_reader_get_message_list (EMailReader *reader);
161 guint e_mail_reader_open_selected_mail
162 (EMailReader *reader);
163 GtkMenu * e_mail_reader_get_popup_menu (EMailReader *reader);
164 EPreviewPane * e_mail_reader_get_preview_pane (EMailReader *reader);
165 GPtrArray * e_mail_reader_get_selected_uids (EMailReader *reader);
166 GPtrArray * e_mail_reader_get_selected_uids_with_collapsed_threads
167 (EMailReader *reader);
168 GtkWindow * e_mail_reader_get_window (EMailReader *reader);
169 CamelFolder * e_mail_reader_ref_folder (EMailReader *reader);
170 void e_mail_reader_set_folder (EMailReader *reader,
171 CamelFolder *folder);
172 void e_mail_reader_set_message (EMailReader *reader,
173 const gchar *message_uid);
174 EMailForwardStyle
175 e_mail_reader_get_forward_style (EMailReader *reader);
176 void e_mail_reader_set_forward_style (EMailReader *reader,
177 EMailForwardStyle style);
178 gboolean e_mail_reader_get_group_by_threads
179 (EMailReader *reader);
180 void e_mail_reader_set_group_by_threads
181 (EMailReader *reader,
182 gboolean group_by_threads);
183 EMailReplyStyle e_mail_reader_get_reply_style (EMailReader *reader);
184 void e_mail_reader_set_reply_style (EMailReader *reader,
185 EMailReplyStyle style);
186 gboolean e_mail_reader_get_mark_seen_always
187 (EMailReader *reader);
188 void e_mail_reader_set_mark_seen_always
189 (EMailReader *reader,
190 gboolean mark_seen_always);
191 gboolean e_mail_reader_get_delete_selects_previous
192 (EMailReader *reader);
193 void e_mail_reader_set_delete_selects_previous
194 (EMailReader *reader,
195 gboolean delete_selects_previous);
196 void e_mail_reader_create_charset_menu
197 (EMailReader *reader,
198 GtkUIManager *ui_manager,
199 guint merge_id);
200 void e_mail_reader_show_search_bar (EMailReader *reader);
201 void e_mail_reader_avoid_next_mark_as_seen
202 (EMailReader *reader);
203 void e_mail_reader_unset_folder_just_selected
204 (EMailReader *reader);
205 void e_mail_reader_composer_created (EMailReader *reader,
206 EMsgComposer *composer,
207 CamelMimeMessage *message);
208 void e_mail_reader_connect_remote_content
209 (EMailReader *reader);
211 G_END_DECLS
213 #endif /* E_MAIL_READER_H */