* set the folder name in instead of the folder-url for the search results
[modest] / src / modest-ui-dimming-rules.c
index 4eb4acd..ade82f1 100644 (file)
@@ -35,6 +35,7 @@
 #include "modest-ui-dimming-rules.h"
 #include "modest-dimming-rule.h"
 #include "modest-tny-folder.h"
+#include "modest-text-utils.h"
 #include <widgets/modest-attachments-view.h>
 #include <modest-runtime.h>
 #include <tny-simple-list.h>
@@ -92,10 +93,9 @@ modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data)
        
        if (TNY_IS_ACCOUNT (parent_folder)) {
                /* If it's the local account then do not dim */
-               if (modest_tny_account_is_virtual_local_folders (
-                       TNY_ACCOUNT (parent_folder)))
-                       return FALSE;
-               else {
+               if (modest_tny_account_is_virtual_local_folders (TNY_ACCOUNT (parent_folder))) {
+                       dimmed = FALSE;
+               } else {
                        const gchar *proto_str = tny_account_get_proto (TNY_ACCOUNT (parent_folder));
                        /* If it's POP then dim */
                        dimmed = (modest_protocol_info_get_transport_store_protocol (proto_str) == 
@@ -116,6 +116,7 @@ modest_ui_dimming_rules_on_new_folder (ModestWindow *win, gpointer user_data)
                if (!dimmed)
                        dimmed = _selected_folder_is_any_of_type (win, types, 3);
        }
+       g_object_unref (parent_folder);
 
        return dimmed;
 }
@@ -287,8 +288,7 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data)
 {
        ModestDimmingRule *rule = 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);
        
@@ -297,7 +297,7 @@ modest_ui_dimming_rules_on_delete_msg (ModestWindow *win, gpointer user_data)
                if (!dimmed) {
                        dimmed = _selected_folder_is_empty (MODEST_MAIN_WINDOW(win));                   
                        if (dimmed)
-                               modest_dimming_rule_set_notification (rule, _("mcen_ib_nothing_to_del"));
+                               modest_dimming_rule_set_notification (rule, _("ckct_ib_nothing_to_delete"));
                }
                if (!dimmed) {
                        dimmed = _invalid_msg_selected (MODEST_MAIN_WINDOW(win), FALSE, user_data);
@@ -655,6 +655,27 @@ modest_ui_dimming_rules_on_send_receive (ModestWindow *win, gpointer user_data)
        return dimmed;
 }
 
+gboolean
+modest_ui_dimming_rules_on_add_to_contacts (ModestWindow *win, gpointer user_data)
+{
+       ModestDimmingRule *rule = NULL;
+       gboolean dimmed = FALSE;
+
+       g_return_val_if_fail (MODEST_IS_DIMMING_RULE (user_data), FALSE);
+       rule = MODEST_DIMMING_RULE (user_data);
+
+       /* Check dimmed rule */
+       if (!dimmed) {
+               GtkClipboard *clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY);
+               gchar *selection = NULL;
+               selection = gtk_clipboard_wait_for_text (clipboard);
+
+               dimmed = !((selection != NULL) && (modest_text_utils_validate_recipient (selection)));
+       }
+
+       return dimmed;
+}
+
 /* *********************** static utility functions ******************** */
 
 static gboolean 
@@ -692,8 +713,11 @@ _selected_folder_not_writeable (ModestMainWindow *win)
        
        /* Get selected folder as parent of new folder to create */
        parent_folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
-       if (!(parent_folder && TNY_IS_FOLDER(parent_folder)))
+       if (!(parent_folder && TNY_IS_FOLDER(parent_folder))) {
+               if (parent_folder)
+                       g_object_unref (parent_folder);
                return TRUE;
+       }
        
        /* Check dimmed rule */ 
        rules = modest_tny_folder_get_rules (TNY_FOLDER (parent_folder));
@@ -765,10 +789,9 @@ _selected_folder_is_MMC_or_POP_root (ModestMainWindow *win)
        
        if (TNY_IS_ACCOUNT (parent_folder)) {
                /* If it's the local account then do not dim */
-               if (modest_tny_account_is_virtual_local_folders (
-                                                                TNY_ACCOUNT (parent_folder)))
-                       return FALSE;
-               else {
+               if (modest_tny_account_is_virtual_local_folders (TNY_ACCOUNT (parent_folder))) {
+                       result = FALSE;
+               } else {
                                /* If it's the MMC root folder then dim it */
                        if (!strcmp (tny_account_get_id (TNY_ACCOUNT (parent_folder)), MODEST_MMC_ACCOUNT_ID)) {
                                        result = TRUE;
@@ -780,6 +803,7 @@ _selected_folder_is_MMC_or_POP_root (ModestMainWindow *win)
                        }
                }
        }
+       g_object_unref (parent_folder);
 
        return result;
 }
@@ -805,8 +829,11 @@ _selected_folder_is_empty (ModestMainWindow *win)
        
        /* Get selected folder as parent of new folder to create */
        folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
-       if (!(folder && TNY_IS_FOLDER(folder)))
+       if (!(folder && TNY_IS_FOLDER(folder))) {
+               if (folder)
+                       g_object_unref (folder);
                return TRUE;
+       }
        
        /* Check folder type */
        result = tny_folder_get_all_count (TNY_FOLDER (folder)) == 0;
@@ -841,8 +868,11 @@ _selected_folder_is_any_of_type (ModestWindow *win,
                /* Get selected folder as parent of new folder to create */
                folder = modest_folder_view_get_selected (MODEST_FOLDER_VIEW(folder_view));
 
-               if (!(folder && TNY_IS_FOLDER(folder)))
+               if (!(folder && TNY_IS_FOLDER(folder))) {
+                       if (folder)
+                               g_object_unref (folder);
                        return TRUE;
+               }
                
                /* Check folder type */
                result = _folder_is_any_of_type (TNY_FOLDER(folder), types, ntypes);
@@ -953,7 +983,7 @@ _invalid_attach_selected (ModestWindow *win,
                        result = n_selected != 1;
                else
                        
-                       result = n_selected == 1;
+                       result = n_selected < 1;
                
                /* Set notifications */
                if (!result && rule != NULL) {
@@ -999,9 +1029,8 @@ _invalid_msg_selected (ModestMainWindow *win,
 
        /* Check dimmed rule (TODO: check focus on widgets */   
        if (!result) {
-               result = (selected_headers == NULL);
-/*             result = ((selected_headers == NULL) ||  */
-/*                       (GTK_WIDGET_HAS_FOCUS (folder_view))); */
+               result = ((selected_headers == NULL) ||
+                         (gtk_widget_is_focus (folder_view)));
                if (result)
                        modest_dimming_rule_set_notification (rule, _("mcen_ib_no_message_selected"));
        }
@@ -1220,8 +1249,8 @@ _selected_msg_sent_in_progress (ModestWindow *win)
        /* Free */
        g_free(id);
        g_object_unref (header);
-       g_free(header_list);
-       g_free(iter);
+       g_object_unref(header_list);
+       g_object_unref(iter);
 
        return result;
 }