static gboolean _msg_download_in_progress (ModestWindow *win);
static gboolean _msg_download_completed (ModestMainWindow *win);
static gboolean _selected_msg_sent_in_progress (ModestWindow *win);
-static gboolean _sending_in_progress (ModestWindow *win);
static gboolean _invalid_folder_for_purge (ModestWindow *win, ModestDimmingRule *rule);
static gboolean _transfer_mode_enabled (ModestWindow *win);
static gboolean _selected_folder_has_subfolder_with_same_name (ModestWindow *win);
return dimmed;
}
+static gboolean
+_message_already_sent (ModestMsgViewWindow *view_window)
+{
+ TnyHeader *header;
+ TnyFolder *folder;
+ gboolean already_sent = FALSE;
+
+ header = modest_msg_view_window_get_header (view_window);
+ if (header) {
+ folder = tny_header_get_folder (header);
+ if (folder) {
+ if (modest_tny_folder_guess_folder_type (folder) ==
+ TNY_FOLDER_TYPE_OUTBOX) {
+ ModestTnySendQueueStatus status =
+ modest_tny_all_send_queues_get_msg_status (header);
+ if (status == MODEST_TNY_SEND_QUEUE_UNKNOWN ||
+ status == MODEST_TNY_SEND_QUEUE_SENDING)
+ already_sent = TRUE;
+ }
+ g_object_unref (folder);
+ }
+ g_object_unref (header);
+ }
+ return already_sent;
+}
+
+
gboolean
modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data)
{
/* This could happen if we're viewing a message of the
outbox that has been already sent */
- if (!dimmed) {
- ModestMsgViewWindow *view_window = MODEST_MSG_VIEW_WINDOW (win);
- if (modest_msg_view_window_last_message_selected (view_window) &&
- modest_msg_view_window_first_message_selected (view_window))
- dimmed = TRUE;
- }
+ if (!dimmed)
+ dimmed = _message_already_sent (MODEST_MSG_VIEW_WINDOW(win));
/* The delete button should be dimmed when viewing an attachment,
* but should be enabled when viewing a message from the list,
modest_dimming_rule_set_notification (rule, "");
}
+ } else {
+ return TRUE;
}
-
}
/* msg view window dimming rules */
/* This could happen if we're viewing a message of the outbox
that has been already sent */
- if (!dimmed) {
- ModestMsgViewWindow *view_window = MODEST_MSG_VIEW_WINDOW (win);
- if (modest_msg_view_window_last_message_selected (view_window) &&
- modest_msg_view_window_first_message_selected (view_window))
- dimmed = TRUE;
- }
+ if (!dimmed)
+ dimmed = _message_already_sent (MODEST_MSG_VIEW_WINDOW(win));
if (!dimmed) {
if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
modest_dimming_rule_set_notification (rule, "");
}
if (!dimmed) {
- dimmed = !_sending_in_progress (win);
- if (dimmed)
- modest_dimming_rule_set_notification (rule, "");
- }
-
- return dimmed;
-}
-
-gboolean
-modest_ui_dimming_rules_on_csm_cancel_sending (ModestWindow *win, gpointer user_data)
-{
- ModestDimmingRule *rule = NULL;
- TnyFolderType types[1];
- const DimmedState *state = NULL;
- gboolean dimmed = FALSE;
-
- g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
- g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
- rule = MODEST_DIMMING_RULE (user_data);
- state = modest_window_get_dimming_state (win);
-
- types[0] = TNY_FOLDER_TYPE_OUTBOX;
-
- /* Check dimmed rules */
- if (!dimmed) {
- dimmed = !_selected_folder_is_any_of_type (win, types, 1);
- if (dimmed)
- modest_dimming_rule_set_notification (rule, "");
- }
- if (!dimmed) {
- dimmed = !_sending_in_progress (win);
+ dimmed = !state->sent_in_progress;
if (dimmed)
modest_dimming_rule_set_notification (rule, "");
}
static gboolean
-_sending_in_progress (ModestWindow *win)
-{
- GHashTable *send_queue_cache = NULL;
- ModestCacheMgr *cache_mgr = NULL;
- ModestTnySendQueue *send_queue = NULL;
- GSList *send_queues = NULL, *node = NULL;
- gboolean result = FALSE;
-
- g_return_val_if_fail (MODEST_IS_MAIN_WINDOW (win), FALSE);
-
- /* Get send queue */
- cache_mgr = modest_runtime_get_cache_mgr ();
- send_queue_cache = modest_cache_mgr_get_cache (cache_mgr,
- MODEST_CACHE_MGR_CACHE_TYPE_SEND_QUEUE);
-
- g_hash_table_foreach (send_queue_cache, (GHFunc) fill_list_of_caches, &send_queues);
-
- for (node = send_queues; node != NULL && !result; node = g_slist_next (node)) {
- send_queue = MODEST_TNY_SEND_QUEUE (node->data);
-
- /* Check if send operation is in progress */
- result = modest_tny_send_queue_sending_in_progress (send_queue);
- }
-
- return result;
-}
-
-static gboolean
_invalid_folder_for_purge (ModestWindow *win,
ModestDimmingRule *rule)
{