static void g_mime_object_finalize (GObject *object) { GMimeObject *mime = (GMimeObject *) object; GMimeEvent *event; if (mime->content_type) { event = mime->content_type->changed; g_mime_event_remove (event, (GMimeEventCallback) content_type_changed, object); g_object_unref (mime->content_type); } if (mime->disposition) { event = mime->disposition->changed; g_mime_event_remove (event, (GMimeEventCallback) content_disposition_changed, object); g_object_unref (mime->disposition); } if (mime->headers) { event = mime->headers->changed; g_mime_event_remove (event, (GMimeEventCallback) header_list_changed, object); g_object_unref (mime->headers); } g_free (mime->content_id); G_OBJECT_CLASS (parent_class)->finalize (object); }
/** * internet_address_list_set_address: * @list: a #InternetAddressList * @index: index of #InternetAddress to set * @ia: a #InternetAddress * * Sets the #InternetAddress at the specified index to @ia. **/ void internet_address_list_set_address (InternetAddressList *list, int index, InternetAddress *ia) { InternetAddress *old; g_return_if_fail (IS_INTERNET_ADDRESS_LIST (list)); g_return_if_fail (IS_INTERNET_ADDRESS (ia)); g_return_if_fail (index >= 0); if ((guint) index > list->array->len) return; if ((guint) index == list->array->len) { internet_address_list_add (list, ia); return; } if ((old = list->array->pdata[index]) == ia) return; g_mime_event_remove (old->priv, (GMimeEventCallback) address_changed, list); g_object_unref (old); g_mime_event_add (ia->priv, (GMimeEventCallback) address_changed, list); list->array->pdata[index] = ia; g_object_ref (ia); g_mime_event_emit (list->priv, NULL); }
static void object_header_removed (GMimeObject *object, GMimeHeader *header) { GMimeEvent *event; const char *name; guint i; name = g_mime_header_get_name (header); if (g_ascii_strncasecmp (name, "Content-", 8) != 0) return; for (i = 0; i < G_N_ELEMENTS (content_headers); i++) { if (!g_ascii_strcasecmp (content_headers[i] + 8, name + 8)) break; } switch (i) { case HEADER_CONTENT_DISPOSITION: if (object->disposition) { event = object->disposition->changed; g_mime_event_remove (event, (GMimeEventCallback) content_disposition_changed, object); g_object_unref (object->disposition); object->disposition = NULL; } break; case HEADER_CONTENT_TYPE: /* never allow the removal of the Content-Type header */ break; case HEADER_CONTENT_ID: g_free (object->content_id); object->content_id = NULL; break; } }
static void internet_address_group_finalize (GObject *object) { InternetAddressGroup *group = (InternetAddressGroup *) object; g_mime_event_remove (group->members->priv, (GMimeEventCallback) members_changed, group); g_object_unref (group->members); G_OBJECT_CLASS (group_parent_class)->finalize (object); }
static void object_headers_cleared (GMimeObject *object) { GMimeEvent *event; if (object->disposition) { event = object->disposition->changed; g_mime_event_remove (event, (GMimeEventCallback) content_disposition_changed, object); g_object_unref (object->disposition); object->disposition = NULL; } g_free (object->content_id); object->content_id = NULL; }
/** * internet_address_list_clear: * @list: a #InternetAddressList * * Clears the list of addresses. **/ void internet_address_list_clear (InternetAddressList *list) { InternetAddress *ia; guint i; g_return_if_fail (IS_INTERNET_ADDRESS_LIST (list)); for (i = 0; i < list->array->len; i++) { ia = (InternetAddress *) list->array->pdata[i]; g_mime_event_remove (ia->priv, (GMimeEventCallback) address_changed, list); g_object_unref (ia); } g_ptr_array_set_size (list->array, 0); g_mime_event_emit (list->priv, NULL); }
static void internet_address_list_finalize (GObject *object) { InternetAddressList *list = (InternetAddressList *) object; InternetAddress *ia; guint i; for (i = 0; i < list->array->len; i++) { ia = (InternetAddress *) list->array->pdata[i]; g_mime_event_remove (ia->priv, (GMimeEventCallback) address_changed, list); g_object_unref (ia); } g_mime_event_destroy (list->priv); g_ptr_array_free (list->array, TRUE); G_OBJECT_CLASS (list_parent_class)->finalize (object); }
/** * internet_address_list_remove_at: * @list: a #InternetAddressList * @index: index to remove * * Removes an #InternetAddress from the #InternetAddressList at the * specified index. * * Returns: %TRUE if an #InternetAddress was removed or %FALSE * otherwise. **/ gboolean internet_address_list_remove_at (InternetAddressList *list, int index) { InternetAddress *ia; g_return_val_if_fail (IS_INTERNET_ADDRESS_LIST (list), FALSE); g_return_val_if_fail (index >= 0, FALSE); if ((guint) index >= list->array->len) return FALSE; ia = list->array->pdata[index]; g_mime_event_remove (ia->priv, (GMimeEventCallback) address_changed, list); g_object_unref (ia); g_ptr_array_remove_index (list->array, index); g_mime_event_emit (list->priv, NULL); return TRUE; }
/** * internet_address_group_set_members: * @group: a #InternetAddressGroup * @members: a #InternetAddressList * * Set the members of the internet address group. **/ void internet_address_group_set_members (InternetAddressGroup *group, InternetAddressList *members) { g_return_if_fail (INTERNET_ADDRESS_IS_GROUP (group)); g_return_if_fail (IS_INTERNET_ADDRESS_LIST (members)); if (group->members == members) return; if (group->members) { g_mime_event_remove (group->members->priv, (GMimeEventCallback) members_changed, group); g_object_unref (group->members); } if (members) { g_mime_event_add (members->priv, (GMimeEventCallback) members_changed, group); g_object_ref (members); } group->members = members; g_mime_event_emit (((InternetAddress *) group)->priv, NULL); }