+gboolean
+modest_ui_dimming_rules_always_dimmed (ModestWindow *win, gpointer user_data)
+{
+ gboolean dimmed = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_WINDOW(win), FALSE);
+
+ /* Check dimmed rule */
+ if (!dimmed)
+ dimmed = TRUE;
+
+ return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data)
+{
+ gboolean dimmed = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
+
+ /* Check dimmed rule */
+ if (!dimmed)
+ dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE);
+ if (!dimmed)
+ dimmed = _already_opened_msg (win);
+
+ return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_details_msg (ModestWindow *win, gpointer user_data)
+{
+ gboolean dimmed = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
+
+ /* Check dimmed rule */
+ if (!dimmed)
+ dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), TRUE);
+
+ return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_mark_as_read_msg (ModestWindow *win, gpointer user_data)
+{
+ gboolean dimmed = FALSE;
+ TnyHeaderFlags flags;
+
+ g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
+
+ flags = TNY_HEADER_FLAG_SEEN;
+
+ /* Check dimmed rule */
+ if (!dimmed)
+ dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE);
+ if (!dimmed)
+ dimmed = _selected_msg_marked_as (win, flags, FALSE);
+
+ return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_mark_as_unread_msg (ModestWindow *win, gpointer user_data)
+{
+ gboolean dimmed = FALSE;
+ TnyHeaderFlags flags;
+
+ g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
+
+ flags = TNY_HEADER_FLAG_SEEN;
+
+ /* Check dimmed rule */
+ if (!dimmed)
+ dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE);
+ if (!dimmed)
+ dimmed = _selected_msg_marked_as (win, flags, TRUE);
+
+ return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_move_to (ModestWindow *win, gpointer user_data)
+{
+ gboolean dimmed = FALSE;
+
+ if (MODEST_IS_MAIN_WINDOW (win))
+ dimmed = modest_ui_dimming_rules_on_main_window_move_to (win, user_data);
+ else
+ dimmed = modest_ui_dimming_rules_on_view_window_move_to (win, user_data);
+
+ return dimmed;
+}
+
+
+gboolean
+modest_ui_dimming_rules_on_main_window_move_to (ModestWindow *win, gpointer user_data)
+{
+ GtkWidget *folder_view = NULL;
+ GtkWidget *header_view = NULL;
+ gboolean dimmed = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), TRUE);
+
+ /* Get the folder view */
+ folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
+ MODEST_WIDGET_TYPE_FOLDER_VIEW);
+
+ /* Get header view */
+ header_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW(win),
+ MODEST_WIDGET_TYPE_HEADER_VIEW);
+
+ /* Check common diming rules */
+
+ /* Check diming rules for folder transfer */
+ if (gtk_widget_is_focus (folder_view)) {
+ if (!dimmed)
+ dimmed = _selected_folder_not_writeable(MODEST_MAIN_WINDOW(win));
+ }
+ /* Check diming rules for msg transfer */
+ else if (gtk_widget_is_focus (header_view)) {
+ if (!dimmed)
+ dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE);
+
+ }
+
+ return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_view_window_move_to (ModestWindow *win, gpointer user_data)
+{
+ gboolean dimmed = FALSE;
+
+ return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_paste_msgs (ModestWindow *win, gpointer user_data)
+{
+ TnyFolderType types[3];
+ gboolean dimmed = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
+
+ types[0] = TNY_FOLDER_TYPE_DRAFTS;
+ types[1] = TNY_FOLDER_TYPE_OUTBOX;
+ types[2] = TNY_FOLDER_TYPE_SENT;
+
+ /* Check dimmed rule */
+ if (!dimmed)
+ dimmed = _selected_folder_is_any_of_type (MODEST_MAIN_WINDOW(win), types, 3);
+
+ return dimmed;
+}
+
+gboolean
+modest_ui_dimming_rules_on_delete_msgs (ModestWindow *win, gpointer user_data)
+{
+ TnyFolderType types[5];
+ gboolean dimmed = FALSE;
+
+ g_return_val_if_fail (MODEST_IS_MAIN_WINDOW(win), FALSE);
+
+ types[0] = TNY_FOLDER_TYPE_DRAFTS;
+ types[1] = TNY_FOLDER_TYPE_OUTBOX;
+ types[2] = TNY_FOLDER_TYPE_SENT;
+ types[3] = TNY_FOLDER_TYPE_INBOX;
+ types[4] = TNY_FOLDER_TYPE_ROOT;
+
+ /* Check dimmed rule */
+ if (!dimmed)
+ dimmed = _selected_folder_is_any_of_type (MODEST_MAIN_WINDOW(win), types, 5);
+
+ return dimmed;
+}
+
+