Thu, 07 Aug 2025 21:32:18 -0500
Clean up and modernize PurpleImage
Testing Done:
Ran the tests under valgrind and called in the turtles.
Reviewed at https://reviews.imfreedom.org/r/4074/
|
43145
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
1 | /* |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
2 | * Purple - Internet Messaging Library |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
3 | * Copyright (C) Pidgin Developers <devel@pidgin.im> |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
4 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
5 | * Purple is the legal property of its developers, whose names are too numerous |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
6 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
7 | * source distribution. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
8 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
9 | * This library is free software; you can redistribute it and/or modify it |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
10 | * under the terms of the GNU General Public License as published by the Free |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
11 | * Software Foundation; either version 2 of the License, or (at your option) |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
12 | * any later version. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
13 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
14 | * This library is distributed in the hope that it will be useful, but WITHOUT |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
15 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
16 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
17 | * more details. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
18 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
19 | * You should have received a copy of the GNU General Public License along with |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
20 | * this library; if not, see <https://www.gnu.org/licenses/>. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
21 | */ |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
22 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
23 | #if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION) |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
24 | # error "only <purple.h> may be included directly" |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
25 | #endif |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
26 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
27 | #ifndef PURPLE_ATTACHMENTS_H |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
28 | #define PURPLE_ATTACHMENTS_H |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
29 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
30 | #include <glib.h> |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
31 | #include <gio/gio.h> |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
32 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
33 | #include "purpleattachment.h" |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
34 | #include "purpleversion.h" |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
35 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
36 | G_BEGIN_DECLS |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
37 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
38 | #define PURPLE_TYPE_ATTACHMENTS (purple_attachments_get_type()) |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
39 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
40 | /** |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
41 | * PurpleAttachments: |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
42 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
43 | * A collection of [class@Attachment]'s. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
44 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
45 | * This implements [iface@Gio.ListModel] and should be accessed via that API. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
46 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
47 | * Since: 3.0 |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
48 | */ |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
49 | PURPLE_AVAILABLE_IN_3_0 |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
50 | G_DECLARE_FINAL_TYPE(PurpleAttachments, purple_attachments, PURPLE, ATTACHMENTS, |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
51 | GObject) |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
52 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
53 | /** |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
54 | * purple_attachments_add_attachment: |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
55 | * @attachment: (transfer none): the attachment to add |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
56 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
57 | * Adds an attachment to the collection. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
58 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
59 | * No sorting will be done, but if @attachment is already in the collection it |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
60 | * will not be added again. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
61 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
62 | * Returns: true if the item was added; otherwise false. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
63 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
64 | * Since: 3.0 |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
65 | */ |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
66 | PURPLE_AVAILABLE_IN_3_0 |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
67 | gboolean purple_attachments_add_attachment(PurpleAttachments *attachments, PurpleAttachment *attachment); |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
68 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
69 | /** |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
70 | * purple_attachments_find_with_id: |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
71 | * @id: the id |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
72 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
73 | * Looks for an attachment matching the given id. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
74 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
75 | * Returns: (transfer none) (nullable): The attachment if found. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
76 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
77 | * Since: 3.0 |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
78 | */ |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
79 | PURPLE_AVAILABLE_IN_3_0 |
|
43147
835d74e5d22d
Make Purple.Attachment:id a string
Gary Kramlich <grim@reaperworld.com>
parents:
43145
diff
changeset
|
80 | PurpleAttachment *purple_attachments_find_with_id(PurpleAttachments *attachments, const char *id); |
|
43145
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
81 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
82 | /** |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
83 | * purple_attachments_new: |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
84 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
85 | * Creates a new instance. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
86 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
87 | * Returns: (transfer full): The new instance. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
88 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
89 | * Since: 3.0 |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
90 | */ |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
91 | PURPLE_AVAILABLE_IN_3_0 |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
92 | PurpleAttachments *purple_attachments_new(void); |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
93 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
94 | /** |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
95 | * purple_attachments_remove_attachment: |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
96 | * @attachment: (transfer none): the attachment to remove |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
97 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
98 | * Removes an attachment from the collection. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
99 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
100 | * If @attachment is not in the collection it will be ignored. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
101 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
102 | * Returns: true if the item was removed; otherwise false. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
103 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
104 | * Since: 3.0 |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
105 | */ |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
106 | PURPLE_AVAILABLE_IN_3_0 |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
107 | gboolean purple_attachments_remove_attachment(PurpleAttachments *attachments, PurpleAttachment *attachment); |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
108 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
109 | /** |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
110 | * purple_attachments_remove_all: |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
111 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
112 | * Removes all attachments from the collection. |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
113 | * |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
114 | * Since: 3.0 |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
115 | */ |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
116 | PURPLE_AVAILABLE_IN_3_0 |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
117 | void purple_attachments_remove_all(PurpleAttachments *attachments); |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
118 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
119 | G_END_DECLS |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
120 | |
|
dff7cdade009
Implement Purple.Attachments
Gary Kramlich <grim@reaperworld.com>
parents:
diff
changeset
|
121 | #endif /* PURPLE_ATTACHMENTS_H */ |