summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rwxr-xr-xatk/atkstreamablecontent.c35
-rwxr-xr-xatk/atkstreamablecontent.h24
3 files changed, 63 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 520fbfc..338ff4a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-06-14 Bill Haneman <bill.haneman@sun.com>
+
+ * atk/atkstreamablecontent.h, atkstreamablecontent.c:
+ (atk_streamable_content_get_uri): New method, returns a string
+ representing a URI from which content may be streamed.
+ See RFE #344885.
+
2006-06-08 Bill Haneman <bill.haneman@sun.com>
* atk/Makefile.am: Added $(srcfile) to win32
diff --git a/atk/atkstreamablecontent.c b/atk/atkstreamablecontent.c
index 6b56456..969e57e 100755
--- a/atk/atkstreamablecontent.c
+++ b/atk/atkstreamablecontent.c
@@ -116,3 +116,38 @@ atk_streamable_content_get_stream (AtkStreamableContent *streamable,
else
return NULL;
}
+
+/*
+ * atk_streamable_content_get_uri:
+ * @streamable: a GObject instance that implements AtkStreamableContentIface
+ * @mime_type: a gchar* representing the mime type, or NULL to request a URI
+ * for the default mime type.
+ *
+ * Get a string representing a URI in IETF standard format
+ * (see http://www.ietf.org/rfc/rfc2396.txt) from which the object's content
+ * may be streamed in the specified mime-type, if one is available.
+ * If mime_type is NULL, the URI for the default (and possibly only) mime-type is
+ * returned.
+ *
+ * Note that it is possible for get_uri to return NULL but for
+ * get_stream to work nonetheless, since not all GIOChannels connect to URIs.
+ *
+ * Returns: Returns a string representing a URI, or NULL if no corresponding URI
+ * can be constructed.
+ */
+ GIOChannel*
+atk_streamable_content_get_uri (AtkStreamableContent *streamable,
+ const gchar *mime_type)
+{
+ AtkStreamableContentIface *iface;
+
+ g_return_val_if_fail (mime_type != NULL, NULL);
+ g_return_val_if_fail (ATK_IS_STREAMABLE_CONTENT (streamable), NULL);
+
+ iface = ATK_STREAMABLE_CONTENT_GET_IFACE (streamable);
+
+ if (iface->get_uri)
+ return (iface->get_uri) (streamable, mime_type);
+ else
+ return NULL;
+}
diff --git a/atk/atkstreamablecontent.h b/atk/atkstreamablecontent.h
index 718120c..eb7f56e 100755
--- a/atk/atkstreamablecontent.h
+++ b/atk/atkstreamablecontent.h
@@ -48,7 +48,8 @@ struct _AtkStreamableContentIface
/*
* Gets the specified mime type supported by this object.
* The mime types are 0-based so the first mime type is
- * at index 0, the second at index 1 and so on.
+ * at index 0, the second at index 1 and so on. The mime-type
+ * at index 0 should be considered the "default" data type for the stream.
*
* This assumes that the strings for the mime types are stored in the
* AtkStreamableContent. Alternatively the G_CONST_RETURN could be removed
@@ -58,7 +59,7 @@ struct _AtkStreamableContentIface
G_CONST_RETURN gchar* (* get_mime_type) (AtkStreamableContent *streamable,
gint i);
/*
- * Is one possible implementation for this method that it constructs the
+ * One possible implementation for this method is that it constructs the
* content appropriate for the mime type and then creates a temporary
* file containing the content, opens the file and then calls
* g_io_channel_unix_new_fd().
@@ -66,10 +67,24 @@ struct _AtkStreamableContentIface
GIOChannel* (* get_stream) (AtkStreamableContent *streamable,
const gchar *mime_type);
+/*
+ * Returns a string representing a URI in IETF standard format
+ * (see http://www.ietf.org/rfc/rfc2396.txt) from which the object's content
+ * may be streamed in the specified mime-type.
+ * If mime_type is NULL, the URI for the default (and possibly only) mime-type is
+ * returned.
+ *
+ * returns NULL if the mime-type is not supported, or if no URI can be
+ * constructed. Note that it is possible for get_uri to return NULL but for
+ * get_stream to work nonetheless, since not all GIOChannels connect to URIs.
+ */
+ G_CONST_RETURN gchar* (* get_uri) (AtkStreamableContent *streamable,
+ const gchar *mime_type);
+
+
AtkFunction pad1;
AtkFunction pad2;
AtkFunction pad3;
- AtkFunction pad4;
};
GType atk_streamable_content_get_type (void);
@@ -79,6 +94,9 @@ G_CONST_RETURN gchar* atk_streamable_content_get_mime_type (AtkStreamableCon
gint i);
GIOChannel* atk_streamable_content_get_stream (AtkStreamableContent *streamable,
const gchar *mime_type);
+);
+gchar* atk_streamable_content_get_uri (AtkStreamableContent *streamable,
+ const gchar *mime_type);
#ifdef __cplusplus