[libgdata] Bug 590345 – <gd:deleted> handling in GDataDocumentsEntry
- From: Philip Withnall <pwithnall src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [libgdata] Bug 590345 – <gd:deleted> handling in GDataDocumentsEntry
- Date: Sat, 1 Aug 2009 10:26:01 +0000 (UTC)
commit 68bd454a875f8f1a83791fff1d3db59399e138c9
Author: Philip Withnall <philip tecnocode co uk>
Date: Sat Aug 1 11:23:45 2009 +0100
Bug 590345 â?? <gd:deleted> handling in GDataDocumentsEntry
Patch by Thibault Saunier <saunierthibault gmail com> to add handling
for <gd:deleted> tags in the Documents service. Closes: bgo#590345
docs/reference/gdata-sections.txt | 1 +
gdata/gdata.symbols | 1 +
gdata/services/documents/gdata-documents-entry.c | 54 ++++++++++++++++++++--
gdata/services/documents/gdata-documents-entry.h | 2 +
4 files changed, 54 insertions(+), 4 deletions(-)
---
diff --git a/docs/reference/gdata-sections.txt b/docs/reference/gdata-sections.txt
index d8cf65e..fa49db7 100644
--- a/docs/reference/gdata-sections.txt
+++ b/docs/reference/gdata-sections.txt
@@ -1294,6 +1294,7 @@ gdata_documents_entry_get_last_modified_by
gdata_documents_entry_get_last_viewed
gdata_documents_entry_writers_can_invite
gdata_documents_entry_set_writers_can_invite
+gdata_documents_entry_is_deleted
<SUBSECTION Standard>
gdata_documents_entry_get_type
GDATA_DOCUMENTS_ENTRY
diff --git a/gdata/gdata.symbols b/gdata/gdata.symbols
index 2a43f59..7e3fae1 100644
--- a/gdata/gdata.symbols
+++ b/gdata/gdata.symbols
@@ -608,6 +608,7 @@ gdata_documents_entry_get_last_viewed
gdata_documents_entry_set_writers_can_invite
gdata_documents_entry_writers_can_invite
gdata_documents_entry_get_last_modified_by
+gdata_documents_entry_is_deleted
gdata_documents_query_get_type
gdata_documents_query_new
gdata_documents_query_new_with_limits
diff --git a/gdata/services/documents/gdata-documents-entry.c b/gdata/services/documents/gdata-documents-entry.c
index 7797a07..506b85c 100644
--- a/gdata/services/documents/gdata-documents-entry.c
+++ b/gdata/services/documents/gdata-documents-entry.c
@@ -58,6 +58,7 @@ struct _GDataDocumentsEntryPrivate {
GTimeVal last_viewed;
gchar *document_id;
gboolean writers_can_invite;
+ gboolean is_deleted;
GDataAuthor *last_modified_by;
};
@@ -66,6 +67,7 @@ enum {
PROP_LAST_VIEWED,
PROP_DOCUMENT_ID,
PROP_LAST_MODIFIED_BY,
+ PROP_IS_DELETED,
PROP_WRITERS_CAN_INVITE
};
@@ -133,6 +135,20 @@ gdata_documents_entry_class_init (GDataDocumentsEntryClass *klass)
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
/**
+ * GDataDocumentsEntry:is-deleted:
+ *
+ * Indicates whether the document entry has been deleted (moved to the trash). Deleted documents will only
+ * appear in query results if the #GDataDocumentsQuery:show-deleted property is %TRUE.
+ *
+ * Since: 0.5.0
+ **/
+ g_object_class_install_property (gobject_class, PROP_IS_DELETED,
+ g_param_spec_boolean ("is-deleted",
+ "Deleted?", "Indicates whether the document entry has been deleted.",
+ FALSE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ /**
* GDataDocumentsEntry:document-id
*
* The document ID of the document, which is different from its entry ID (GDataEntry:id).
@@ -157,6 +173,7 @@ gdata_documents_entry_class_init (GDataDocumentsEntryClass *klass)
"Last modified by", "Indicates the author of the last modification.",
GDATA_TYPE_AUTHOR,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
}
static void
@@ -180,9 +197,7 @@ gdata_documents_entry_access_handler_init (GDataAccessHandlerIface *iface)
static gboolean
parse_xml (GDataParsable *parsable, xmlDoc *doc, xmlNode *node, gpointer user_data, GError **error)
{
- GDataDocumentsEntry *self;
-
- self = GDATA_DOCUMENTS_ENTRY (parsable);
+ GDataDocumentsEntry *self = GDATA_DOCUMENTS_ENTRY (parsable);
if (xmlStrcmp (node->name, (xmlChar*) "edited") == 0) {
xmlChar *edited = xmlNodeListGetString (doc, node->children, TRUE);
@@ -212,6 +227,18 @@ parse_xml (GDataParsable *parsable, xmlDoc *doc, xmlNode *node, gpointer user_da
return FALSE;
}
xmlFree (writers_can_invite);
+ } else if (xmlStrcmp (node->name, (xmlChar*) "deleted") == 0) {
+ xmlChar *deleted = xmlGetProp (node, (xmlChar*) "value");
+ if (xmlStrcmp (deleted, (xmlChar*) "true") == 0) {
+ self->priv->is_deleted = TRUE;
+ } else if (xmlStrcmp (deleted, (xmlChar*) "false") == 0) {
+ self->priv->is_deleted = FALSE;
+ } else {
+ gdata_parser_error_unknown_property_value (node, "value", (gchar*) deleted, error);
+ xmlFree (deleted);
+ return FALSE;
+ }
+ xmlFree (deleted);
} else if (xmlStrcmp (node->name, (xmlChar*) "resourceId") == 0) {
gchar **document_id_parts;
xmlChar *resource_id;
@@ -290,6 +317,9 @@ gdata_documents_entry_get_property (GObject *object, guint property_id, GValue *
case PROP_WRITERS_CAN_INVITE:
g_value_set_boolean (value, priv->writers_can_invite);
break;
+ case PROP_IS_DELETED:
+ g_value_set_boolean (value, priv->is_deleted);
+ break;
case PROP_EDITED:
g_value_set_boxed (value, &(priv->edited));
break;
@@ -338,7 +368,6 @@ get_xml (GDataParsable *parsable, GString *xml_string)
g_string_append (xml_string, "<docs:writersCanInvite value='false'/>");
}
-
static void
get_namespaces (GDataParsable *parsable, GHashTable *namespaces)
{
@@ -511,6 +540,23 @@ gdata_documents_entry_get_last_modified_by (GDataDocumentsEntry *self)
return self->priv->last_modified_by;
}
+/**
+ * gdata_documents_entry_is_deleted:
+ * @self: a #GDataDocumentsEntry
+ *
+ * Gets the #GDataDocumentsEntry:is-deleted property.
+ *
+ * Return value: %TRUE if the document has been deleted, %FALSE otherwise
+ *
+ * Since: 0.5.0
+ **/
+gboolean
+gdata_documents_entry_is_deleted (GDataDocumentsEntry *self)
+{
+ g_return_val_if_fail (GDATA_IS_DOCUMENTS_ENTRY (self), FALSE);
+ return self->priv->is_deleted;
+}
+
static void
got_chunk_cb (SoupMessage *message, SoupBuffer *chunk, GOutputStream *output_stream)
{
diff --git a/gdata/services/documents/gdata-documents-entry.h b/gdata/services/documents/gdata-documents-entry.h
index ef97d21..b3ab722 100644
--- a/gdata/services/documents/gdata-documents-entry.h
+++ b/gdata/services/documents/gdata-documents-entry.h
@@ -76,6 +76,8 @@ gboolean gdata_documents_entry_writers_can_invite (GDataDocumentsEntry *self);
GDataAuthor *gdata_documents_entry_get_last_modified_by (GDataDocumentsEntry *self);
+gboolean gdata_documents_entry_is_deleted (GDataDocumentsEntry *self);
+
G_END_DECLS
#endif /* !GDATA_DOCUMENTS_ENTRY_H */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]