1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ 2 /* 3 * This program is free software; you can redistribute it and/or modify it 4 * under the terms of the GNU Lesser General Public License as published by 5 * the Free Software Foundation. 6 * 7 * This program is distributed in the hope that it will be useful, but 8 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 9 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 10 * for more details. 11 * 12 * You should have received a copy of the GNU Lesser General Public License 13 * along with this program; if not, see <http://www.gnu.org/licenses/>. 14 * 15 * 16 * Authors: 17 * Ettore Perazzoli <ettore@ximian.com> 18 * 19 * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) 20 * 21 */ 22 23 #ifndef E_MSG_COMPOSER_H 24 #define E_MSG_COMPOSER_H 25 26 #include <camel/camel.h> 27 #include <libebook/libebook.h> 28 29 #include <shell/e-shell.h> 30 31 #include <composer/e-composer-header-table.h> 32 #include <em-format/e-mail-part-list.h> 33 34 /* Standard GObject macros */ 35 #define E_TYPE_MSG_COMPOSER \ 36 (e_msg_composer_get_type ()) 37 #define E_MSG_COMPOSER(obj) \ 38 (G_TYPE_CHECK_INSTANCE_CAST \ 39 ((obj), E_TYPE_MSG_COMPOSER, EMsgComposer)) 40 #define E_MSG_COMPOSER_CLASS(cls) \ 41 (G_TYPE_CHECK_CLASS_CAST \ 42 ((cls), E_TYPE_MSG_COMPOSER, EMsgComposerClass)) 43 #define E_IS_MSG_COMPOSER(obj) \ 44 (G_TYPE_CHECK_INSTANCE_TYPE \ 45 ((obj), E_TYPE_MSG_COMPOSER)) 46 #define E_IS_MSG_COMPOSER_CLASS(cls) \ 47 (G_TYPE_CHECK_CLASS_TYPE \ 48 ((obj), E_TYPE_MSG_COMPOSER)) 49 #define E_MSG_COMPOSER_GET_CLASS(obj) \ 50 (G_TYPE_INSTANCE_GET_CLASS \ 51 ((obj), E_TYPE_MSG_COMPOSER, EMsgComposerClass)) 52 53 G_BEGIN_DECLS 54 55 typedef struct _EMsgComposer EMsgComposer; 56 typedef struct _EMsgComposerClass EMsgComposerClass; 57 typedef struct _EMsgComposerPrivate EMsgComposerPrivate; 58 59 struct _EMsgComposer { 60 GtkWindow parent; 61 EMsgComposerPrivate *priv; 62 }; 63 64 struct _EMsgComposerClass { 65 GtkWindowClass parent_class; 66 67 /* Signals */ 68 gboolean (*presend) (EMsgComposer *composer); 69 void (*print) (EMsgComposer *composer, 70 GtkPrintOperationAction print_action, 71 CamelMimeMessage *message, 72 EActivity *activity); 73 void (*save_to_drafts) (EMsgComposer *composer, 74 CamelMimeMessage *message, 75 EActivity *activity); 76 void (*save_to_outbox) (EMsgComposer *composer, 77 CamelMimeMessage *message, 78 EActivity *activity); 79 void (*send) (EMsgComposer *composer, 80 CamelMimeMessage *message, 81 EActivity *activity); 82 }; 83 84 GType e_msg_composer_get_type (void); 85 void e_msg_composer_new (EShell *shell, 86 GAsyncReadyCallback callback, 87 gpointer user_data); 88 EMsgComposer * e_msg_composer_new_finish (GAsyncResult *result, 89 GError **error); 90 void e_msg_composer_setup_with_message 91 (EMsgComposer *composer, 92 CamelMimeMessage *message, 93 gboolean keep_signature, 94 const gchar *override_identity_uid, 95 const gchar *override_alias_name, 96 const gchar *override_alias_address, 97 GCancellable *cancellable); 98 void e_msg_composer_setup_from_url (EMsgComposer *composer, 99 const gchar *url); 100 void e_msg_composer_setup_redirect (EMsgComposer *composer, 101 CamelMimeMessage *message, 102 const gchar *identity_uid, 103 const gchar *alias_name, 104 const gchar *alias_address, 105 GCancellable *cancellable); 106 EHTMLEditor * e_msg_composer_get_editor (EMsgComposer *composer); 107 EFocusTracker * e_msg_composer_get_focus_tracker 108 (EMsgComposer *composer); 109 CamelSession * e_msg_composer_ref_session (EMsgComposer *composer); 110 EShell * e_msg_composer_get_shell (EMsgComposer *composer); 111 112 EContentEditorContentHash * 113 e_msg_composer_get_content_hash (EMsgComposer *composer); 114 void e_msg_composer_send (EMsgComposer *composer); 115 void e_msg_composer_save_to_drafts (EMsgComposer *composer); 116 void e_msg_composer_save_to_outbox (EMsgComposer *composer); 117 void e_msg_composer_print (EMsgComposer *composer, 118 GtkPrintOperationAction print_action); 119 120 void e_msg_composer_set_body_text (EMsgComposer *composer, 121 const gchar *text, 122 gboolean update_signature); 123 void e_msg_composer_set_body (EMsgComposer *composer, 124 const gchar *body, 125 const gchar *mime_type); 126 void e_msg_composer_add_header (EMsgComposer *composer, 127 const gchar *name, 128 const gchar *value); 129 void e_msg_composer_set_header (EMsgComposer *composer, 130 const gchar *name, 131 const gchar *value); 132 const gchar * e_msg_composer_get_header (EMsgComposer *composer, 133 const gchar *name, 134 gint index); 135 void e_msg_composer_remove_header (EMsgComposer *composer, 136 const gchar *name); 137 void e_msg_composer_set_draft_headers 138 (EMsgComposer *composer, 139 const gchar *folder_uri, 140 const gchar *message_uid); 141 void e_msg_composer_set_source_headers 142 (EMsgComposer *composer, 143 const gchar *folder_uri, 144 const gchar *message_uid, 145 CamelMessageFlags flags); 146 void e_msg_composer_attach (EMsgComposer *composer, 147 CamelMimePart *mime_part); 148 void e_msg_composer_get_message (EMsgComposer *composer, 149 gint io_priority, 150 GCancellable *cancellable, 151 GAsyncReadyCallback callback, 152 gpointer user_data); 153 CamelMimeMessage * 154 e_msg_composer_get_message_finish 155 (EMsgComposer *composer, 156 GAsyncResult *result, 157 GError **error); 158 void e_msg_composer_get_message_print 159 (EMsgComposer *composer, 160 gint io_priority, 161 GCancellable *cancellable, 162 GAsyncReadyCallback callback, 163 gpointer user_data); 164 CamelMimeMessage * 165 e_msg_composer_get_message_print_finish 166 (EMsgComposer *composer, 167 GAsyncResult *result, 168 GError **error); 169 void e_msg_composer_get_message_draft 170 (EMsgComposer *composer, 171 gint io_priority, 172 GCancellable *cancellable, 173 GAsyncReadyCallback callback, 174 gpointer user_data); 175 CamelMimeMessage * 176 e_msg_composer_get_message_draft_finish 177 (EMsgComposer *composer, 178 GAsyncResult *result, 179 GError **error); 180 181 CamelInternetAddress * 182 e_msg_composer_get_from (EMsgComposer *composer); 183 CamelInternetAddress * 184 e_msg_composer_get_reply_to (EMsgComposer *composer); 185 186 void e_msg_composer_add_message_attachments 187 (EMsgComposer *composer, 188 CamelMimeMessage *message, 189 gboolean just_inlines); 190 void e_msg_composer_add_attachments_from_part_list 191 (EMsgComposer *composer, 192 EMailPartList *part_list, 193 gboolean just_inlines); 194 195 196 void e_msg_composer_request_close (EMsgComposer *composer); 197 gboolean e_msg_composer_can_close (EMsgComposer *composer, 198 gboolean can_save_draft); 199 200 EComposerHeaderTable * 201 e_msg_composer_get_header_table (EMsgComposer *composer); 202 EAttachmentView * 203 e_msg_composer_get_attachment_view 204 (EMsgComposer *composer); 205 GByteArray * e_msg_composer_get_raw_message_text_without_signature 206 (EMsgComposer *composer); 207 GByteArray * e_msg_composer_get_raw_message_text 208 (EMsgComposer *composer); 209 210 gboolean e_msg_composer_is_exiting (EMsgComposer *composer); 211 212 void e_save_spell_languages (const GList *spell_languages); 213 void e_msg_composer_save_focused_widget 214 (EMsgComposer *composer); 215 void e_msg_composer_restore_focus_on_composer 216 (EMsgComposer *composer); 217 gboolean e_msg_composer_is_busy (EMsgComposer *composer); 218 gboolean e_msg_composer_is_soft_busy (EMsgComposer *composer); 219 gboolean e_msg_composer_get_is_reply_or_forward 220 (EMsgComposer *composer); 221 void e_msg_composer_set_is_reply_or_forward 222 (EMsgComposer *composer, 223 gboolean is_reply_or_forward); 224 225 G_END_DECLS 226 227 #endif /* E_MSG_COMPOSER_H */ 228