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
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. */
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"
62 typedef struct _EMailReader EMailReader
;
63 typedef struct _EMailReaderInterface EMailReaderInterface
;
66 E_MAIL_READER_ACTION_GROUP_STANDARD
,
67 E_MAIL_READER_ACTION_GROUP_SEARCH_FOLDERS
,
68 E_MAIL_READER_NUM_ACTION_GROUPS
69 } EMailReaderActionGroup
;
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
;
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
);
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
,
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
,
151 GtkAction
* e_mail_reader_get_action (EMailReader
*reader
,
152 const gchar
*action_name
);
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
);
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
,
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
);
213 #endif /* E_MAIL_READER_H */