[evolution] EMailPart: Add "part-list" property.
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution] EMailPart: Add "part-list" property.
- Date: Wed, 5 Jun 2013 21:14:10 +0000 (UTC)
commit 6be4901bae497b2aaf6bde559661f2390adeb9fb
Author: Matthew Barnes <mbarnes redhat com>
Date: Wed Jun 5 16:35:56 2013 -0400
EMailPart: Add "part-list" property.
This is a weak reference to the EMailPartList to which the EMailPart
has been added. The property is set by e_mail_part_list_add_part().
New functions:
e_mail_part_ref_part_list()
e_mail_part_set_part_list()
.../evolution-mail-formatter-sections.txt | 2 +
em-format/e-mail-part-list.c | 4 +-
em-format/e-mail-part.c | 54 +++++++++++++++++++-
em-format/e-mail-part.h | 6 ++
4 files changed, 64 insertions(+), 2 deletions(-)
---
diff --git a/doc/reference/evolution-mail-formatter/evolution-mail-formatter-sections.txt
b/doc/reference/evolution-mail-formatter/evolution-mail-formatter-sections.txt
index 0c123bd..67cf18e 100644
--- a/doc/reference/evolution-mail-formatter/evolution-mail-formatter-sections.txt
+++ b/doc/reference/evolution-mail-formatter/evolution-mail-formatter-sections.txt
@@ -249,6 +249,8 @@ e_mail_part_id_has_substr
e_mail_part_ref_mime_part
e_mail_part_get_mime_type
e_mail_part_set_mime_type
+e_mail_part_ref_part_list
+e_mail_part_set_part_list
e_mail_part_get_is_attachment
e_mail_part_set_is_attachment
e_mail_part_bind_dom_element
diff --git a/em-format/e-mail-part-list.c b/em-format/e-mail-part-list.c
index c866e6a..bcf7490 100644
--- a/em-format/e-mail-part-list.c
+++ b/em-format/e-mail-part-list.c
@@ -289,7 +289,7 @@ e_mail_part_list_add_part (EMailPartList *part_list,
EMailPart *part)
{
g_return_if_fail (E_IS_MAIL_PART_LIST (part_list));
- g_return_if_fail (part != NULL);
+ g_return_if_fail (E_IS_MAIL_PART (part));
g_mutex_lock (&part_list->priv->queue_lock);
@@ -298,6 +298,8 @@ e_mail_part_list_add_part (EMailPartList *part_list,
g_object_ref (part));
g_mutex_unlock (&part_list->priv->queue_lock);
+
+ e_mail_part_set_part_list (part, part_list);
}
EMailPart *
diff --git a/em-format/e-mail-part.c b/em-format/e-mail-part.c
index abd405d..b4ba2b3 100644
--- a/em-format/e-mail-part.c
+++ b/em-format/e-mail-part.c
@@ -31,11 +31,14 @@
#include <string.h>
+#include "e-mail-part-list.h"
+
#define E_MAIL_PART_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
((obj), E_TYPE_MAIL_PART, EMailPartPrivate))
struct _EMailPartPrivate {
+ GWeakRef part_list;
CamelMimePart *mime_part;
gchar *id;
@@ -51,7 +54,8 @@ enum {
PROP_ID,
PROP_IS_ATTACHMENT,
PROP_MIME_PART,
- PROP_MIME_TYPE
+ PROP_MIME_TYPE,
+ PROP_PART_LIST
};
G_DEFINE_TYPE (
@@ -127,6 +131,12 @@ mail_part_set_property (GObject *object,
E_MAIL_PART (object),
g_value_get_string (value));
return;
+
+ case PROP_PART_LIST:
+ e_mail_part_set_part_list (
+ E_MAIL_PART (object),
+ g_value_get_object (value));
+ return;
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -173,6 +183,13 @@ mail_part_get_property (GObject *object,
e_mail_part_get_mime_type (
E_MAIL_PART (object)));
return;
+
+ case PROP_PART_LIST:
+ g_value_take_object (
+ value,
+ e_mail_part_ref_part_list (
+ E_MAIL_PART (object)));
+ return;
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -185,6 +202,8 @@ mail_part_dispose (GObject *object)
priv = E_MAIL_PART_GET_PRIVATE (object);
+ g_weak_ref_set (&priv->part_list, NULL);
+
g_clear_object (&priv->mime_part);
/* Chain up to parent's dispose() method. */
@@ -278,6 +297,17 @@ e_mail_part_class_init (EMailPartClass *class)
NULL,
G_PARAM_READWRITE |
G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_PART_LIST,
+ g_param_spec_object (
+ "part-list",
+ "Part List",
+ "The part list that owns the part",
+ E_TYPE_MAIL_PART_LIST,
+ G_PARAM_READWRITE |
+ G_PARAM_STATIC_STRINGS));
}
static void
@@ -400,6 +430,28 @@ e_mail_part_set_mime_type (EMailPart *part,
g_object_notify (G_OBJECT (part), "mime-type");
}
+EMailPartList *
+e_mail_part_ref_part_list (EMailPart *part)
+{
+ g_return_val_if_fail (E_IS_MAIL_PART (part), NULL);
+
+ return g_weak_ref_get (&part->priv->part_list);
+}
+
+void
+e_mail_part_set_part_list (EMailPart *part,
+ EMailPartList *part_list)
+{
+ g_return_if_fail (E_IS_MAIL_PART (part));
+
+ if (part_list != NULL)
+ g_return_if_fail (E_IS_MAIL_PART_LIST (part_list));
+
+ g_weak_ref_set (&part->priv->part_list, part_list);
+
+ g_object_notify (G_OBJECT (part), "part-list");
+}
+
gboolean
e_mail_part_get_is_attachment (EMailPart *part)
{
diff --git a/em-format/e-mail-part.h b/em-format/e-mail-part.h
index f710f40..75057c2 100644
--- a/em-format/e-mail-part.h
+++ b/em-format/e-mail-part.h
@@ -47,6 +47,8 @@
G_BEGIN_DECLS
+struct _EMailPartList;
+
typedef struct _EMailPart EMailPart;
typedef struct _EMailPartClass EMailPartClass;
typedef struct _EMailPartPrivate EMailPartPrivate;
@@ -106,6 +108,10 @@ CamelMimePart * e_mail_part_ref_mime_part (EMailPart *part);
const gchar * e_mail_part_get_mime_type (EMailPart *part);
void e_mail_part_set_mime_type (EMailPart *part,
const gchar *mime_type);
+struct _EMailPartList *
+ e_mail_part_ref_part_list (EMailPart *part);
+void e_mail_part_set_part_list (EMailPart *part,
+ struct _EMailPartList *part_list);
gboolean e_mail_part_get_is_attachment (EMailPart *part);
void e_mail_part_set_is_attachment (EMailPart *part,
gboolean is_attachment);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]