X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-email-clipboard.c;h=933f09eee859ee4e05111234c4bbe01efa713ed9;hb=96d0d173e287c0453ba53589fe7f407136590b9d;hp=af0e19214c97a0a32806b74a34a5bb091f464ab6;hpb=bf831b6566516e6b57de7a64afb732eb8686e792;p=modest diff --git a/src/modest-email-clipboard.c b/src/modest-email-clipboard.c index af0e192..933f09e 100644 --- a/src/modest-email-clipboard.c +++ b/src/modest-email-clipboard.c @@ -28,6 +28,7 @@ */ #include +#include /* 'private'/'protected' functions */ static void modest_email_clipboard_class_init (ModestEmailClipboardClass * klass); @@ -118,13 +119,10 @@ modest_email_clipboard_finalize (GObject * obj) ModestEmailClipboard * -modest_email_clipboard_new () +modest_email_clipboard_new (void) { GObject *obj; - ModestEmailClipboardPrivate *priv; - obj = G_OBJECT (g_object_new (MODEST_TYPE_EMAIL_CLIPBOARD, NULL)); - priv = MODEST_EMAIL_CLIPBOARD_GET_PRIVATE (obj); return MODEST_EMAIL_CLIPBOARD (obj); } @@ -196,13 +194,14 @@ modest_email_clipboard_set_data (ModestEmailClipboard *self, i = 0; while (!tny_iterator_is_done (iter)) { obj = tny_iterator_get_current (iter); - if (TNY_IS_HEADER (obj)) + if (obj && TNY_IS_HEADER (obj)) id = g_strdup(tny_header_get_message_id (TNY_HEADER (obj))); priv->hidding[i++] = id; tny_iterator_next (iter); - g_object_unref (obj); + if (obj) + g_object_unref (obj); } g_object_unref (iter); } @@ -256,6 +255,85 @@ modest_email_clipboard_cleared (ModestEmailClipboard *self) return cleared; } +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; + gboolean same_folder = FALSE; + + g_return_val_if_fail (MODEST_IS_EMAIL_CLIPBOARD (self), TRUE); + g_return_val_if_fail (TNY_IS_FOLDER (folder), TRUE); + priv = MODEST_EMAIL_CLIPBOARD_GET_PRIVATE (self); + + /* If cleared, return always FALSE*/ + if (modest_email_clipboard_cleared (self)) return FALSE; + + /* Check target and source folders */ + id1 = tny_folder_get_id (priv->src); + 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); + + if (folder_type1 == TNY_FOLDER_TYPE_INVALID || folder_type2 == TNY_FOLDER_TYPE_INVALID) + g_warning ("%s: BUG: folder of type TNY_FOLDER_TYPE_INVALID", __FUNCTION__); + + 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)