1 /* Copyright (c) 2006, Nokia Corporation
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * * Neither the name of the Nokia Corporation nor the names of its
14 * contributors may be used to endorse or promote products derived from
15 * this software without specific prior written permission.
17 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
18 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
19 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
20 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
21 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
24 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
25 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
26 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 #endif /*HAVE_CONFIG_H*/
35 #include "modest-ui-dimming-rules.h"
36 #include "modest-dimming-rule.h"
37 #include "modest-tny-folder.h"
38 #include <modest-runtime.h>
41 static gboolean _folder_is_any_of_type (TnyFolder *folder, TnyFolderType types[], guint ntypes);
42 static gboolean _invalid_msg_selected (ModestMainWindow *win, gboolean unique, ModestDimmingRule *rule);
43 static gboolean _already_opened_msg (ModestWindow *win);
44 static gboolean _selected_msg_marked_as (ModestWindow *win, TnyHeaderFlags mask, gboolean opposite);
45 static gboolean _selected_folder_not_writeable (ModestMainWindow *win);
46 static gboolean _selected_folder_is_any_of_type (ModestMainWindow *win, TnyFolderType types[], guint ntypes);
47 static gboolean _selected_folder_is_root (ModestMainWindow *win);
48 static gboolean _selected_folder_is_empty (ModestMainWindow *win);
49 static gboolean _msg_download_in_progress (ModestMsgViewWindow *win);
50 static gboolean _msg_sent_in_progress (ModestWindow *win);
54 modest_ui_dimming_rules_on_new_msg (ModestWindow *win, gpointer user_data)
56 gboolean dimmed = FALSE;
58 g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW(win), FALSE);
60 /* Check dimmed rule */
62 dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win));
68 modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data)
70 gboolean dimmed = FALSE;
71 GtkWidget *folder_view = NULL;
72 TnyFolderStore *parent_folder = NULL;
74 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
77 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
78 MODEST_WIDGET_TYPE_FOLDER_VIEW);
79 /* Get selected folder as parent of new folder to create */
80 parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
84 if (TNY_IS_ACCOUNT (parent_folder)) {
85 /* If it's the local account then do not dim */
86 if (modest_tny_account_is_virtual_local_folders (
87 TNY_ACCOUNT (parent_folder)))
90 /* If it's the MMC root folder then dim it */
91 if (!strcmp (tny_account_get_id (TNY_ACCOUNT (parent_folder)), MODEST_MMC_ACCOUNT_ID)) {
94 const gchar *proto_str = tny_account_get_proto (TNY_ACCOUNT (parent_folder));
95 /* If it's POP then dim */
96 dimmed = (modest_protocol_info_get_transport_store_protocol (proto_str) ==
97 MODEST_PROTOCOL_STORE_POP) ? TRUE : FALSE;
101 /* TODO: the specs say that only one level of subfolder is allowed, is this true ? */
103 /* Apply folder rules */
104 dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win));
111 modest_ui_dimming_rules_on_delete_folder (ModestWindow *win, gpointer user_data)
113 gboolean dimmed = FALSE;
115 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
117 /* Check dimmed rule */
119 dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win));
121 dimmed = _selected_folder_is_root (MODEST_MAIN_WINDOW(win));
127 modest_ui_dimming_rules_on_rename_folder (ModestWindow *win, gpointer user_data)
129 gboolean dimmed = FALSE;
131 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
133 /* Check dimmed rule */
135 dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win));
137 dimmed = _selected_folder_is_root (MODEST_MAIN_WINDOW(win));
143 modest_ui_dimming_rules_on_open_msg (ModestWindow *win, gpointer user_data)
145 ModestDimmingRule *rule = NULL;
146 gboolean dimmed = FALSE;
148 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
149 g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
150 rule = MODEST_DIMMING_RULE (user_data);
152 /* Check dimmed rule */
154 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE, user_data);
156 dimmed = _msg_sent_in_progress (win);
157 modest_dimming_rule_set_notification (rule, _("TEST"));
164 modest_ui_dimming_rules_on_reply_msg (ModestWindow *win, gpointer user_data)
166 ModestDimmingRule *rule = NULL;
167 gboolean dimmed = FALSE;
168 TnyFolderType types[3];
170 g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
171 rule = MODEST_DIMMING_RULE (user_data);
173 /* main window dimming rules */
174 if (MODEST_IS_MAIN_WINDOW(win)) {
176 types[0] = TNY_FOLDER_TYPE_DRAFTS;
177 types[1] = TNY_FOLDER_TYPE_OUTBOX;
178 types[2] = TNY_FOLDER_TYPE_ROOT;
180 /* Check dimmed rule */
182 dimmed = _selected_folder_is_any_of_type (MODEST_MAIN_WINDOW(win), types, 3);
183 modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_reply"));
186 dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));
187 modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_reply"));
190 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE, rule);
192 /* msg view window dimming rules */
193 } else if (MODEST_IS_MSG_VIEW_WINDOW(win)) {
195 /* Check dimmed rule */
197 dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win));
205 modest_ui_dimming_rules_on_contents_msg (ModestWindow *win, gpointer user_data)
207 gboolean dimmed = FALSE;
209 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
211 /* Check dimmed rule */
212 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
218 modest_ui_dimming_rules_always_dimmed (ModestWindow *win, gpointer user_data)
220 gboolean dimmed = FALSE;
222 g_return_val_if_fail (MODEST_IS_WINDOW(win), FALSE);
224 /* Check dimmed rule */
232 modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data)
234 ModestDimmingRule *rule = NULL;
235 gboolean dimmed = FALSE;
237 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
238 g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
239 rule = MODEST_DIMMING_RULE (user_data);
241 /* Check dimmed rule */
243 dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));
244 modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_del"));
247 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
248 modest_dimming_rule_set_notification (rule, _("mcen_ib_no_message_selected"));
251 dimmed = _already_opened_msg (win);
252 modest_dimming_rule_set_notification (rule, _("mcen_nc_unable_to_delete_n_messages"));
259 modest_ui_dimming_rules_on_details (ModestWindow *win, gpointer user_data)
261 gboolean dimmed = FALSE;
262 GtkWidget *header_view = NULL;
264 /* main window dimming rules */
265 if (MODEST_IS_MAIN_WINDOW(win)) {
267 /* Check dimmed rule */
268 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
269 MODEST_WIDGET_TYPE_HEADER_VIEW);
271 /* If the header view does not have the focus then do
272 not apply msg dimming rules because the action will
273 show the folder details that have no dimming
275 if (gtk_widget_is_focus (header_view)) {
276 /* Check dimmed rule */
278 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE, user_data);
281 /* msg view window dimming rules */
284 /* Check dimmed rule */
286 dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win));
293 modest_ui_dimming_rules_on_mark_as_read_msg (ModestWindow *win, gpointer user_data)
295 gboolean dimmed = FALSE;
296 TnyHeaderFlags flags;
298 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
300 flags = TNY_HEADER_FLAG_SEEN;
302 /* Check dimmed rule */
304 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
306 dimmed = _selected_msg_marked_as (win, flags, FALSE);
312 modest_ui_dimming_rules_on_mark_as_unread_msg (ModestWindow *win, gpointer user_data)
314 gboolean dimmed = FALSE;
315 TnyHeaderFlags flags;
317 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
319 flags = TNY_HEADER_FLAG_SEEN;
321 /* Check dimmed rule */
323 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
325 dimmed = _selected_msg_marked_as (win, flags, TRUE);
331 modest_ui_dimming_rules_on_move_to (ModestWindow *win, gpointer user_data)
333 gboolean dimmed = FALSE;
335 if (MODEST_IS_MAIN_WINDOW (win))
336 dimmed = modest_ui_dimming_rules_on_main_window_move_to (win, user_data);
338 dimmed = modest_ui_dimming_rules_on_view_window_move_to (win, user_data);
345 modest_ui_dimming_rules_on_main_window_move_to (ModestWindow *win, gpointer user_data)
347 GtkWidget *folder_view = NULL;
348 GtkWidget *header_view = NULL;
349 gboolean dimmed = FALSE;
351 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), TRUE);
353 /* Get the folder view */
354 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
355 MODEST_WIDGET_TYPE_FOLDER_VIEW);
357 /* Get header view */
358 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
359 MODEST_WIDGET_TYPE_HEADER_VIEW);
361 /* Check common diming rules */
363 /* Check diming rules for folder transfer */
364 if (gtk_widget_is_focus (folder_view)) {
366 dimmed = _selected_folder_not_writeable(MODEST_MAIN_WINDOW(win));
368 /* Check diming rules for msg transfer */
369 else if (gtk_widget_is_focus (header_view)) {
371 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
379 modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user_data)
381 gboolean dimmed = FALSE;
387 modest_ui_dimming_rules_on_paste_msgs (ModestWindow *win, gpointer user_data)
389 TnyFolderType types[3];
390 gboolean dimmed = FALSE;
392 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
394 types[0] = TNY_FOLDER_TYPE_DRAFTS;
395 types[1] = TNY_FOLDER_TYPE_OUTBOX;
396 types[2] = TNY_FOLDER_TYPE_SENT;
398 /* Check dimmed rule */
400 dimmed = _selected_folder_is_any_of_type (MODEST_MAIN_WINDOW(win), types, 3);
406 modest_ui_dimming_rules_on_delete_msgs (ModestWindow *win, gpointer user_data)
408 TnyFolderType types[5];
409 gboolean dimmed = FALSE;
411 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
413 types[0] = TNY_FOLDER_TYPE_DRAFTS;
414 types[1] = TNY_FOLDER_TYPE_OUTBOX;
415 types[2] = TNY_FOLDER_TYPE_SENT;
416 types[3] = TNY_FOLDER_TYPE_INBOX;
417 types[4] = TNY_FOLDER_TYPE_ROOT;
419 /* Check dimmed rule */
421 dimmed = _selected_folder_is_any_of_type (MODEST_MAIN_WINDOW(win), types, 5);
427 /* *********************** static utility functions ******************** */
430 _selected_folder_not_writeable (ModestMainWindow *win)
432 GtkWidget *folder_view = NULL;
433 TnyFolderStore *parent_folder = NULL;
434 ModestTnyFolderRules rules;
435 gboolean result = FALSE;
437 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
439 /* Get folder view */
440 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
441 MODEST_WIDGET_TYPE_FOLDER_VIEW);
442 /* If no folder view, always dimmed */
446 /* Get selected folder as parent of new folder to create */
447 parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
448 if (!(parent_folder && TNY_IS_FOLDER(parent_folder)))
451 /* Check dimmed rule */
452 rules = modest_tny_folder_get_rules (TNY_FOLDER (parent_folder));
453 result = rules & MODEST_FOLDER_RULES_FOLDER_NON_WRITEABLE;
456 g_object_unref (parent_folder);
462 _selected_folder_is_root (ModestMainWindow *win)
464 TnyFolderType types[2];
465 gboolean result = FALSE;
467 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
469 types[0] = TNY_FOLDER_TYPE_ROOT;
470 types[1] = TNY_FOLDER_TYPE_INBOX;
472 /* Check folder type */
473 result = _selected_folder_is_any_of_type (win, types, 2);
480 _selected_folder_is_empty (ModestMainWindow *win)
482 GtkWidget *folder_view = NULL;
483 TnyFolderStore *folder = NULL;
484 gboolean result = FALSE;
486 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
488 /* Get folder view */
489 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
490 MODEST_WIDGET_TYPE_FOLDER_VIEW);
491 /* If no folder view, always dimmed */
495 /* Get selected folder as parent of new folder to create */
496 folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
497 if (!(folder && TNY_IS_FOLDER(folder)))
500 /* Check folder type */
501 result = tny_folder_get_all_count (TNY_FOLDER (folder)) == 0;
504 g_object_unref (folder);
510 _selected_folder_is_any_of_type (ModestMainWindow *win,
511 TnyFolderType types[],
514 GtkWidget *folder_view = NULL;
515 TnyFolderStore *folder = NULL;
516 gboolean result = FALSE;
518 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
520 /* Get folder view */
521 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
522 MODEST_WIDGET_TYPE_FOLDER_VIEW);
523 /* If no folder view, always dimmed */
527 /* Get selected folder as parent of new folder to create */
528 folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
529 if (!(folder && TNY_IS_FOLDER(folder)))
532 /* Check folder type */
533 result = _folder_is_any_of_type (TNY_FOLDER(folder), types, ntypes);
536 g_object_unref (folder);
542 _folder_is_any_of_type (TnyFolder *folder,
543 TnyFolderType types[],
546 TnyFolderType folder_type;
547 gboolean result = FALSE;
550 g_return_val_if_fail (TNY_IS_FOLDER(folder), FALSE);
552 /* Get folder type */
553 if (modest_tny_folder_is_local_folder (folder))
554 folder_type = modest_tny_folder_get_local_folder_type (folder);
556 folder_type = modest_tny_folder_guess_folder_type (folder);
558 /* Check foler type */
559 for (i=0; i < ntypes; i++) {
560 result = result || folder_type == types[i];
569 _invalid_msg_selected (ModestMainWindow *win,
571 ModestDimmingRule *rule)
573 GtkWidget *header_view = NULL;
574 GtkWidget *folder_view = NULL;
575 TnyList *selected_headers = NULL;
576 gboolean result = FALSE;
578 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
579 g_return_val_if_fail (MODEST_IS_DIMMING_RULE (rule), FALSE);
581 /* Get header view to check selected messages */
582 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
583 MODEST_WIDGET_TYPE_HEADER_VIEW);
585 /* Get folder view to check focus */
586 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
587 MODEST_WIDGET_TYPE_FOLDER_VIEW);
589 /* Get selected headers */
590 selected_headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
592 /* Check dimmed rule (TODO: check focus on widgets */
594 result = ((selected_headers == NULL) ||
595 (GTK_WIDGET_HAS_FOCUS (folder_view)));
596 modest_dimming_rule_set_notification (rule, _("mcen_ib_no_message_selected"));
599 result = tny_list_get_length (selected_headers) > 1;
600 modest_dimming_rule_set_notification (rule, _("mcen_ib_select_one_message"));
604 if (selected_headers != NULL)
605 g_object_unref (selected_headers);
611 _already_opened_msg (ModestWindow *win)
613 ModestWindow *window = NULL;
614 ModestWindowMgr *mgr = NULL;
615 GtkWidget *header_view = NULL;
616 TnyList *selected_headers = NULL;
617 TnyIterator *iter = NULL;
618 TnyHeader *header = NULL;
619 gboolean result = TRUE;
621 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
623 /* Get header view to check selected messages */
624 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
625 MODEST_WIDGET_TYPE_HEADER_VIEW);
627 /* Get selected headers */
628 selected_headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
629 if (selected_headers == NULL)
632 /* Check dimmed rule (TODO: check focus on widgets */
633 mgr = modest_runtime_get_window_mgr ();
634 iter = tny_list_create_iterator (selected_headers);
635 while (!tny_iterator_is_done (iter) && result) {
636 header = TNY_HEADER (tny_iterator_get_current (iter));
637 window = modest_window_mgr_find_window_by_header (mgr, header);
638 result = result && (window != NULL);
640 g_object_unref (header);
641 tny_iterator_next (iter);
645 if (selected_headers != NULL)
646 g_object_unref (selected_headers);
648 g_object_unref (iter);
654 _selected_msg_marked_as (ModestWindow *win,
658 GtkWidget *header_view = NULL;
659 TnyList *selected_headers = NULL;
660 TnyIterator *iter = NULL;
661 TnyHeader *header = NULL;
662 TnyHeaderFlags flags;
663 gboolean result = FALSE;
665 /* Get header view to check selected messages */
666 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
667 MODEST_WIDGET_TYPE_HEADER_VIEW);
669 /* Get selected headers */
670 selected_headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
671 if (selected_headers == NULL)
674 /* Call the function for each header */
675 iter = tny_list_create_iterator (selected_headers);
676 while (!tny_iterator_is_done (iter) && !result) {
677 header = TNY_HEADER (tny_iterator_get_current (iter));
679 flags = tny_header_get_flags (header);
681 result = (flags & mask) == 0;
683 result = (flags & mask) != 0;
685 g_object_unref (header);
686 tny_iterator_next (iter);
690 if (selected_headers != NULL)
691 g_object_unref (selected_headers);
693 g_object_unref (iter);
699 _msg_download_in_progress (ModestMsgViewWindow *win)
701 gboolean result = FALSE;
703 g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (win), FALSE);
709 _msg_sent_in_progress (ModestWindow *win)
711 ModestTnySendQueue *send_queue = NULL;
712 GtkWidget *header_view = NULL;
713 ModestTnyAccountStore *acc_store = NULL;
714 TnyAccount *account = NULL;
715 TnyList *header_list = NULL;
716 TnyIterator *iter = NULL;
717 TnyHeader *header = NULL;
718 const gchar *account_name = NULL;
719 gboolean result = FALSE;
722 g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (win), FALSE);
724 /* Get transport account */
725 acc_store = modest_runtime_get_account_store();
726 account_name = modest_window_get_active_account (win);
727 account = modest_tny_account_store_get_transport_account_for_open_connection (acc_store, account_name);
729 /* Get send queue for current ransport account */
730 send_queue = modest_runtime_get_send_queue (TNY_TRANSPORT_ACCOUNT(account));
731 g_return_val_if_fail (MODEST_IS_TNY_SEND_QUEUE (send_queue), FALSE);
733 if (MODEST_IS_MAIN_WINDOW(win)) {
735 /* Get header view to check selected messages */
736 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
737 MODEST_WIDGET_TYPE_HEADER_VIEW);
739 /* Get selected headers */
740 header_list = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
742 /* Get message header */
743 if (!header_list) return FALSE;
744 iter = tny_list_create_iterator (header_list);
745 header = TNY_HEADER (tny_iterator_get_current (iter));
748 id = g_strdup(tny_header_get_message_id (header));
750 } else if (MODEST_IS_MSG_VIEW_WINDOW(win)) {
752 /* Get message header */
753 header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW(win));
756 id = g_strdup(tny_header_get_message_id (header));
759 /* Check if msg id is being processed inside send queue */
760 result = modest_tny_send_queue_msg_is_being_sent (send_queue, id);
764 g_object_unref (header);