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);
428 /* *********************** static utility functions ******************** */
431 _selected_folder_not_writeable (ModestMainWindow *win)
433 GtkWidget *folder_view = NULL;
434 TnyFolderStore *parent_folder = NULL;
435 ModestTnyFolderRules rules;
436 gboolean result = FALSE;
438 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
440 /* Get folder view */
441 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
442 MODEST_WIDGET_TYPE_FOLDER_VIEW);
443 /* If no folder view, always dimmed */
447 /* Get selected folder as parent of new folder to create */
448 parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
449 if (!(parent_folder && TNY_IS_FOLDER(parent_folder)))
452 /* Check dimmed rule */
453 rules = modest_tny_folder_get_rules (TNY_FOLDER (parent_folder));
454 result = rules & MODEST_FOLDER_RULES_FOLDER_NON_WRITEABLE;
457 g_object_unref (parent_folder);
463 _selected_folder_is_root (ModestMainWindow *win)
465 TnyFolderType types[2];
466 gboolean result = FALSE;
468 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
470 types[0] = TNY_FOLDER_TYPE_ROOT;
471 types[1] = TNY_FOLDER_TYPE_INBOX;
473 /* Check folder type */
474 result = _selected_folder_is_any_of_type (win, types, 2);
481 _selected_folder_is_empty (ModestMainWindow *win)
483 GtkWidget *folder_view = NULL;
484 TnyFolderStore *folder = NULL;
485 gboolean result = FALSE;
487 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
489 /* Get folder view */
490 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
491 MODEST_WIDGET_TYPE_FOLDER_VIEW);
492 /* If no folder view, always dimmed */
496 /* Get selected folder as parent of new folder to create */
497 folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
498 if (!(folder && TNY_IS_FOLDER(folder)))
501 /* Check folder type */
502 result = tny_folder_get_all_count (TNY_FOLDER (folder)) == 0;
505 g_object_unref (folder);
511 _selected_folder_is_any_of_type (ModestMainWindow *win,
512 TnyFolderType types[],
515 GtkWidget *folder_view = NULL;
516 TnyFolderStore *folder = NULL;
517 gboolean result = FALSE;
519 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
521 /* Get folder view */
522 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
523 MODEST_WIDGET_TYPE_FOLDER_VIEW);
524 /* If no folder view, always dimmed */
528 /* Get selected folder as parent of new folder to create */
529 folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
530 if (!(folder && TNY_IS_FOLDER(folder)))
533 /* Check folder type */
534 result = _folder_is_any_of_type (TNY_FOLDER(folder), types, ntypes);
537 g_object_unref (folder);
543 _folder_is_any_of_type (TnyFolder *folder,
544 TnyFolderType types[],
547 TnyFolderType folder_type;
548 gboolean result = FALSE;
551 g_return_val_if_fail (TNY_IS_FOLDER(folder), FALSE);
553 /* Get folder type */
554 if (modest_tny_folder_is_local_folder (folder))
555 folder_type = modest_tny_folder_get_local_folder_type (folder);
557 folder_type = modest_tny_folder_guess_folder_type (folder);
559 /* Check foler type */
560 for (i=0; i < ntypes; i++) {
561 result = result || folder_type == types[i];
570 _invalid_msg_selected (ModestMainWindow *win,
572 ModestDimmingRule *rule)
574 GtkWidget *header_view = NULL;
575 GtkWidget *folder_view = NULL;
576 TnyList *selected_headers = NULL;
577 gboolean result = FALSE;
579 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
580 g_return_val_if_fail (MODEST_IS_DIMMING_RULE (rule), FALSE);
582 /* Get header view to check selected messages */
583 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
584 MODEST_WIDGET_TYPE_HEADER_VIEW);
586 /* Get folder view to check focus */
587 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
588 MODEST_WIDGET_TYPE_FOLDER_VIEW);
590 /* Get selected headers */
591 selected_headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
593 /* Check dimmed rule (TODO: check focus on widgets */
595 result = ((selected_headers == NULL) ||
596 (GTK_WIDGET_HAS_FOCUS (folder_view)));
597 modest_dimming_rule_set_notification (rule, _("mcen_ib_no_message_selected"));
600 result = tny_list_get_length (selected_headers) > 1;
601 modest_dimming_rule_set_notification (rule, _("mcen_ib_select_one_message"));
605 if (selected_headers != NULL)
606 g_object_unref (selected_headers);
612 _already_opened_msg (ModestWindow *win)
614 ModestWindow *window = NULL;
615 ModestWindowMgr *mgr = NULL;
616 GtkWidget *header_view = NULL;
617 TnyList *selected_headers = NULL;
618 TnyIterator *iter = NULL;
619 TnyHeader *header = NULL;
620 gboolean result = TRUE;
622 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
624 /* Get header view to check selected messages */
625 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
626 MODEST_WIDGET_TYPE_HEADER_VIEW);
628 /* Get selected headers */
629 selected_headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
630 if (selected_headers == NULL)
633 /* Check dimmed rule (TODO: check focus on widgets */
634 mgr = modest_runtime_get_window_mgr ();
635 iter = tny_list_create_iterator (selected_headers);
636 while (!tny_iterator_is_done (iter) && result) {
637 header = TNY_HEADER (tny_iterator_get_current (iter));
638 window = modest_window_mgr_find_window_by_header (mgr, header);
639 result = result && (window != NULL);
641 g_object_unref (header);
642 tny_iterator_next (iter);
646 if (selected_headers != NULL)
647 g_object_unref (selected_headers);
649 g_object_unref (iter);
655 _selected_msg_marked_as (ModestWindow *win,
659 GtkWidget *header_view = NULL;
660 TnyList *selected_headers = NULL;
661 TnyIterator *iter = NULL;
662 TnyHeader *header = NULL;
663 TnyHeaderFlags flags;
664 gboolean result = FALSE;
666 /* Get header view to check selected messages */
667 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
668 MODEST_WIDGET_TYPE_HEADER_VIEW);
670 /* Get selected headers */
671 selected_headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
672 if (selected_headers == NULL)
675 /* Call the function for each header */
676 iter = tny_list_create_iterator (selected_headers);
677 while (!tny_iterator_is_done (iter) && !result) {
678 header = TNY_HEADER (tny_iterator_get_current (iter));
680 flags = tny_header_get_flags (header);
682 result = (flags & mask) == 0;
684 result = (flags & mask) != 0;
686 g_object_unref (header);
687 tny_iterator_next (iter);
691 if (selected_headers != NULL)
692 g_object_unref (selected_headers);
694 g_object_unref (iter);
700 _msg_download_in_progress (ModestMsgViewWindow *win)
702 gboolean result = FALSE;
704 g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (win), FALSE);
710 _msg_sent_in_progress (ModestWindow *win)
712 /* ModestTnySendQueue *send_queue = NULL; */
713 /* GtkWidget *header_view = NULL; */
714 /* ModestTnyAccountStore *acc_store = NULL; */
715 /* TnyAccount *account = NULL; */
716 /* TnyList *header_list = NULL; */
717 /* TnyIterator *iter = NULL; */
718 /* TnyHeader *header = NULL; */
719 /* const gchar *account_name = NULL; */
720 gboolean result = FALSE;
721 /* gchar *id = NULL; */
723 /* g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (win), FALSE); */
725 /* /\* Get transport account *\/ */
726 /* acc_store = modest_runtime_get_account_store(); */
727 /* account_name = modest_window_get_active_account (win); */
728 /* account = modest_tny_account_store_get_transport_account_for_open_connection (acc_store, account_name); */
730 /* /\* Get send queue for current ransport account *\/ */
731 /* send_queue = modest_runtime_get_send_queue (TNY_TRANSPORT_ACCOUNT(account)); */
732 /* g_return_val_if_fail (MODEST_IS_TNY_SEND_QUEUE (send_queue), FALSE); */
734 /* if (MODEST_IS_MAIN_WINDOW(win)) { */
736 /* /\* Get header view to check selected messages *\/ */
737 /* header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win), */
738 /* MODEST_WIDGET_TYPE_HEADER_VIEW); */
740 /* /\* Get selected headers *\/ */
741 /* header_list = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view)); */
743 /* /\* Get message header *\/ */
744 /* if (!header_list) return FALSE; */
745 /* iter = tny_list_create_iterator (header_list); */
746 /* header = TNY_HEADER (tny_iterator_get_current (iter)); */
748 /* /\* Get message id *\/ */
749 /* id = g_strdup(tny_header_get_message_id (header)); */
751 /* } else if (MODEST_IS_MSG_VIEW_WINDOW(win)) { */
753 /* /\* Get message header *\/ */
754 /* header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW(win)); */
756 /* /\* Get message id *\/ */
757 /* id = g_strdup(tny_header_get_message_id (header)); */
760 /* /\* Check if msg id is being processed inside send queue *\/ */
761 /* result = modest_tny_send_queue_msg_is_being_sent (send_queue, id); */
765 /* g_object_unref (header); */
766 /* g_free(header_list); */