--- a/talkatu/talkatuattachment.c Thu Dec 05 20:06:17 2019 -0600
+++ b/talkatu/talkatuattachment.c Fri Dec 06 22:37:52 2019 -0600
@@ -45,6 +45,7 @@
@@ -53,6 +54,7 @@
@@ -74,6 +76,18 @@
+talkatu_attachment_set_filename(TalkatuAttachment *attachment, + g_clear_pointer(&attachment->filename, g_free); + attachment->filename = g_strdup(filename); + g_object_notify_by_pspec(G_OBJECT(attachment), + properties[PROP_FILENAME]); talkatu_attachment_set_contents(TalkatuAttachment *attachment,
@@ -97,6 +111,9 @@
g_value_set_string(value, talkatu_attachment_get_content_type(attachment));
+ g_value_set_string(value, talkatu_attachment_get_filename(attachment)); g_value_set_boxed(value, talkatu_attachment_get_contents(attachment));
@@ -114,6 +131,9 @@
talkatu_attachment_set_content_type(attachment, g_value_get_string(value));
+ talkatu_attachment_set_filename(attachment, g_value_get_string(value)); talkatu_attachment_set_contents(attachment, g_value_get_boxed(value));
@@ -128,6 +148,7 @@
TalkatuAttachment *attachment = TALKATU_ATTACHMENT(obj);
g_clear_pointer(&attachment->content_type, g_free);
+ g_clear_pointer(&attachment->filename, g_free); g_clear_pointer(&attachment->contents, g_bytes_unref);
G_OBJECT_CLASS(talkatu_attachment_parent_class)->finalize(obj);
@@ -152,6 +173,12 @@
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS
+ properties[PROP_FILENAME] = g_param_spec_string( + "filename", "filename", "The filename of the attachment", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS properties[PROP_CONTENTS] = g_param_spec_boxed(
"contents", "contents", "The contents stored in a GBytes",
@@ -168,6 +195,7 @@
* talkatu_attachment_new:
* @content_type: The content type of the attachment.
+ * @filename: The filename of the attachment. * @contents: A #GBytes that contains the data of the attachment.
* Creates a new attachment with @content_type and @contents.
@@ -175,13 +203,17 @@
* Returns: (transfer full): The new #TalkatuAttachment.
-talkatu_attachment_new(const gchar *content_type, GBytes *contents) {
+talkatu_attachment_new(const gchar *content_type, const gchar *filename, g_return_val_if_fail(content_type != NULL, NULL);
+ g_return_val_if_fail(filename != NULL, NULL); g_return_val_if_fail(contents != NULL, NULL);
return TALKATU_ATTACHMENT(g_object_new(
"content-type", content_type,
@@ -189,6 +221,7 @@
* talkatu_attachment_new_from_pixbuf:
+ * @filename: The filename of the attachment. * @pixbuf: The #GdkPixbuf to create an attachment for.
* Creates a new #TalkatuAttachment containing @pixbuf.
@@ -196,13 +229,14 @@
* Returns: (transfer full): The new #TalkatuAttachment.
-talkatu_attachment_new_from_pixbuf(GdkPixbuf *pixbuf) {
+talkatu_attachment_new_from_pixbuf(const gchar *filename, GdkPixbuf *pixbuf) { TalkatuAttachment *attachment = NULL;
+ g_return_val_if_fail(filename != NULL, NULL); g_return_val_if_fail(GDK_IS_PIXBUF(pixbuf), NULL);
if(!gdk_pixbuf_save_to_buffer(pixbuf, &data, &data_sz, "png", &error, NULL)) {
@@ -212,9 +246,13 @@
+ /* TODO: adjust filename for the forced png format since we don't know the + * original format of the image. contents = g_bytes_new_take(data, data_sz);
- attachment = talkatu_attachment_new("image/png", contents);
+ attachment = talkatu_attachment_new("image/png", filename, contents); @@ -237,6 +275,21 @@
+ * talkatu_attachment_get_filename: + * @attachment: The #TalkatuAttachment instance. + * Returns the filename of the attachment. + * Returns: (transfer none): The filename of @attachment. +talkatu_attachment_get_filename(TalkatuAttachment *attachment) { + g_return_val_if_fail(TALKATU_IS_ATTACHMENT(attachment), NULL); + return attachment->filename; * talkatu_attachment_get_contents:
* @attachment: The #TalkatuAttachment instance.
--- a/talkatu/talkatuattachment.h Thu Dec 05 20:06:17 2019 -0600
+++ b/talkatu/talkatuattachment.h Fri Dec 06 22:37:52 2019 -0600
@@ -31,10 +31,11 @@
#define TALKATU_TYPE_ATTACHMENT (talkatu_attachment_get_type())
G_DECLARE_FINAL_TYPE(TalkatuAttachment, talkatu_attachment, TALKATU, ATTACHMENT, GObject)
-TalkatuAttachment *talkatu_attachment_new(const gchar *content_type, GBytes *contents);
-TalkatuAttachment *talkatu_attachment_new_from_pixbuf(GdkPixbuf *pixbuf);
+TalkatuAttachment *talkatu_attachment_new(const gchar *content_type, const gchar *filename, GBytes *contents); +TalkatuAttachment *talkatu_attachment_new_from_pixbuf(const gchar *filename, GdkPixbuf *pixbuf); const gchar *talkatu_attachment_get_content_type(TalkatuAttachment *attachment);
+const gchar *talkatu_attachment_get_filename(TalkatuAttachment *attachment); GBytes *talkatu_attachment_get_contents(TalkatuAttachment *attachment);