X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-msg-edit-window.h;h=c24e30af71e971523348b125b9c555423e2c1e08;hp=b657e9eb60ced10ec86c86dae86d7b51ec1f3c9b;hb=e374da56f67092cecb1572dd4bee2ca34e0bc04c;hpb=8885ff625adf8c47b51e306b1d9a9ae4c8bb8d67 diff --git a/src/widgets/modest-msg-edit-window.h b/src/widgets/modest-msg-edit-window.h index b657e9e..c24e30a 100644 --- a/src/widgets/modest-msg-edit-window.h +++ b/src/widgets/modest-msg-edit-window.h @@ -31,6 +31,7 @@ #define __MODEST_MSG_EDIT_WINDOW_H__ #include +#include #include G_BEGIN_DECLS @@ -61,15 +62,47 @@ typedef enum { MODEST_EDIT_TYPE_NEW, MODEST_EDIT_TYPE_REPLY, MODEST_EDIT_TYPE_FORWARD, - MODEST_EDIT_TYPE_VIEW, MODEST_EDIT_TYPE_NUM } ModestEditType; -typedef struct _MsgData { - gchar *from, *to, *cc, *bcc, *subject, *body; +typedef enum { + MODEST_MSG_EDIT_FORMAT_TEXT, + MODEST_MSG_EDIT_FORMAT_HTML +} ModestMsgEditFormat; + +typedef enum { + MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_BODY, + MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_TO, + MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_CC, + MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_BCC, + MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_SUBJECT, + MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_ATTACHMENTS, + MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_NUM, +} ModestMsgEditWindowWidgetType; + +/** Get these with modest_msg_edit_window_get_msg_data() + * and free them with modest_msg_edit_window_free_msg_data(). + */ +typedef struct { + gchar *from, *to, *cc, *bcc, *subject, *plain_body, *html_body; + GList *attachments; + GList *images; + TnyHeaderFlags priority_flags; + TnyMsg *draft_msg; + gchar *account_name; } MsgData; +typedef struct { + gboolean bold; + gboolean italics; + gboolean bullet; + GdkColor color; + const gchar *font_family; + gint font_size; + GtkJustification justification; +} ModestMsgEditFormatState; + /** * modest_msg_edit_window_get_type: @@ -83,23 +116,17 @@ GType modest_msg_edit_window_get_type (void) G_GNUC_CONST; /** * modest_msg_edit_window_new: + * @msg: a #TnyMsg instance + * @account_name: the account this message applies to + * @preserve_is_rich: if @msg is not rich, open the message as plain text * * instantiates a new #ModestMsgEditWindow widget * * Returns: a new #ModestMsgEditWindow, or NULL in case of error */ -ModestWindow* modest_msg_edit_window_new (ModestEditType type); - - -/** - * modest_msg_edit_window_set_msg: - * @self: a #ModestMsgEditWindow - * @msg: a #TnyMsg - * - * shows the message @msg in a #ModestMsgEditWindow - **/ -void modest_msg_edit_window_set_msg (ModestMsgEditWindow *self, - TnyMsg *msg); +ModestWindow* modest_msg_edit_window_new (TnyMsg *msg, + const gchar *account_name, + gboolean preserve_is_rich); /** @@ -123,7 +150,310 @@ MsgData * modest_msg_edit_window_get_msg_data (ModestMsgE **/ void modest_msg_edit_window_free_msg_data (ModestMsgEditWindow *self, MsgData *data); + +/** + * modest_msg_edit_window_get_format: + * @self: a #ModestMsgEditWindow + * + * obtains the format type of the message body. + * + * Returns: a #ModestMsgEditFormat + **/ +ModestMsgEditFormat modest_msg_edit_window_get_format (ModestMsgEditWindow *self); + +/** + * modest_msg_edit_window_set_format: + * @self: a #ModestMsgEditWindow + * @format: a #ModestMsgEditFormat + * + * set the @format of the edit window message body. + **/ +void modest_msg_edit_window_set_format (ModestMsgEditWindow *self, + ModestMsgEditFormat format); + +/** + * modest_msg_edit_window_get_format_state: + * @self: a #ModestMsgEditWindow + * + * get the current format state (the format attributes the text user inserts + * will get). + * + * Returns: a #ModestMsgEditFormatState structure that should be freed with g_free(). + **/ +ModestMsgEditFormatState *modest_msg_edit_window_get_format_state (ModestMsgEditWindow *self); + +/** + * modest_msg_edit_window_set_format_state: + * @self: a #ModestMsgEditWindow + * @format_state: a #ModestMsgEditWindowFormatState + * + * sets a new format state (the format attributes the text user inserts + * will get). + **/ +void modest_msg_edit_window_set_format_state (ModestMsgEditWindow *self, + const ModestMsgEditFormatState *format_state); + +/** + * modest_msg_edit_window_select_color: + * @self: a #ModestMsgEditWindow + * + * show color selection dialog and update text color + */ +void modest_msg_edit_window_select_color (ModestMsgEditWindow *window); + +/** + * modest_msg_edit_window_select_background_color: + * @self: a #ModestMsgEditWindow + * + * show color selection dialog and update background color + */ +void modest_msg_edit_window_select_background_color (ModestMsgEditWindow *window); + +/** + * modest_msg_edit_window_insert_image: + * @self: a #ModestMsgEditWindow + * + * show a file selection dialog to insert an image + */ +void modest_msg_edit_window_insert_image (ModestMsgEditWindow *window); + +/** + * modest_msg_edit_window_offer_attach_file: + * @self: a #ModestMsgEditWindow + * + * show a file selection dialog to attach a file + */ +void modest_msg_edit_window_offer_attach_file (ModestMsgEditWindow *window); + +/** + * modest_msg_edit_window_attach_file_one: + * @self: a #ModestMsgEditWindow + * @file_uri: The URI of a file to attach to the email message. + * @allowed_size: max size allowed for this attachment, 0 for unlimited + * + * attach a file to a MsgEditWindow non interactively, + * without file dialog. This is needed by dbus callbacks. + * + * Returns: the filesize (if available) + */ +GnomeVFSFileSize modest_msg_edit_window_attach_file_one (ModestMsgEditWindow *window, const gchar *file_uri, GnomeVFSFileSize allowed_size); + +/** + * modest_msg_edit_window_remove_attachments: + * @self: a #ModestMsgEditWindow + * @att_list: a #GList of #TnyMimePart + * + * remove attachments in @att_list, with a confirmation dialog + */ +void modest_msg_edit_window_remove_attachments (ModestMsgEditWindow *window, + TnyList *att_list); + +/** + * modest_msg_edit_window_get_parts_size: + * @window: a #ModestMsgEditWindow + * @parts_count: number of attachments and images attached to the message + * @parts_size: sum of sizes of attachments and images + */ +void modest_msg_edit_window_get_parts_size (ModestMsgEditWindow *window, + gint *parts_count, + guint64 *parts_size); +/** + * modest_msg_edit_window_add_part: + * @self: a #ModestMsgEditWindow + * @part: a #TnyMimePart + * + * Adds @part as an attachment + */ +void modest_msg_edit_window_add_part (ModestMsgEditWindow *window, + TnyMimePart *part); + +/** + * modest_msg_edit_window_show_cc: + * @window: a #ModestMsgEditWindow + * @show: a #gboolean + * + * Set the CC field as visible (or not visible) depending on @show + */ +void modest_msg_edit_window_show_cc (ModestMsgEditWindow *window, gboolean show); + +/** + * modest_msg_edit_window_show_bcc: + * @window: a #ModestMsgEditWindow + * @show: a #gboolean + * + * Set the BCC field as visible (or not visible) depending on @show + */ +void modest_msg_edit_window_show_bcc (ModestMsgEditWindow *window, gboolean show); + +/** + * modest_msg_edit_window_set_priority_flags: + * @window: a #ModestMsgEditWindow + * @priority_flags: a #TnyHeaderFlags with priority information + * + * Updates the icon and priority flag to send. + */ +void modest_msg_edit_window_set_priority_flags (ModestMsgEditWindow *window, + TnyHeaderFlags priority_flags); + +/** + * modest_msg_edit_window_set_file_format: + * @window: a #ModestMsgEditWindow + * @file_format: %MODEST_FILE_FORMAT_PLAIN_TEXT or %MODEST_FILE_FORMAT_FORMATTED_TEXT + * + * Changes the current file format. + */ +void modest_msg_edit_window_set_file_format (ModestMsgEditWindow *window, + gint file_format); + +/** + * modest_msg_edit_window_select_font: + * @window: a #ModestMsgEditWindow + * + * Show the dialog to select the editor font and update the + * used font in the editor. + */ +void modest_msg_edit_window_select_font (ModestMsgEditWindow *window); + +/** + * modest_msg_edit_window_undo: + * @window: a #ModestMsgEditWindow + * + * Undoes the last operation. + */ +void modest_msg_edit_window_undo (ModestMsgEditWindow *window); + +/** + * modest_msg_edit_window_can_undo: + * @window: a #ModestMsgEditWindow + * + * Checks if an undo operation is available + * + * Returns: %TRUE if undo can be done, %FALSE otherwise. + */ +gboolean modest_msg_edit_window_can_undo (ModestMsgEditWindow *window); + +/** + * modest_msg_edit_window_redo: + * @window: a #ModestMsgEditWindow + * + * Revert last undo + */ +void modest_msg_edit_window_redo (ModestMsgEditWindow *window); + +/** + * modest_msg_edit_window_can_redo: + * @window: a #ModestMsgEditWindow + * + * Checks if a redp operation is available + * + * Returns: %TRUE if redo can be done, %FALSE otherwise. + */ +gboolean modest_msg_edit_window_can_redo (ModestMsgEditWindow *window); + +/** + * modest_msg_edit_window_select_contacts: + * @window: a #ModestMsgEditWindow + * + * Shows the dialog to add contacts to the currently focused recipient list, + * or to To: recipient if no recipient list is focused. + */ +void modest_msg_edit_window_select_contacts (ModestMsgEditWindow *window); + +/** + * modest_msg_edit_window_check_names: + * @window: a #ModestMsgEditWindow + * @add_to_addressbook: if TRUE, add valid addresses to the addressbook + * + * Validates all the recipients, and shows (if required) dialogs for adding contacts + * or fixing problems in specific fields. + * + * Returns: %TRUE if all fields were validated, %FALSE otherwise + */ +gboolean modest_msg_edit_window_check_names (ModestMsgEditWindow *window, + gboolean add_to_addressbook); + +/** + * modest_msg_edit_window_toggle_find_toolbar: + * @window: a #ModestMsgEditWindow + * @show: a #gboolean + * + * Shows/Hides the find toolbar + */ +void modest_msg_edit_window_toggle_find_toolbar (ModestMsgEditWindow *window, + gboolean show); + + +/** + * modest_msg_edit_window_is_modified: + * @window: a #ModestMsgEditWindow + * + * Examines whether or not the message has been modified + * + * Returns: %TRUE if any field has been modified, %FALSE otherwise + */ +gboolean modest_msg_edit_window_is_modified (ModestMsgEditWindow *window); + +/** + * modest_msg_edit_window_reset_modified: + * @window: a #ModestMsgEditWindow + * @modified: wheter or not we want to make the buffer as modified or not + * + * Sets the message as modified or not + */ +void modest_msg_edit_window_set_modified (ModestMsgEditWindow *window, + gboolean modified); + + +gboolean modest_msg_edit_window_get_sent (ModestMsgEditWindow *window); +void modest_msg_edit_window_set_sent (ModestMsgEditWindow *window, + gboolean sent); + +/** + * modest_msg_edit_window_set_draft: + * @window: a #ModestMsgEditWindow + * @draft: a #TnyMsg, or %NULL + * + * Set @draft as the original draft message of the editor. This + * message will be removed on saving or sending the message. + */ +void modest_msg_edit_window_set_draft (ModestMsgEditWindow *window, + TnyMsg *draft); +/** + * modest_msg_edit_window_get_message_uid: + * @msg: an #ModestMsgEditWindow instance + * + * gets the unique identifier for the message in this msg editor. + * This is the identifier of the draft or outbox message the editor was + * opened from. If it's a new message, then it returns %NULL + * + * Returns: the id of the #TnyMsg being shown, or NULL in case of error + */ +const gchar* modest_msg_edit_window_get_message_uid (ModestMsgEditWindow *window); + +/** + * modest_msg_edit_window_get_child_widget: + * @win: a #ModestMsgEditWindow + * @widget_type: the type of the child to obtain + * + * Obtain the child widget of @win of type @widget_type + * + * Returns: a #GtkWidget, or %NULL + */ +GtkWidget * +modest_msg_edit_window_get_child_widget (ModestMsgEditWindow *win, + ModestMsgEditWindowWidgetType widget_type); + +/** + * modest_msg_edit_window_get_clipboard_text: + * @win: a #ModestMsgEditWindow + * + * Obtains the currently selected text in selection clipboard + * + * Returns: a string + */ +const gchar * +modest_msg_edit_window_get_clipboard_text (ModestMsgEditWindow *win); + G_END_DECLS #endif /* __MODEST_MSG_EDIT_WINDOW_H__ */ -