When moving messages to a local folder don't try to connect if the
[modest] / src / modest-email-clipboard.c
index b91eea4..e3b489a 100644 (file)
@@ -28,6 +28,7 @@
  */
 
 #include <modest-email-clipboard.h>
+#include <modest-tny-folder.h>
 
 /* 'private'/'protected' functions */
 static void modest_email_clipboard_class_init (ModestEmailClipboardClass * klass);
@@ -261,6 +262,8 @@ gboolean
 modest_email_clipboard_check_source_folder (ModestEmailClipboard *self,
                                            const TnyFolder *folder)
 {
+       TnyFolderType folder_type1;
+       TnyFolderType folder_type2;
        ModestEmailClipboardPrivate *priv = NULL;;
        const gchar *id1 = NULL;
        const gchar *id2 = NULL;
@@ -275,12 +278,61 @@ modest_email_clipboard_check_source_folder (ModestEmailClipboard *self,
 
        /* Check target and source folders */
        id1 = tny_folder_get_id (priv->src);
-       id2 = tny_folder_get_id (TNY_FOLDER(folder));
-       same_folder = !g_ascii_strcasecmp (id1, id2);
+       id2 = tny_folder_get_id (TNY_FOLDER(folder));   
+       folder_type1 = modest_tny_folder_guess_folder_type (priv->src);
+       folder_type2 = modest_tny_folder_guess_folder_type (folder);
+       same_folder = ((folder_type1 == folder_type2) && 
+                      (!g_ascii_strcasecmp (id1, id2)));
        
        return same_folder;
 }
 
+gboolean 
+modest_email_clipboard_headers_copied (ModestEmailClipboard *self)
+{
+       ModestEmailClipboardPrivate *priv = NULL;;
+       gboolean result = FALSE;
+
+       g_return_val_if_fail (MODEST_IS_EMAIL_CLIPBOARD (self), FALSE);
+       priv = MODEST_EMAIL_CLIPBOARD_GET_PRIVATE (self);
+
+       result = priv->selection != NULL;
+
+       return result;
+}
+
+gboolean 
+modest_email_clipboard_folder_copied (ModestEmailClipboard *self)
+{
+       ModestEmailClipboardPrivate *priv = NULL;;
+       gboolean result = FALSE;
+
+       g_return_val_if_fail (MODEST_IS_EMAIL_CLIPBOARD (self), FALSE);
+       priv = MODEST_EMAIL_CLIPBOARD_GET_PRIVATE (self);
+       
+       result = ((priv->selection == NULL) && (priv->src != NULL));
+       
+       return result; 
+}
+
+const gchar *
+modest_email_clipboard_get_folder_name (ModestEmailClipboard *self)
+{
+       ModestEmailClipboardPrivate *priv = NULL;;
+       const gchar *folder_name = NULL;
+
+       g_return_val_if_fail (MODEST_IS_EMAIL_CLIPBOARD (self), NULL);
+       priv = MODEST_EMAIL_CLIPBOARD_GET_PRIVATE (self);
+       
+       /* If cleared, return always FALSE*/
+       if (modest_email_clipboard_cleared (self)) return NULL;
+
+       /* Check target and source folders */
+       folder_name = tny_folder_get_name (priv->src);
+       
+       return folder_name;
+}
+
 const gchar **
 modest_email_clipboard_get_hidding_ids (ModestEmailClipboard *self,
                                        guint *n_selected)