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);
51 static gboolean _marked_as_deleted (ModestWindow *win);
55 modest_ui_dimming_rules_on_new_msg (ModestWindow *win, gpointer user_data)
57 gboolean dimmed = FALSE;
59 g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW(win), FALSE);
61 /* Check dimmed rule */
63 dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win));
69 modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data)
71 gboolean dimmed = FALSE;
72 GtkWidget *folder_view = NULL;
73 TnyFolderStore *parent_folder = NULL;
75 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
78 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
79 MODEST_WIDGET_TYPE_FOLDER_VIEW);
80 /* Get selected folder as parent of new folder to create */
81 parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
85 if (TNY_IS_ACCOUNT (parent_folder)) {
86 /* If it's the local account then do not dim */
87 if (modest_tny_account_is_virtual_local_folders (
88 TNY_ACCOUNT (parent_folder)))
91 /* If it's the MMC root folder then dim it */
92 if (!strcmp (tny_account_get_id (TNY_ACCOUNT (parent_folder)), MODEST_MMC_ACCOUNT_ID)) {
95 const gchar *proto_str = tny_account_get_proto (TNY_ACCOUNT (parent_folder));
96 /* If it's POP then dim */
97 dimmed = (modest_protocol_info_get_transport_store_protocol (proto_str) ==
98 MODEST_PROTOCOL_STORE_POP) ? TRUE : FALSE;
102 /* TODO: the specs say that only one level of subfolder is allowed, is this true ? */
104 /* Apply folder rules */
105 dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win));
112 modest_ui_dimming_rules_on_delete_folder (ModestWindow *win, gpointer user_data)
114 gboolean dimmed = FALSE;
116 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
118 /* Check dimmed rule */
120 dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win));
122 dimmed = _selected_folder_is_root (MODEST_MAIN_WINDOW(win));
128 modest_ui_dimming_rules_on_rename_folder (ModestWindow *win, gpointer user_data)
130 gboolean dimmed = FALSE;
132 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
134 /* Check dimmed rule */
136 dimmed = _selected_folder_not_writeable (MODEST_MAIN_WINDOW(win));
138 dimmed = _selected_folder_is_root (MODEST_MAIN_WINDOW(win));
144 modest_ui_dimming_rules_on_open_msg (ModestWindow *win, gpointer user_data)
146 ModestDimmingRule *rule = NULL;
147 gboolean dimmed = FALSE;
149 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
150 g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
151 rule = MODEST_DIMMING_RULE (user_data);
153 /* Check dimmed rule */
155 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE, user_data);
157 dimmed = _msg_sent_in_progress (win);
158 modest_dimming_rule_set_notification (rule, _("TEST"));
165 modest_ui_dimming_rules_on_reply_msg (ModestWindow *win, gpointer user_data)
167 ModestDimmingRule *rule = NULL;
168 gboolean dimmed = FALSE;
169 TnyFolderType types[3];
171 g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
172 rule = MODEST_DIMMING_RULE (user_data);
174 /* main window dimming rules */
175 if (MODEST_IS_MAIN_WINDOW(win)) {
177 types[0] = TNY_FOLDER_TYPE_DRAFTS;
178 types[1] = TNY_FOLDER_TYPE_OUTBOX;
179 types[2] = TNY_FOLDER_TYPE_ROOT;
181 /* Check dimmed rule */
183 dimmed = _selected_folder_is_any_of_type (MODEST_MAIN_WINDOW(win), types, 3);
184 modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_reply"));
187 dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));
188 modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_reply"));
191 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE, rule);
193 /* msg view window dimming rules */
194 } else if (MODEST_IS_MSG_VIEW_WINDOW(win)) {
196 /* Check dimmed rule */
198 dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win));
206 modest_ui_dimming_rules_on_contents_msg (ModestWindow *win, gpointer user_data)
208 gboolean dimmed = FALSE;
210 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
212 /* Check dimmed rule */
213 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
219 modest_ui_dimming_rules_always_dimmed (ModestWindow *win, gpointer user_data)
221 gboolean dimmed = FALSE;
223 g_return_val_if_fail (MODEST_IS_WINDOW(win), FALSE);
225 /* Check dimmed rule */
233 modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data)
235 ModestDimmingRule *rule = NULL;
236 gboolean dimmed = FALSE;
238 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
239 g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
240 rule = MODEST_DIMMING_RULE (user_data);
242 /* Check dimmed rule */
244 dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));
245 modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_del"));
248 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
249 modest_dimming_rule_set_notification (rule, _("mcen_ib_no_message_selected"));
252 dimmed = _already_opened_msg (win);
253 modest_dimming_rule_set_notification (rule, _("mcen_nc_unable_to_delete_n_messages"));
256 dimmed = _marked_as_deleted (win);
257 modest_dimming_rule_set_notification (rule, _("mcen_ib_message_unableto_delete"));
260 dimmed = _msg_sent_in_progress (win);
261 modest_dimming_rule_set_notification (rule, _("mcen_ib_message_unableto_delete"));
268 modest_ui_dimming_rules_on_details (ModestWindow *win, gpointer user_data)
270 gboolean dimmed = FALSE;
271 GtkWidget *header_view = NULL;
273 /* main window dimming rules */
274 if (MODEST_IS_MAIN_WINDOW(win)) {
276 /* Check dimmed rule */
277 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
278 MODEST_WIDGET_TYPE_HEADER_VIEW);
280 /* If the header view does not have the focus then do
281 not apply msg dimming rules because the action will
282 show the folder details that have no dimming
284 if (gtk_widget_is_focus (header_view)) {
285 /* Check dimmed rule */
287 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE, user_data);
290 /* msg view window dimming rules */
293 /* Check dimmed rule */
295 dimmed = _msg_download_in_progress (MODEST_MSG_VIEW_WINDOW(win));
303 modest_ui_dimming_rules_on_mark_as_read_msg (ModestWindow *win, gpointer user_data)
305 gboolean dimmed = FALSE;
306 TnyHeaderFlags flags;
308 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
310 flags = TNY_HEADER_FLAG_SEEN;
312 /* Check dimmed rule */
314 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
316 dimmed = _selected_msg_marked_as (win, flags, FALSE);
322 modest_ui_dimming_rules_on_mark_as_unread_msg (ModestWindow *win, gpointer user_data)
324 gboolean dimmed = FALSE;
325 TnyHeaderFlags flags;
327 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
329 flags = TNY_HEADER_FLAG_SEEN;
331 /* Check dimmed rule */
333 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
335 dimmed = _selected_msg_marked_as (win, flags, TRUE);
341 modest_ui_dimming_rules_on_move_to (ModestWindow *win, gpointer user_data)
343 gboolean dimmed = FALSE;
345 if (MODEST_IS_MAIN_WINDOW (win))
346 dimmed = modest_ui_dimming_rules_on_main_window_move_to (win, user_data);
348 dimmed = modest_ui_dimming_rules_on_view_window_move_to (win, user_data);
355 modest_ui_dimming_rules_on_main_window_move_to (ModestWindow *win, gpointer user_data)
357 GtkWidget *folder_view = NULL;
358 GtkWidget *header_view = NULL;
359 gboolean dimmed = FALSE;
361 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), TRUE);
363 /* Get the folder view */
364 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
365 MODEST_WIDGET_TYPE_FOLDER_VIEW);
367 /* Get header view */
368 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
369 MODEST_WIDGET_TYPE_HEADER_VIEW);
371 /* Check common diming rules */
373 /* Check diming rules for folder transfer */
374 if (gtk_widget_is_focus (folder_view)) {
376 dimmed = _selected_folder_not_writeable(MODEST_MAIN_WINDOW(win));
378 /* Check diming rules for msg transfer */
379 else if (gtk_widget_is_focus (header_view)) {
381 dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
389 modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user_data)
391 gboolean dimmed = FALSE;
397 modest_ui_dimming_rules_on_paste_msgs (ModestWindow *win, gpointer user_data)
399 TnyFolderType types[3];
400 gboolean dimmed = FALSE;
402 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
404 types[0] = TNY_FOLDER_TYPE_DRAFTS;
405 types[1] = TNY_FOLDER_TYPE_OUTBOX;
406 types[2] = TNY_FOLDER_TYPE_SENT;
408 /* Check dimmed rule */
410 dimmed = _selected_folder_is_any_of_type (MODEST_MAIN_WINDOW(win), types, 3);
416 modest_ui_dimming_rules_on_delete_msgs (ModestWindow *win, gpointer user_data)
418 TnyFolderType types[5];
419 gboolean dimmed = FALSE;
421 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
423 types[0] = TNY_FOLDER_TYPE_DRAFTS;
424 types[1] = TNY_FOLDER_TYPE_OUTBOX;
425 types[2] = TNY_FOLDER_TYPE_SENT;
426 types[3] = TNY_FOLDER_TYPE_INBOX;
427 types[4] = TNY_FOLDER_TYPE_ROOT;
429 /* Check dimmed rule */
431 dimmed = _selected_folder_is_any_of_type (MODEST_MAIN_WINDOW(win), types, 5);
437 modest_ui_dimming_rules_on_select_all (ModestWindow *win, gpointer user_data)
439 gboolean dimmed = FALSE;
441 /* Check dimmed rule */
443 dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));
449 /* *********************** static utility functions ******************** */
452 _marked_as_deleted (ModestWindow *win)
454 gboolean result = FALSE;
455 TnyHeaderFlags flags;
457 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
459 flags = TNY_HEADER_FLAG_DELETED;
461 /* Check dimmed rule */
462 result = _selected_msg_marked_as (win, flags, FALSE);
468 _selected_folder_not_writeable (ModestMainWindow *win)
470 GtkWidget *folder_view = NULL;
471 TnyFolderStore *parent_folder = NULL;
472 ModestTnyFolderRules rules;
473 gboolean result = FALSE;
475 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
477 /* Get folder view */
478 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
479 MODEST_WIDGET_TYPE_FOLDER_VIEW);
480 /* If no folder view, always dimmed */
484 /* Get selected folder as parent of new folder to create */
485 parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
486 if (!(parent_folder && TNY_IS_FOLDER(parent_folder)))
489 /* Check dimmed rule */
490 rules = modest_tny_folder_get_rules (TNY_FOLDER (parent_folder));
491 result = rules & MODEST_FOLDER_RULES_FOLDER_NON_WRITEABLE;
494 g_object_unref (parent_folder);
500 _selected_folder_is_root (ModestMainWindow *win)
502 TnyFolderType types[2];
503 gboolean result = FALSE;
505 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
507 types[0] = TNY_FOLDER_TYPE_ROOT;
508 types[1] = TNY_FOLDER_TYPE_INBOX;
510 /* Check folder type */
511 result = _selected_folder_is_any_of_type (win, types, 2);
514 GtkWidget *folder_view = NULL;
515 TnyFolderStore *parent_folder = NULL;
517 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
518 MODEST_WIDGET_TYPE_FOLDER_VIEW);
519 /* Get selected folder as parent of new folder to create */
520 parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
524 if (TNY_IS_ACCOUNT (parent_folder)) {
525 /* If it's the local account then do not dim */
526 if (modest_tny_account_is_virtual_local_folders (
527 TNY_ACCOUNT (parent_folder)))
530 /* If it's the MMC root folder then dim it */
531 if (!strcmp (tny_account_get_id (TNY_ACCOUNT (parent_folder)), MODEST_MMC_ACCOUNT_ID)) {
534 const gchar *proto_str = tny_account_get_proto (TNY_ACCOUNT (parent_folder));
535 /* If it's POP then dim */
536 result = (modest_protocol_info_get_transport_store_protocol (proto_str) ==
537 MODEST_PROTOCOL_STORE_POP) ? TRUE : FALSE;
548 _selected_folder_is_empty (ModestMainWindow *win)
550 GtkWidget *folder_view = NULL;
551 TnyFolderStore *folder = NULL;
552 gboolean result = FALSE;
554 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
556 /* Get folder view */
557 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
558 MODEST_WIDGET_TYPE_FOLDER_VIEW);
559 /* If no folder view, always dimmed */
563 /* Get selected folder as parent of new folder to create */
564 folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
565 if (!(folder && TNY_IS_FOLDER(folder)))
568 /* Check folder type */
569 result = tny_folder_get_all_count (TNY_FOLDER (folder)) == 0;
572 g_object_unref (folder);
578 _selected_folder_is_any_of_type (ModestMainWindow *win,
579 TnyFolderType types[],
582 GtkWidget *folder_view = NULL;
583 TnyFolderStore *folder = NULL;
584 gboolean result = FALSE;
586 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
588 /* Get folder view */
589 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
590 MODEST_WIDGET_TYPE_FOLDER_VIEW);
591 /* If no folder view, always dimmed */
595 /* Get selected folder as parent of new folder to create */
596 folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
597 if (!(folder && TNY_IS_FOLDER(folder)))
600 /* Check folder type */
601 result = _folder_is_any_of_type (TNY_FOLDER(folder), types, ntypes);
604 g_object_unref (folder);
610 _folder_is_any_of_type (TnyFolder *folder,
611 TnyFolderType types[],
614 TnyFolderType folder_type;
615 gboolean result = FALSE;
618 g_return_val_if_fail (TNY_IS_FOLDER(folder), FALSE);
620 /* Get folder type */
621 if (modest_tny_folder_is_local_folder (folder))
622 folder_type = modest_tny_folder_get_local_folder_type (folder);
624 folder_type = modest_tny_folder_guess_folder_type (folder);
626 /* Check foler type */
627 for (i=0; i < ntypes; i++) {
628 result = result || folder_type == types[i];
637 _invalid_msg_selected (ModestMainWindow *win,
639 ModestDimmingRule *rule)
641 GtkWidget *header_view = NULL;
642 GtkWidget *folder_view = NULL;
643 TnyList *selected_headers = NULL;
644 gboolean result = FALSE;
646 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
647 g_return_val_if_fail (MODEST_IS_DIMMING_RULE (rule), FALSE);
649 /* Get header view to check selected messages */
650 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
651 MODEST_WIDGET_TYPE_HEADER_VIEW);
653 /* Get folder view to check focus */
654 folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (win),
655 MODEST_WIDGET_TYPE_FOLDER_VIEW);
657 /* Get selected headers */
658 selected_headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
660 /* Check dimmed rule (TODO: check focus on widgets */
662 result = ((selected_headers == NULL) ||
663 (GTK_WIDGET_HAS_FOCUS (folder_view)));
664 modest_dimming_rule_set_notification (rule, _("mcen_ib_no_message_selected"));
666 if (!result && unique) {
667 result = tny_list_get_length (selected_headers) > 1;
668 modest_dimming_rule_set_notification (rule, _("mcen_ib_select_one_message"));
672 if (selected_headers != NULL)
673 g_object_unref (selected_headers);
679 _already_opened_msg (ModestWindow *win)
681 ModestWindow *window = NULL;
682 ModestWindowMgr *mgr = NULL;
683 GtkWidget *header_view = NULL;
684 TnyList *selected_headers = NULL;
685 TnyIterator *iter = NULL;
686 TnyHeader *header = NULL;
687 gboolean result = TRUE;
689 g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
691 /* Get header view to check selected messages */
692 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
693 MODEST_WIDGET_TYPE_HEADER_VIEW);
695 /* Get selected headers */
696 selected_headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
697 if (selected_headers == NULL)
700 /* Check dimmed rule (TODO: check focus on widgets */
701 mgr = modest_runtime_get_window_mgr ();
702 iter = tny_list_create_iterator (selected_headers);
703 while (!tny_iterator_is_done (iter) && result) {
704 header = TNY_HEADER (tny_iterator_get_current (iter));
705 window = modest_window_mgr_find_window_by_header (mgr, header);
706 result = result && (window != NULL);
708 g_object_unref (header);
709 tny_iterator_next (iter);
713 if (selected_headers != NULL)
714 g_object_unref (selected_headers);
716 g_object_unref (iter);
722 _selected_msg_marked_as (ModestWindow *win,
726 GtkWidget *header_view = NULL;
727 TnyList *selected_headers = NULL;
728 TnyIterator *iter = NULL;
729 TnyHeader *header = NULL;
730 TnyHeaderFlags flags;
731 gboolean result = FALSE;
733 /* Get header view to check selected messages */
734 header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
735 MODEST_WIDGET_TYPE_HEADER_VIEW);
737 /* Get selected headers */
738 selected_headers = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view));
739 if (selected_headers == NULL)
742 /* Call the function for each header */
743 iter = tny_list_create_iterator (selected_headers);
744 while (!tny_iterator_is_done (iter) && !result) {
745 header = TNY_HEADER (tny_iterator_get_current (iter));
747 flags = tny_header_get_flags (header);
749 result = (flags & mask) == 0;
751 result = (flags & mask) != 0;
753 g_object_unref (header);
754 tny_iterator_next (iter);
758 if (selected_headers != NULL)
759 g_object_unref (selected_headers);
761 g_object_unref (iter);
767 _msg_download_in_progress (ModestMsgViewWindow *win)
769 gboolean result = FALSE;
771 g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (win), FALSE);
777 _msg_sent_in_progress (ModestWindow *win)
779 /* ModestTnySendQueue *send_queue = NULL; */
780 /* GtkWidget *header_view = NULL; */
781 /* ModestTnyAccountStore *acc_store = NULL; */
782 /* TnyAccount *account = NULL; */
783 /* TnyList *header_list = NULL; */
784 /* TnyIterator *iter = NULL; */
785 /* TnyHeader *header = NULL; */
786 /* const gchar *account_name = NULL; */
787 gboolean result = FALSE;
788 /* gchar *id = NULL; */
790 /* g_return_val_if_fail (MODEST_IS_MSG_VIEW_WINDOW (win), FALSE); */
792 /* /\* Get transport account *\/ */
793 /* acc_store = modest_runtime_get_account_store(); */
794 /* account_name = modest_window_get_active_account (win); */
795 /* account = modest_tny_account_store_get_transport_account_for_open_connection (acc_store, account_name); */
797 /* /\* Get send queue for current ransport account *\/ */
798 /* send_queue = modest_runtime_get_send_queue (TNY_TRANSPORT_ACCOUNT(account)); */
799 /* g_return_val_if_fail (MODEST_IS_TNY_SEND_QUEUE (send_queue), FALSE); */
801 /* if (MODEST_IS_MAIN_WINDOW(win)) { */
803 /* /\* Get header view to check selected messages *\/ */
804 /* header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win), */
805 /* MODEST_WIDGET_TYPE_HEADER_VIEW); */
807 /* /\* Get selected headers *\/ */
808 /* header_list = modest_header_view_get_selected_headers (MODEST_HEADER_VIEW(header_view)); */
810 /* /\* Get message header *\/ */
811 /* if (!header_list) return FALSE; */
812 /* iter = tny_list_create_iterator (header_list); */
813 /* header = TNY_HEADER (tny_iterator_get_current (iter)); */
815 /* /\* Get message id *\/ */
816 /* id = g_strdup(tny_header_get_message_id (header)); */
818 /* } else if (MODEST_IS_MSG_VIEW_WINDOW(win)) { */
820 /* /\* Get message header *\/ */
821 /* header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW(win)); */
823 /* /\* Get message id *\/ */
824 /* id = g_strdup(tny_header_get_message_id (header)); */
827 /* /\* Check if msg id is being processed inside send queue *\/ */
828 /* result = modest_tny_send_queue_msg_is_being_sent (send_queue, id); */
832 /* g_object_unref (header); */
833 /* g_free(header_list); */