+ g_warning ("Insert image operation is not supported");
+}
+
+void
+modest_msg_edit_window_attach_file (ModestMsgEditWindow *window)
+{
+ g_return_if_fail (MODEST_MSG_EDIT_WINDOW (window));
+
+ g_warning ("Attach file operation is not supported");
+}
+
+void
+modest_msg_edit_window_remove_attachments (ModestMsgEditWindow *window,
+ TnyList *att_list)
+{
+ ModestMsgEditWindowPrivate *priv;
+ TnyIterator *iter;
+
+ g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+
+ if (att_list == NULL) {
+ att_list = modest_attachments_view_get_selection (MODEST_ATTACHMENTS_VIEW (priv->attachments_view));
+ } else {
+ g_object_ref (att_list);
+ }
+
+ if (tny_list_get_length (att_list) == 0) {
+ modest_platform_information_banner (NULL, NULL, _("TODO: no attachments selected to remove"));
+ } else {
+ GtkWidget *confirmation_dialog = NULL;
+ gboolean dialog_response;
+ gchar *message = NULL;
+ gchar *filename = NULL;
+
+ if (tny_list_get_length (att_list) == 1) {
+ TnyMimePart *part;
+ iter = tny_list_create_iterator (att_list);
+ part = (TnyMimePart *) tny_iterator_get_current (iter);
+ g_object_unref (iter);
+ if (TNY_IS_MSG (part)) {
+ TnyHeader *header = tny_msg_get_header (TNY_MSG (part));
+ if (header) {
+ filename = tny_header_dup_subject (header);
+ g_object_unref (header);
+ }
+ if (filename == NULL) {
+ filename = g_strdup (_("mail_va_no_subject"));
+ }
+ } else {
+ filename = g_strdup (tny_mime_part_get_filename (TNY_MIME_PART (part)));
+ }
+ g_object_unref (part);
+ } else {
+ filename = g_strdup ("");
+ }
+ message = g_strdup_printf (ngettext("emev_nc_delete_attachment", "emev_nc_delete_attachments",
+ (tny_list_get_length (att_list) == 1)), filename);
+ g_free (filename);
+ confirmation_dialog = gtk_message_dialog_new (GTK_WINDOW (window),
+ GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_QUESTION,
+ GTK_BUTTONS_OK_CANCEL,
+ "%s", message);
+ g_free (message);
+ dialog_response = (gtk_dialog_run (GTK_DIALOG (confirmation_dialog))==GTK_RESPONSE_OK);
+ gtk_widget_destroy (confirmation_dialog);
+ if (!dialog_response) {
+ g_object_unref (att_list);
+ return;
+ }
+ modest_platform_information_banner (NULL, NULL, _("mcen_ib_removing_attachment"));
+
+ for (iter = tny_list_create_iterator (att_list);
+ !tny_iterator_is_done (iter);
+ tny_iterator_next (iter)) {
+ TnyMimePart *mime_part = (TnyMimePart *) tny_iterator_get_current (iter);
+ tny_list_remove (priv->attachments, (GObject *) mime_part);
+
+ modest_attachments_view_remove_attachment (MODEST_ATTACHMENTS_VIEW (priv->attachments_view),
+ mime_part);
+ gtk_text_buffer_set_modified (priv->text_buffer, TRUE);
+ g_object_unref (mime_part);
+ }
+ g_object_unref (iter);
+ }
+
+ g_object_unref (att_list);
+
+}
+
+void
+modest_msg_edit_window_get_parts_size (ModestMsgEditWindow *window,
+ gint *parts_count,
+ guint64 *parts_size)
+{
+ ModestMsgEditWindowPrivate *priv;
+
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+
+ modest_attachments_view_get_sizes (MODEST_ATTACHMENTS_VIEW (priv->attachments_view), parts_count, parts_size);
+
+}
+
+void
+modest_msg_edit_window_show_cc (ModestMsgEditWindow *window,
+ gboolean show)
+{
+ g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
+
+ g_warning ("not implemented yet %s", __FUNCTION__);
+}
+void
+modest_msg_edit_window_show_bcc (ModestMsgEditWindow *window,
+ gboolean show)
+{
+ g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
+
+ g_warning ("not implemented yet %s", __FUNCTION__);
+}
+void
+modest_msg_edit_window_undo (ModestMsgEditWindow *window)
+{
+ g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
+
+ g_warning ("not implemented yet %s", __FUNCTION__);
+}
+void
+modest_msg_edit_window_toggle_fullscreen (ModestMsgEditWindow *window)
+{
+ g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
+
+ g_warning ("not implemented yet %s", __FUNCTION__);
+}
+void
+modest_msg_edit_window_set_priority_flags (ModestMsgEditWindow *window,
+ TnyHeaderFlags priority_flags)
+{
+ ModestMsgEditWindowPrivate *priv;
+ ModestWindowPrivate *parent_priv;
+
+ g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
+
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+ parent_priv = MODEST_WINDOW_GET_PRIVATE (window);
+
+ if (priv->priority_flags != priority_flags) {
+ GtkAction *priority_action = NULL;
+
+ priv->priority_flags = priority_flags;
+
+ switch (priority_flags) {
+ case TNY_HEADER_FLAG_HIGH_PRIORITY:
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->priority_icon), "qgn_list_messaging_high", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (priv->priority_icon);
+ priority_action = gtk_ui_manager_get_action (parent_priv->ui_manager,
+ "/MenuBar/ToolsMenu/MessagePriorityMenu/MessagePriorityHighMenu");
+ break;
+ case TNY_HEADER_FLAG_LOW_PRIORITY:
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->priority_icon), "qgn_list_messaging_low", GTK_ICON_SIZE_MENU);
+ gtk_widget_show (priv->priority_icon);
+ priority_action = gtk_ui_manager_get_action (parent_priv->ui_manager,
+ "/MenuBar/ToolsMenu/MessagePriorityMenu/MessagePriorityLowMenu");
+ break;
+ default:
+ gtk_widget_hide (priv->priority_icon);
+ priority_action = gtk_ui_manager_get_action (parent_priv->ui_manager,
+ "/MenuBar/ToolsMenu/MessagePriorityMenu/MessagePriorityNormalMenu");
+ break;
+ }
+ gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (priority_action), TRUE);
+ gtk_text_buffer_set_modified (priv->text_buffer, TRUE);
+ }
+}
+
+void
+modest_msg_edit_window_select_contacts (ModestMsgEditWindow *window)
+{
+ g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
+
+ g_warning ("not implemented yet %s", __FUNCTION__);
+}
+
+gboolean
+modest_msg_edit_window_check_names (ModestMsgEditWindow *window, gboolean add_to_addressbook)
+{
+ g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window), FALSE);
+
+ g_warning ("not implemented yet %s", __FUNCTION__);
+ return TRUE;
+}
+
+void
+modest_msg_edit_window_set_file_format (ModestMsgEditWindow *window,
+ gint file_format)
+{
+ g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
+
+ g_warning ("not implemented yet %s", __FUNCTION__);
+}
+
+gboolean
+modest_msg_edit_window_get_sent (ModestMsgEditWindow *window)
+{
+ ModestMsgEditWindowPrivate *priv;
+
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(window);
+ return priv->sent;
+}
+
+void
+modest_msg_edit_window_set_sent (ModestMsgEditWindow *window,
+ gboolean sent)
+{
+ ModestMsgEditWindowPrivate *priv;
+
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE(window);
+ priv->sent = sent;
+}
+
+GtkWidget *
+modest_msg_edit_window_get_child_widget (ModestMsgEditWindow *win,
+ ModestMsgEditWindowWidgetType widget_type)
+{
+ ModestMsgEditWindowPrivate *priv;
+
+ g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (win), NULL);
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (win);
+
+ switch (widget_type) {
+ case MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_BODY:
+ return priv->msg_body;
+ break;
+ case MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_TO:
+ return priv->to_field;
+ break;
+ case MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_CC:
+ return priv->cc_field;
+ break;
+ case MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_BCC:
+ return priv->bcc_field;
+ break;
+ case MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_SUBJECT:
+ return priv->subject_field;
+ break;
+ case MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_ATTACHMENTS:
+ return priv->attachments_view;
+ break;
+ default:
+ return NULL;
+ }
+ return NULL;
+}
+
+/* FUNCTIONS NOT IMPLEMENTED YET */
+
+void
+modest_msg_edit_window_set_modified (ModestMsgEditWindow *window,
+ gboolean modified)
+{
+ ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+ GtkTextBuffer *buffer;
+
+ buffer = modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR(priv->to_field));
+ gtk_text_buffer_set_modified (buffer, modified);
+ buffer = modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR(priv->cc_field));
+ gtk_text_buffer_set_modified (buffer, modified);
+ buffer = modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR(priv->bcc_field));
+ gtk_text_buffer_set_modified (buffer, modified);
+ gtk_text_buffer_set_modified (priv->text_buffer, modified);
+}
+
+void
+modest_msg_edit_window_toggle_find_toolbar (ModestMsgEditWindow *window,
+ gboolean show)
+{
+ g_warning ("NOT IMPLEMENTED %s", __FUNCTION__);
+}
+
+void
+modest_msg_edit_window_add_part (ModestMsgEditWindow *window,
+ TnyMimePart *part)
+{
+ ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+
+ g_return_if_fail (TNY_IS_MIME_PART (part));
+ tny_list_prepend (priv->attachments, (GObject *) part);
+ modest_attachments_view_add_attachment (MODEST_ATTACHMENTS_VIEW (priv->attachments_view), part, TRUE, 0);
+}
+
+void
+modest_msg_edit_window_redo (ModestMsgEditWindow *window)
+{
+ g_warning ("NOT IMPLEMENTED %s", __FUNCTION__);
+}
+
+void
+modest_msg_edit_window_offer_attach_file (ModestMsgEditWindow *window)
+{
+ GtkWidget *dialog = NULL;
+ gint response = 0;
+ GSList *uris = NULL;
+ GSList *uri_node;
+
+ dialog = gtk_file_chooser_dialog_new (_("mcen_ti_select_attachment_title"),
+ GTK_WINDOW (window),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_OPEN,
+ GTK_RESPONSE_OK,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL,
+ NULL);
+
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
+ switch (response) {
+ case GTK_RESPONSE_OK:
+ uris = gtk_file_chooser_get_uris (GTK_FILE_CHOOSER (dialog));
+ break;
+ default:
+ break;
+ }
+ gtk_widget_destroy (dialog);
+
+ for (uri_node = uris; uri_node != NULL; uri_node = g_slist_next (uri_node)) {
+ const gchar *uri = (const gchar *) uri_node->data;
+ modest_msg_edit_window_attach_file_one (window, uri, MODEST_MAX_ATTACHMENT_SIZE);
+ }
+ g_slist_foreach (uris, (GFunc) g_free, NULL);
+ g_slist_free (uris);
+}
+
+GnomeVFSFileSize
+modest_msg_edit_window_attach_file_one (ModestMsgEditWindow *window,
+ const gchar *uri,
+ GnomeVFSFileSize allowed_size)
+{
+ GnomeVFSHandle *handle = NULL;
+ ModestMsgEditWindowPrivate *priv;
+ GnomeVFSResult result;
+
+ g_return_val_if_fail (window, 0);
+ g_return_val_if_fail (uri, 0);
+
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+
+ result = gnome_vfs_open (&handle, uri, GNOME_VFS_OPEN_READ);
+ if (result == GNOME_VFS_OK) {
+ TnyMimePart *mime_part;
+ TnyStream *stream;
+ const gchar *mime_type = NULL;
+ gchar *basename;
+ gchar *escaped_filename;
+ gchar *filename;
+ gchar *content_id;
+ GnomeVFSFileInfo *info;
+ GnomeVFSURI *vfs_uri;
+
+ vfs_uri = gnome_vfs_uri_new (uri);
+
+ escaped_filename = g_path_get_basename (gnome_vfs_uri_get_path (vfs_uri));
+ filename = gnome_vfs_unescape_string_for_display (escaped_filename);
+ g_free (escaped_filename);
+ gnome_vfs_uri_unref (vfs_uri);
+
+ info = gnome_vfs_file_info_new ();
+
+ if (gnome_vfs_get_file_info (uri,
+ info,
+ GNOME_VFS_FILE_INFO_GET_MIME_TYPE)
+ == GNOME_VFS_OK)
+ mime_type = gnome_vfs_file_info_get_mime_type (info);
+ mime_part = tny_platform_factory_new_mime_part
+ (modest_runtime_get_platform_factory ());
+ stream = TNY_STREAM (tny_vfs_stream_new (handle));
+
+ tny_mime_part_construct (mime_part, stream, mime_type, "base64");
+
+ g_object_unref (stream);
+
+ content_id = g_strdup_printf ("%d", priv->next_cid);
+ tny_mime_part_set_content_id (mime_part, content_id);
+ g_free (content_id);
+ priv->next_cid++;
+
+ basename = g_path_get_basename (filename);
+ tny_mime_part_set_filename (mime_part, basename);
+ g_free (basename);
+
+ tny_list_prepend (priv->attachments, (GObject *) mime_part);
+ modest_attachments_view_add_attachment (MODEST_ATTACHMENTS_VIEW (priv->attachments_view),
+ mime_part,
+ info->size == 0, info->size);
+ gtk_text_buffer_set_modified (priv->text_buffer, TRUE);
+ g_free (filename);
+ g_object_unref (mime_part);
+ gnome_vfs_file_info_unref (info);
+ }
+ /* TODO: return proper file size */
+ return 0;
+}
+
+void
+modest_msg_edit_window_set_draft (ModestMsgEditWindow *window,
+ TnyMsg *draft)
+{
+ ModestMsgEditWindowPrivate *priv;
+ TnyHeader *header = NULL;
+
+ g_return_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window));
+ g_return_if_fail ((draft == NULL)||(TNY_IS_MSG (draft)));
+
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+ ModestWindowMgr *mgr = modest_runtime_get_window_mgr ();
+
+ if (priv->draft_msg != NULL) {
+ g_object_unref (priv->draft_msg);
+ }
+
+ if (draft != NULL) {
+ g_object_ref (draft);
+ header = tny_msg_get_header (draft);
+ if (priv->msg_uid) {
+ g_free (priv->msg_uid);
+ priv->msg_uid = NULL;
+ }
+ priv->msg_uid = modest_tny_folder_get_header_unique_id (header);
+ if (GTK_WIDGET_REALIZED (window))
+ modest_window_mgr_register_window (mgr, MODEST_WINDOW (window), NULL);
+ }
+
+ priv->draft_msg = draft;
+}
+
+gboolean
+modest_msg_edit_window_is_modified (ModestMsgEditWindow *window)
+{
+ ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+ const char *account_name;
+ GtkTextBuffer *buffer;
+
+ buffer = modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR(priv->to_field));
+ if (gtk_text_buffer_get_modified (buffer))
+ return TRUE;
+ buffer = modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR(priv->cc_field));
+ if (gtk_text_buffer_get_modified (buffer))
+ return TRUE;
+ buffer = modest_recpt_editor_get_buffer (MODEST_RECPT_EDITOR(priv->bcc_field));
+ if (gtk_text_buffer_get_modified (buffer))
+ return TRUE;
+ if (gtk_text_buffer_get_modified (priv->text_buffer))
+ return TRUE;
+ account_name = modest_combo_box_get_active_id (MODEST_COMBO_BOX (priv->from_field));
+ if (!priv->original_account_name || strcmp(account_name, priv->original_account_name)) {
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+const gchar *
+modest_msg_edit_window_get_clipboard_text (ModestMsgEditWindow *win)
+{
+ g_warning ("NOT IMPLEMENTED %s", __FUNCTION__);
+ return NULL;
+}
+
+const gchar*
+modest_msg_edit_window_get_message_uid (ModestMsgEditWindow *window)
+{
+ ModestMsgEditWindowPrivate *priv;
+
+ g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window), NULL);
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+
+ return priv->msg_uid;