Skip to content

Commit ea57524

Browse files
committed
Adapt to libcamel API changes in 3.57.1
The evolution-data-server 3.57.1 release contains API changes in libcamel, which are incompatible with the previous versions. Bump the libcamel version requirement, update the camel-1.2.vapi file and modify the sources accordingly.
1 parent 4d415cb commit ea57524

File tree

6 files changed

+733
-501
lines changed

6 files changed

+733
-501
lines changed

meson.build

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ gobject_dep = dependency('gobject-2.0')
1515
granite_dep = dependency('granite', version: '>= 6.0.0')
1616
gee_dep = dependency('gee-0.8')
1717
handy_dep = dependency('libhandy-1', version: '>=1.1.90')
18-
camel_dep = dependency('camel-1.2', version: '>= 3.28')
18+
camel_dep = dependency('camel-1.2', version: '>= 3.57.1')
1919
libedataserver_dep = dependency('libedataserver-1.2', version: '>= 3.28')
2020
libedataserverui_dep = dependency('libedataserverui-1.2', version: '>=3.45.1')
2121
webkit2_dep = dependency('webkit2gtk-4.1')

src/Backend/MoveOperation.vala

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,9 @@ public class Mail.MoveOperation : Object {
189189
var vee_folder = (Camel.VeeFolder)src_folder;
190190

191191
store = null;
192-
unowned Camel.Folder? orig_folder = null;
193192

194193
foreach (unowned Camel.MessageInfo message in moved_messages) {
195-
orig_folder = vee_folder.get_vee_uid_folder (message.uid);
194+
Camel.Folder? orig_folder = vee_folder.dup_vee_uid_folder (message.uid);
196195
if (orig_folder != null) {
197196
if (store != null && orig_folder.get_parent_store () != store) {
198197
// Don't know which archive folder to use when messages are from
@@ -214,11 +213,11 @@ public class Mail.MoveOperation : Object {
214213
}
215214

216215
private async void collect_thread_messages (Camel.FolderThreadNode thread) {
217-
moved_messages.add (thread.message);
218-
unowned Camel.FolderThreadNode? child = (Camel.FolderThreadNode?) thread.child;
216+
moved_messages.add ((Camel.MessageInfo?) thread.get_item ());
217+
unowned Camel.FolderThreadNode? child = (Camel.FolderThreadNode?) thread.get_child ();
219218
while (child != null) {
220219
yield collect_thread_messages (child);
221-
child = (Camel.FolderThreadNode?) child.next;
220+
child = (Camel.FolderThreadNode?) child.get_next ();
222221
}
223222
}
224223

src/ConversationList/ConversationItemModel.vala

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class Mail.ConversationItemModel : GLib.Object {
4646

4747
unowned Camel.FolderThreadNode? current_node = node;
4848
while (current_node != null) {
49-
weak Camel.MessageInfo? message = current_node.message;
49+
weak Camel.MessageInfo? message = (Camel.MessageInfo?) current_node.get_item ();
5050
if (message != null) {
5151
var address = new Camel.InternetAddress ();
5252
if (address.decode (message.from) > 0) {
@@ -67,7 +67,7 @@ public class Mail.ConversationItemModel : GLib.Object {
6767
}
6868
}
6969

70-
current_node = (Camel.FolderThreadNode?) current_node.child;
70+
current_node = (Camel.FolderThreadNode?) current_node.get_child ();
7171
}
7272

7373
if (senders.length > 0) {
@@ -84,7 +84,7 @@ public class Mail.ConversationItemModel : GLib.Object {
8484

8585
unowned Camel.FolderThreadNode? current_node = node;
8686
while (current_node != null) {
87-
weak Camel.MessageInfo? message = current_node.message;
87+
weak Camel.MessageInfo? message = (Camel.MessageInfo?) current_node.get_item ();
8888
if (message != null) {
8989
var address = new Camel.InternetAddress ();
9090
if (address.decode (message.to) > 0) {
@@ -105,7 +105,7 @@ public class Mail.ConversationItemModel : GLib.Object {
105105
}
106106
}
107107

108-
current_node = (Camel.FolderThreadNode?) current_node.child;
108+
current_node = (Camel.FolderThreadNode?) current_node.get_child ();
109109
}
110110

111111
if (recipients.length > 0) {
@@ -118,7 +118,7 @@ public class Mail.ConversationItemModel : GLib.Object {
118118

119119
public string subject {
120120
get {
121-
weak Camel.MessageInfo? message = node.message;
121+
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
122122
if (message == null) {
123123
return _("Unknown");
124124
}
@@ -129,7 +129,7 @@ public class Mail.ConversationItemModel : GLib.Object {
129129

130130
public bool flagged {
131131
get {
132-
weak Camel.MessageInfo? message = node.message;
132+
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
133133
if (message == null) {
134134
return false;
135135
}
@@ -140,7 +140,7 @@ public class Mail.ConversationItemModel : GLib.Object {
140140

141141
public bool forwarded {
142142
get {
143-
weak Camel.MessageInfo? message = node.message;
143+
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
144144
if (message == null) {
145145
return false;
146146
}
@@ -151,7 +151,7 @@ public class Mail.ConversationItemModel : GLib.Object {
151151

152152
public bool replied {
153153
get {
154-
weak Camel.MessageInfo? message = node.message;
154+
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
155155
if (message == null) {
156156
return false;
157157
}
@@ -162,7 +162,7 @@ public class Mail.ConversationItemModel : GLib.Object {
162162

163163
public bool replied_all {
164164
get {
165-
weak Camel.MessageInfo? message = node.message;
165+
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
166166
if (message == null) {
167167
return false;
168168
}
@@ -179,7 +179,7 @@ public class Mail.ConversationItemModel : GLib.Object {
179179

180180
public bool deleted {
181181
get {
182-
weak Camel.MessageInfo? message = node.message;
182+
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
183183
if (message == null) {
184184
return false;
185185
}
@@ -204,7 +204,7 @@ public class Mail.ConversationItemModel : GLib.Object {
204204

205205
private static uint count_thread_messages (Camel.FolderThreadNode node) {
206206
uint i = 1;
207-
for (unowned Camel.FolderThreadNode? child = node.child; child != null; child = child.next) {
207+
for (unowned Camel.FolderThreadNode? child = node.get_child (); child != null; child = child.get_next ()) {
208208
i += count_thread_messages (child);
209209
}
210210

@@ -217,13 +217,13 @@ public class Mail.ConversationItemModel : GLib.Object {
217217
return time;
218218
}
219219

220-
weak Camel.MessageInfo? message = node.message;
220+
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
221221
if (message != null) {
222222
time = int64.max (time, message.date_received);
223223
time = int64.max (time, message.date_sent);
224224
}
225225

226-
for (unowned Camel.FolderThreadNode? child = node.child; child != null; child = child.next) {
226+
for (unowned Camel.FolderThreadNode? child = node.get_child (); child != null; child = child.get_next ()) {
227227
time = get_newest_timestamp (child, time);
228228
}
229229

@@ -235,10 +235,10 @@ public class Mail.ConversationItemModel : GLib.Object {
235235
return false;
236236
}
237237

238-
var has_flag = !(flag in (int)node.message.flags);
238+
var has_flag = !(flag in (int)((Camel.MessageInfo?) node.get_item ()).flags);
239239

240240
if (!has_flag) {
241-
for (unowned Camel.FolderThreadNode? child = node.child; child != null; child = child.next) {
241+
for (unowned Camel.FolderThreadNode? child = node.get_child (); child != null; child = child.get_next ()) {
242242
has_flag = has_thread_flag (child, flag);
243243
if (has_flag) {
244244
break;

src/ConversationList/ConversationList.vala

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -213,11 +213,11 @@ public class Mail.ConversationList : Gtk.Box {
213213
return;
214214
}
215215

216-
if (!(flag in (int)node.message.flags)) {
217-
node.message.set_flags (flag, ~0);
216+
if (!(flag in (int)((Camel.MessageInfo?) node.get_item ()).flags)) {
217+
((Camel.MessageInfo?) node.get_item ()).set_flags (flag, ~0);
218218
}
219219

220-
for (unowned Camel.FolderThreadNode? child = node.child; child != null; child = child.next) {
220+
for (unowned Camel.FolderThreadNode? child = node.get_child (); child != null; child = child.get_next ()) {
221221
set_thread_flag (child, flag);
222222
}
223223
}
@@ -269,17 +269,17 @@ public class Mail.ConversationList : Gtk.Box {
269269

270270
var search_result_uids = get_search_result_uids (current_account.service.uid);
271271
if (search_result_uids != null) {
272-
var thread = new Camel.FolderThread (folder, search_result_uids, false);
272+
var thread = new Camel.FolderThread (folder, (GLib.GenericArray<string>?) search_result_uids, Camel.FolderThreadFlags.NONE);
273273
threads[current_account.service.uid] = thread;
274274

275-
weak Camel.FolderThreadNode? child = thread.tree;
275+
weak Camel.FolderThreadNode? child = thread.get_tree ();
276276
while (child != null) {
277277
if (cancellable.is_cancelled ()) {
278278
break;
279279
}
280280

281281
add_conversation_item (folder_info_flags[current_account.service.uid], child, thread, current_account.service.uid);
282-
child = child.next;
282+
child = child.get_next ();
283283
}
284284
}
285285
} catch (Error e) {
@@ -326,7 +326,7 @@ public class Mail.ConversationList : Gtk.Box {
326326
return;
327327
}
328328

329-
threads[service_uid] = new Camel.FolderThread (folders[service_uid], search_result_uids, false);
329+
threads[service_uid] = new Camel.FolderThread (folders[service_uid], (GLib.GenericArray<string>?) search_result_uids, Camel.FolderThreadFlags.NONE);
330330

331331
var removed = 0;
332332
change_info.get_removed_uids ().foreach ((uid) => {
@@ -338,33 +338,33 @@ public class Mail.ConversationList : Gtk.Box {
338338
}
339339
});
340340

341-
unowned Camel.FolderThreadNode? child = threads[service_uid].tree;
341+
unowned Camel.FolderThreadNode? child = threads[service_uid].get_tree ();
342342
while (child != null) {
343343
if (cancellable.is_cancelled ()) {
344344
return;
345345
}
346346

347-
var item = conversations[child.message.uid];
347+
var item = conversations[((Camel.MessageInfo?) child.get_item ()).uid];
348348
if (item == null) {
349349
add_conversation_item (folder_info_flags[service_uid], child, threads[service_uid], service_uid);
350350
} else {
351351
if (item.is_older_than (child)) {
352-
conversations.unset (child.message.uid);
352+
conversations.unset (((Camel.MessageInfo?) child.get_item ()).uid);
353353
list_store.remove (item);
354354
removed++;
355355
add_conversation_item (folder_info_flags[service_uid], child, threads[service_uid], service_uid);
356356
};
357357
}
358358

359-
child = child.next;
359+
child = child.get_next ();
360360
}
361361

362362
list_store.items_changed (0, removed, list_store.get_n_items ());
363363
}
364364
}
365365
}
366366

367-
private GenericArray<string>? get_search_result_uids (string service_uid) {
367+
private GenericArray<weak string>? get_search_result_uids (string service_uid) {
368368
var style_context = filter_button.get_style_context ();
369369
if (hide_read_switch.active || hide_unstarred_switch.active) {
370370
if (!style_context.has_class (Granite.STYLE_CLASS_ACCENT)) {
@@ -381,7 +381,7 @@ public class Mail.ConversationList : Gtk.Box {
381381

382382
var has_current_search_query = search_entry.text.strip () != "";
383383
if (!has_current_search_query && !hide_read_switch.active && !hide_unstarred_switch.active) {
384-
return folders[service_uid].get_uids ();
384+
return folders[service_uid].dup_uids ();
385385
}
386386

387387
string[] current_search_expressions = {};
@@ -406,20 +406,22 @@ public class Mail.ConversationList : Gtk.Box {
406406
string search_query = "(match-all (and " + string.joinv ("", current_search_expressions) + "))";
407407

408408
try {
409-
return folders[service_uid].search_by_expression (search_query, cancellable);
409+
GenericArray<weak string>? uids = null;
410+
folders[service_uid].search_sync (search_query, out uids, cancellable);
411+
return uids;
410412
} catch (Error e) {
411413
if (!(e is GLib.IOError.CANCELLED)) {
412414
warning ("Error while searching: %s", e.message);
413415
}
414416

415-
return folders[service_uid].get_uids ();
417+
return folders[service_uid].dup_uids ();
416418
}
417419
}
418420
}
419421

420422
private void add_conversation_item (Camel.FolderInfoFlags folder_info_flags, Camel.FolderThreadNode child, Camel.FolderThread thread, string service_uid) {
421423
var item = new ConversationItemModel (folder_info_flags, child, thread, service_uid);
422-
conversations[child.message.uid] = item;
424+
conversations[((Camel.MessageInfo?) child.get_item ()).uid] = item;
423425
list_store.add (item);
424426
}
425427

@@ -439,28 +441,28 @@ public class Mail.ConversationList : Gtk.Box {
439441
public void mark_read_selected_messages () {
440442
var selected_rows = list_box.get_selected_rows ();
441443
foreach (var row in selected_rows) {
442-
(((ConversationItemModel)row).node).message.set_flags (Camel.MessageFlags.SEEN, ~0);
444+
((Camel.MessageInfo?) (((ConversationItemModel)row).node).get_item ()).set_flags (Camel.MessageFlags.SEEN, ~0);
443445
}
444446
}
445447

446448
public void mark_star_selected_messages () {
447449
var selected_rows = list_box.get_selected_rows ();
448450
foreach (var row in selected_rows) {
449-
(((ConversationItemModel)row).node).message.set_flags (Camel.MessageFlags.FLAGGED, ~0);
451+
((Camel.MessageInfo?) (((ConversationItemModel)row).node).get_item ()).set_flags (Camel.MessageFlags.FLAGGED, ~0);
450452
}
451453
}
452454

453455
public void mark_unread_selected_messages () {
454456
var selected_rows = list_box.get_selected_rows ();
455457
foreach (var row in selected_rows) {
456-
(((ConversationItemModel)row).node).message.set_flags (Camel.MessageFlags.SEEN, 0);
458+
((Camel.MessageInfo?) (((ConversationItemModel)row).node).get_item ()).set_flags (Camel.MessageFlags.SEEN, 0);
457459
}
458460
}
459461

460462
public void mark_unstar_selected_messages () {
461463
var selected_rows = list_box.get_selected_rows ();
462464
foreach (var row in selected_rows) {
463-
(((ConversationItemModel)row).node).message.set_flags (Camel.MessageFlags.FLAGGED, 0);
465+
((Camel.MessageInfo?) (((ConversationItemModel)row).node).get_item ()).set_flags (Camel.MessageFlags.FLAGGED, 0);
464466
}
465467
}
466468

src/MessageList/MessageList.vala

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -179,14 +179,14 @@ public class Mail.MessageList : Gtk.Box {
179179
*/
180180
can_move_thread (true);
181181

182-
var store = node.message.summary.folder.parent_store;
182+
var store = ((Camel.MessageInfo?) node.get_item ()).summary.folder.parent_store;
183183
folder_popover.set_store (store);
184184

185-
var item = new MessageListItem (node.message);
185+
var item = new MessageListItem ((Camel.MessageInfo?) node.get_item ());
186186
list_box.add (item);
187-
messages.set (node.message.uid, item);
188-
if (node.child != null) {
189-
go_down ((Camel.FolderThreadNode?) node.child);
187+
messages.set (((Camel.MessageInfo?) node.get_item ()).uid, item);
188+
if (node.get_child () != null) {
189+
go_down ((Camel.FolderThreadNode?) node.get_child ());
190190
}
191191

192192
var children = list_box.get_children ();
@@ -203,22 +203,22 @@ public class Mail.MessageList : Gtk.Box {
203203
}
204204
}
205205

206-
if (node.message != null && Camel.MessageFlags.DRAFT in (int) node.message.flags) {
206+
if (node.get_item () != null && Camel.MessageFlags.DRAFT in (int) ((Camel.MessageInfo?) node.get_item ()).flags) {
207207
compose.begin (Composer.Type.DRAFT, "");
208208
}
209209
}
210210

211211
private void go_down (Camel.FolderThreadNode node) {
212212
unowned Camel.FolderThreadNode? current_node = node;
213213
while (current_node != null) {
214-
var item = new MessageListItem (current_node.message);
214+
var item = new MessageListItem ((Camel.MessageInfo?) current_node.get_item ());
215215
list_box.add (item);
216-
messages.set (current_node.message.uid, item);
217-
if (current_node.next != null) {
218-
go_down ((Camel.FolderThreadNode?) current_node.next);
216+
messages.set (((Camel.MessageInfo?) current_node.get_item ()).uid, item);
217+
if (current_node.get_next () != null) {
218+
go_down ((Camel.FolderThreadNode?) current_node.get_next ());
219219
}
220220

221-
current_node = (Camel.FolderThreadNode?) current_node.child;
221+
current_node = (Camel.FolderThreadNode?) current_node.get_child ();
222222
}
223223
}
224224

0 commit comments

Comments
 (0)