X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-email-clipboard.c;h=0a71d884c3440ec3b6e42332d8fa1ee038baf024;hp=c6f6a23770c1327cdd010b385bd0d452dc8edddb;hb=431e6afaedd1f67abdca9e5bb7b14e5027401d00;hpb=5b4b1e47ea1e14c79c2805843f6b2d25623d1881 diff --git a/src/modest-email-clipboard.c b/src/modest-email-clipboard.c index c6f6a23..0a71d88 100644 --- a/src/modest-email-clipboard.c +++ b/src/modest-email-clipboard.c @@ -27,6 +27,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include #include #include @@ -38,7 +39,6 @@ static void modest_email_clipboard_finalize (GObject * obj); /* globals */ static GObjectClass *parent_class = NULL; -typedef struct _ModestEmailClipboardPrivate ModestEmailClipboardPrivate; struct _ModestEmailClipboardPrivate { TnyList *selection; TnyFolder *src; @@ -57,7 +57,7 @@ modest_email_clipboard_get_type (void) { static GType my_type = 0; - if (!my_type) { + if (G_UNLIKELY (!my_type)) { static const GTypeInfo my_info = { sizeof (ModestEmailClipboardClass), NULL, /* base init */ @@ -99,13 +99,14 @@ modest_email_clipboard_class_init (ModestEmailClipboardClass * klass) static void modest_email_clipboard_init (ModestEmailClipboard * obj) { - ModestEmailClipboardPrivate *priv = - MODEST_EMAIL_CLIPBOARD_GET_PRIVATE (obj); + + if (obj->priv == NULL) + obj->priv = MODEST_EMAIL_CLIPBOARD_GET_PRIVATE (obj); - priv->src = NULL; - priv->selection = NULL; - priv->hidding = NULL; - priv->delete = FALSE; + obj->priv->src = NULL; + obj->priv->selection = NULL; + obj->priv->hidding = NULL; + obj->priv->delete = FALSE; } static void @@ -119,13 +120,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); } @@ -198,7 +196,7 @@ modest_email_clipboard_set_data (ModestEmailClipboard *self, while (!tny_iterator_is_done (iter)) { obj = tny_iterator_get_current (iter); if (obj && TNY_IS_HEADER (obj)) - id = g_strdup(tny_header_get_message_id (TNY_HEADER (obj))); + id = tny_header_dup_message_id (TNY_HEADER (obj)); priv->hidding[i++] = id; tny_iterator_next (iter); @@ -247,20 +245,18 @@ modest_email_clipboard_clear (ModestEmailClipboard *self) gboolean modest_email_clipboard_cleared (ModestEmailClipboard *self) { - ModestEmailClipboardPrivate *priv = NULL;; gboolean cleared = FALSE; g_return_val_if_fail (MODEST_IS_EMAIL_CLIPBOARD (self), TRUE); - priv = MODEST_EMAIL_CLIPBOARD_GET_PRIVATE (self); - cleared = ((priv->src == NULL) && (priv->selection == NULL)); + cleared = ((self->priv->src == NULL) && (self->priv->selection == NULL)); return cleared; } gboolean modest_email_clipboard_check_source_folder (ModestEmailClipboard *self, - const TnyFolder *folder) + TnyFolder *folder) { TnyFolderType folder_type1; TnyFolderType folder_type2; @@ -281,12 +277,62 @@ modest_email_clipboard_check_source_folder (ModestEmailClipboard *self, 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)