#include "modest-tny-msg.h"
#include "modest-tny-mime-part.h"
#include "modest-text-utils.h"
+#include "widgets/modest-folder-view.h"
#include "modest-address-book.h"
#include <widgets/modest-attachments-view.h>
#include <modest-runtime.h>
#include <modest-runtime.h>
#ifdef MODEST_TOOLKIT_HILDON2
#include <modest-header-window.h>
+#include <modest-folder-window.h>
#endif
static gboolean _send_receive_in_progress (ModestWindow *win);
static gboolean _msgs_send_in_progress (void);
-
static DimmedState *
_define_main_window_dimming_state (ModestMainWindow *window)
{
}
#ifdef MODEST_TOOLKIT_HILDON2
+ } else if (MODEST_IS_FOLDER_WINDOW (win)) {
+ dimmed = modest_ui_dimming_rules_on_folder_window_delete (win, user_data);
} else if (MODEST_IS_HEADER_WINDOW (win)) {
if (!dimmed)
TnyFolderType types[4];
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);
- types[0] = TNY_FOLDER_TYPE_DRAFTS;
+ types[0] = TNY_FOLDER_TYPE_DRAFTS;
types[1] = TNY_FOLDER_TYPE_OUTBOX;
types[2] = TNY_FOLDER_TYPE_SENT;
types[3] = TNY_FOLDER_TYPE_ARCHIVE;
-
- /* Check dimmed rule */
- dimmed = _selected_folder_not_renameable (MODEST_MAIN_WINDOW(win));
- if (dimmed)
- modest_dimming_rule_set_notification (rule, "");
- if (!dimmed) {
- dimmed = _selected_folder_is_root_or_inbox (MODEST_MAIN_WINDOW(win));
+
+ /* Check dimmed rule */
+ if (MODEST_IS_MAIN_WINDOW (win)) {
+ dimmed = _selected_folder_not_renameable (MODEST_MAIN_WINDOW(win));
if (dimmed)
modest_dimming_rule_set_notification (rule, "");
+ if (!dimmed) {
+ dimmed = _selected_folder_is_root_or_inbox (MODEST_MAIN_WINDOW(win));
+ if (dimmed)
+ modest_dimming_rule_set_notification (rule, "");
+ }
}
+
+#ifdef MODEST_TOOLKIT_HILDON2
+ if (MODEST_IS_FOLDER_WINDOW (win)) {
+ ModestFolderView *folder_view;
+ folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (win));
+ dimmed = !modest_folder_view_any_folder_fulfils_rules (folder_view,
+ MODEST_FOLDER_RULES_FOLDER_NON_RENAMEABLE);
+ }
+#endif
+
if (!dimmed) {
dimmed = _selected_folder_is_any_of_type (win, types, 4);
if (dimmed)
/* main window dimming rules */
if (MODEST_IS_MAIN_WINDOW(win)) {
-
+
if (!dimmed) {
- dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));
+ dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));
if (dimmed)
modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_reply"));
}
}
/* msg view window dimming rules */
} else if (MODEST_IS_MSG_VIEW_WINDOW(win)) {
-
- /* Check dimmed rule */
+
+ /* This could happen if we load the msg view window with a
+ preview before loading the full message */
+ TnyMsg *msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
+ if (!msg) {
+ dimmed = TRUE;
+ } else {
+ g_object_unref (msg);
+ }
+
if (!dimmed) {
- dimmed = _transfer_mode_enabled (win);
+ dimmed = _transfer_mode_enabled (win);
if (dimmed)
modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
}
modest_dimming_rule_set_notification (rule, _("mcen_ib_unable_to_reply"));
}
}
-
+
return dimmed;
}
}
}
else if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
+ /* This could happen if we load the msg view window with a
+ preview before loading the full message */
+ TnyMsg *msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
+ if (!msg) {
+ dimmed = TRUE;
+ } else {
+ g_object_unref (msg);
+ }
+
if (!dimmed) {
dimmed = state->any_marked_as_deleted;
if (dimmed) {
#ifdef MODEST_TOOLKIT_HILDON2
else if (MODEST_IS_HEADER_WINDOW (win))
dimmed = modest_ui_dimming_rules_on_header_window_move_to (win, user_data);
+ else if (MODEST_IS_FOLDER_WINDOW (win))
+ dimmed = modest_ui_dimming_rules_on_folder_window_move_to (win, user_data);
#endif
else if (MODEST_IS_MSG_VIEW_WINDOW (win))
dimmed = modest_ui_dimming_rules_on_view_window_move_to (win, user_data);
return dimmed;
}
-gboolean
+gboolean
modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user_data)
{
ModestDimmingRule *rule = NULL;
g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
rule = MODEST_DIMMING_RULE (user_data);
- /* Check dimmed rule */
- dimmed = _transfer_mode_enabled (win);
+ /* This could happen if we load the msg view window with a
+ preview before loading the full message */
+ TnyMsg *msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
+ if (!msg) {
+ return TRUE;
+ } else {
+ g_object_unref (msg);
+ }
+
+ /* Check dimmed rule */
+
+ dimmed = _transfer_mode_enabled (win);
if (dimmed)
modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
if (!dimmed) {
}
#ifdef MODEST_TOOLKIT_HILDON2
-gboolean
-modest_ui_dimming_rules_on_header_window_move_to (ModestWindow *win, gpointer user_data)
-{
- ModestDimmingRule *rule = NULL;
- gboolean dimmed = FALSE;
-
- g_return_val_if_fail (MODEST_IS_HEADER_WINDOW(win), FALSE);
- g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
- rule = MODEST_DIMMING_RULE (user_data);
-
- /* Check dimmed rule */
- dimmed = _transfer_mode_enabled (win);
- if (dimmed)
- modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
-
- if (!dimmed) {
- GtkWidget *header_view;
- TnyFolder *folder;
-
- header_view = GTK_WIDGET (modest_header_window_get_header_view (MODEST_HEADER_WINDOW (win)));
- folder = modest_header_view_get_folder (MODEST_HEADER_VIEW (header_view));
- if (folder) {
- dimmed = (tny_folder_get_all_count (TNY_FOLDER (folder)) == 0);
- g_object_unref (folder);
- }
- }
-
- return dimmed;
-}
#endif
gboolean
g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
rule = MODEST_DIMMING_RULE (user_data);
+ /* This could happen if we load the msg view window with a
+ preview before loading the full message */
+ if (MODEST_IS_MSG_VIEW_WINDOW (win)) {
+ TnyMsg *msg = modest_msg_view_window_get_message (MODEST_MSG_VIEW_WINDOW (win));
+ if (!msg) {
+ return TRUE;
+ } else {
+ g_object_unref (msg);
+ }
+ }
+
/* Check dimmed rule */
- dimmed = _transfer_mode_enabled (win);
+ dimmed = _transfer_mode_enabled (win);
if (dimmed)
modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
if (!dimmed && MODEST_IS_MSG_EDIT_WINDOW (win)) {
dimmed = !modest_msg_edit_window_can_undo (MODEST_MSG_EDIT_WINDOW (win));
}
-
- return dimmed;
+
+ return dimmed;
}
gboolean
MODEST_MSG_EDIT_WINDOW (win),
MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_ATTACHMENTS);
+#ifdef MODEST_TOOLKIT_HILDON2
+ selected_attachments = modest_attachments_view_get_attachments (
+ MODEST_ATTACHMENTS_VIEW (attachments_view));
+#else
selected_attachments = modest_attachments_view_get_selection (
MODEST_ATTACHMENTS_VIEW (attachments_view));
+#endif
n_att_selected = tny_list_get_length (selected_attachments);
g_object_unref (selected_attachments);
} else if (MODEST_IS_MAIN_WINDOW(win)) {
result = modest_main_window_transfer_mode_enabled (MODEST_MAIN_WINDOW (win));
#ifdef MODEST_TOOLKIT_HILDON2
+ } else if (MODEST_IS_FOLDER_WINDOW (win)) {
+ result = modest_folder_window_transfer_mode_enabled (MODEST_FOLDER_WINDOW (win));
} else if (MODEST_IS_HEADER_WINDOW (win)) {
result = modest_header_window_transfer_mode_enabled (MODEST_HEADER_WINDOW (win));
#endif
}
}
- g_slist_foreach (op_list, (GFunc) g_object_unref, NULL);
- g_slist_free (op_list);
+ if (op_list) {
+ g_slist_foreach (op_list, (GFunc) g_object_unref, NULL);
+ g_slist_free (op_list);
+ }
return found_send_receive;
}
return found;
}
+
+/*****************************************************************************/
+/********************** HILDON2 only dimming rules ***************************/
+/*****************************************************************************/
+
+#ifdef MODEST_TOOLKIT_HILDON2
+gboolean
+modest_ui_dimming_rules_on_header_window_move_to (ModestWindow *win, gpointer user_data)
+{
+ ModestDimmingRule *rule = NULL;
+ gboolean dimmed = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_HEADER_WINDOW(win), FALSE);
+ g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
+ rule = MODEST_DIMMING_RULE (user_data);
+
+ /* Check dimmed rule */
+ dimmed = _transfer_mode_enabled (win);
+ if (dimmed)
+ modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
+
+ if (!dimmed) {
+ GtkWidget *header_view;
+ TnyFolder *folder;
+
+ header_view = GTK_WIDGET (modest_header_window_get_header_view (MODEST_HEADER_WINDOW (win)));
+ folder = modest_header_view_get_folder (MODEST_HEADER_VIEW (header_view));
+ if (folder) {
+ dimmed = (tny_folder_get_all_count (TNY_FOLDER (folder)) == 0);
+ g_object_unref (folder);
+ }
+ }
+
+ return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_folder_window_move_to (ModestWindow *win, gpointer user_data)
+{
+ ModestDimmingRule *rule = NULL;
+ gboolean dimmed = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_FOLDER_WINDOW(win), FALSE);
+ g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
+ rule = MODEST_DIMMING_RULE (user_data);
+
+ /* Check dimmed rule */
+ dimmed = _transfer_mode_enabled (win);
+ if (dimmed)
+ modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
+
+ if (MODEST_IS_FOLDER_WINDOW (win)) {
+ ModestFolderView *folder_view;
+ folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (win));
+ dimmed = !modest_folder_view_any_folder_fulfils_rules (folder_view,
+ MODEST_FOLDER_RULES_FOLDER_NON_MOVEABLE);
+ }
+
+ return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_folder_window_delete (ModestWindow *win, gpointer user_data)
+{
+ ModestDimmingRule *rule = NULL;
+ gboolean dimmed = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_FOLDER_WINDOW(win), FALSE);
+ g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
+ rule = MODEST_DIMMING_RULE (user_data);
+
+ /* Check dimmed rule */
+ dimmed = _transfer_mode_enabled (win);
+ if (dimmed)
+ modest_dimming_rule_set_notification (rule, _("mail_ib_notavailable_downloading"));
+
+ if (MODEST_IS_FOLDER_WINDOW (win)) {
+ ModestFolderView *folder_view;
+ folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (win));
+ dimmed = !modest_folder_view_any_folder_fulfils_rules (folder_view,
+ MODEST_FOLDER_RULES_FOLDER_NON_DELETABLE);
+ }
+
+ return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_edit_accounts (ModestWindow *win, gpointer user_data)
+{
+ return !modest_account_mgr_has_accounts (modest_runtime_get_account_mgr (), TRUE);
+}
+#endif