Added getURI to AtkStreamableContent.
authorBill Haneman <billh@src.gnome.org>
Wed, 14 Jun 2006 19:44:04 +0000 (19:44 +0000)
committerBill Haneman <billh@src.gnome.org>
Wed, 14 Jun 2006 19:44:04 +0000 (19:44 +0000)
ChangeLog
atk/atkstreamablecontent.c
atk/atkstreamablecontent.h

index 520fbfc..338ff4a 100644 (file)
--- 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
index 6b56456..969e57e 100755 (executable)
@@ -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;
+}
index 718120c..eb7f56e 100755 (executable)
@@ -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