GCC Code Coverage Report


Directory: src/
File: mail/msg-mail-folder.c
Date: 2026-08-29 00:53:21
Exec Total Coverage
Lines: 61 72 84.7%
Functions: 20 24 83.3%
Branches: 19 22 86.4%

Line Branch Exec Source
1 /* Copyright 2022-2024 Jan-Michael Brummer <jan-michael.brummer1@volkswagen.de>
2 *
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU Lesser General Public License as published by
5 * the Free Software Foundation, either version 3 of the License, or
6 * (at your option) any later version.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
16
17 #include "mail/msg-mail-folder.h"
18 #include "msg-error.h"
19 #include "msg-json-utils.h"
20
21 /**
22 * MsgMailFolder:
23 *
24 * Handling of mail folder specific functions.
25 */
26
27 struct _MsgMailFolder {
28 GObject parent_instance;
29
30 char *id;
31 char *parent_folder_id;
32 char *display_name;
33 int child_folder_count;
34 int unread_item_count;
35 int total_item_count;
36 gboolean is_hidden;
37
38 MsgMailFolderType type;
39 char *delta_link;
40 };
41
42
5/6
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 39 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 37 times.
43 G_DEFINE_TYPE (MsgMailFolder, msg_mail_folder, G_TYPE_OBJECT);
43
44 static void
45 19 msg_mail_folder_dispose (GObject *object)
46 {
47 19 MsgMailFolder *self = MSG_MAIL_FOLDER (object);
48
49
2/2
✓ Branch 0 taken 18 times.
✓ Branch 1 taken 1 times.
19 g_clear_pointer (&self->id, g_free);
50
2/2
✓ Branch 0 taken 17 times.
✓ Branch 1 taken 2 times.
19 g_clear_pointer (&self->parent_folder_id, g_free);
51
2/2
✓ Branch 0 taken 18 times.
✓ Branch 1 taken 1 times.
19 g_clear_pointer (&self->display_name, g_free);
52
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 18 times.
19 g_clear_pointer (&self->delta_link, g_free);
53
54 19 G_OBJECT_CLASS (msg_mail_folder_parent_class)->dispose (object);
55 19 }
56
57 static void
58 19 msg_mail_folder_init (MsgMailFolder *self)
59 {
60 19 self->type = MSG_MAIL_FOLDER_TYPE_OTHER;
61 19 }
62
63 static void
64 2 msg_mail_folder_class_init (MsgMailFolderClass *class)
65 {
66 2 GObjectClass *object_class = G_OBJECT_CLASS (class);
67
68 2 object_class->dispose = msg_mail_folder_dispose;
69 2 }
70
71 /**
72 * msg_mail_folder_new:
73 *
74 * Creates a new `MsgMailFolder`.
75 *
76 * Returns: the newly created `MsgMailFolder`
77 */
78 MsgMailFolder *
79 19 msg_mail_folder_new (void)
80 {
81 19 return g_object_new (MSG_TYPE_MAIL_FOLDER, NULL);
82 }
83
84 /**
85 * msg_mail_folder_new_from_json:
86 * @json_object: The json object to parse
87 * @error: a #GError
88 *
89 * Creates a new `MsgMailFolder` from json response object.
90 *
91 * Returns: the newly created `MsgMailFolder`
92 */
93 MsgMailFolder *
94 17 msg_mail_folder_new_from_json (JsonObject *json_object,
95 __attribute__ ((unused)) GError **error)
96 {
97 MsgMailFolder *self;
98
99 17 self = msg_mail_folder_new ();
100
101 17 self->type = MSG_MAIL_FOLDER_TYPE_OTHER;
102 17 self->id = g_strdup (msg_json_object_get_string (json_object, "id"));
103 17 self->display_name = g_strdup (msg_json_object_get_string (json_object, "displayName"));
104 17 self->parent_folder_id = g_strdup (msg_json_object_get_string (json_object, "parentFolderId"));
105
106 17 self->child_folder_count = json_object_get_int_member (json_object, "childFolderCount");
107 17 self->unread_item_count = json_object_get_int_member (json_object, "unreadItemCount");
108 17 self->total_item_count = json_object_get_int_member (json_object, "totalItemCount");
109
110 17 return self;
111 }
112
113 /**
114 * msg_mail_folder_get_display_name:
115 * @self: a mail folder
116 *
117 * Returns: (transfer none): display name of mail folder
118 */
119 const char *
120 9 msg_mail_folder_get_display_name (MsgMailFolder *self)
121 {
122 9 return self->display_name;
123 }
124
125 /**
126 * msg_mail_folder_get_unread_item_count:
127 * @self: a mail folder
128 *
129 * Returns: unread item number of mail folder
130 */
131 int
132 9 msg_mail_folder_get_unread_item_count (MsgMailFolder *self)
133 {
134 9 return self->unread_item_count;
135 }
136
137 void
138 1 msg_mail_folder_set_unread_item_count (MsgMailFolder *self,
139 guint count)
140 {
141 1 self->unread_item_count = count;
142 1 }
143
144 /**
145 * msg_mail_folder_get_total_item_count:
146 * @self: a mail folder
147 *
148 * Returns: total item number of mail folder
149 */
150 int
151 9 msg_mail_folder_get_total_item_count (MsgMailFolder *self)
152 {
153 9 return self->total_item_count;
154 }
155
156 void
157 1 msg_mail_folder_set_total_item_count (MsgMailFolder *self,
158 guint count)
159 {
160 1 self->total_item_count = count;
161 1 }
162
163 /**
164 * msg_mail_folder_get_id:
165 * @self: a mail folder
166 *
167 * Returns: id of mail folder
168 */
169 const char *
170 4 msg_mail_folder_get_id (MsgMailFolder *self)
171 {
172 4 return self->id;
173 }
174
175 void
176 2 msg_mail_folder_set_id (MsgMailFolder *self,
177 const char *id)
178 {
179
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
2 g_clear_pointer (&self->id, g_free);
180 2 self->id = g_strdup (id);
181 2 }
182
183 void
184 2 msg_mail_folder_set_display_name (MsgMailFolder *self,
185 const char *display_name)
186 {
187
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
2 g_clear_pointer (&self->display_name, g_free);
188 2 self->display_name = g_strdup (display_name);
189 2 }
190
191 MsgMailFolderType
192 2 msg_mail_folder_get_folder_type (MsgMailFolder *self)
193 {
194 2 return self->type;
195 }
196
197 void
198 1 msg_mail_folder_set_folder_type (MsgMailFolder *self,
199 MsgMailFolderType type)
200 {
201 1 self->type = type;
202 1 }
203
204 void
205 2 msg_mail_folder_set_delta_link (MsgMailFolder *self,
206 const char *delta_link)
207 {
208
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
2 g_clear_pointer (&self->delta_link, g_free);
209 2 self->delta_link = g_strdup (delta_link);
210 2 }
211
212 const char *
213 2 msg_mail_folder_get_delta_link (MsgMailFolder *self)
214 {
215 2 return self->delta_link;
216 }
217
218 const char *
219 msg_mail_folder_get_parent_id (MsgMailFolder *self)
220 {
221 return self->parent_folder_id;
222 }
223
224 void
225 msg_mail_folder_set_parent_id (MsgMailFolder *self,
226 const char *id)
227 {
228 g_clear_pointer (&self->parent_folder_id, g_free);
229 self->parent_folder_id = g_strdup (id);
230 }
231
232 int
233 msg_mail_folder_get_child_folder_count (MsgMailFolder *self)
234 {
235 return self->child_folder_count;
236 }
237
238 void
239 msg_mail_folder_set_child_folder_count (MsgMailFolder *self,
240 guint count)
241 {
242 self->child_folder_count = count;
243 }
244
245