Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,12 @@ gobject_dep = dependency('gobject-2.0')
granite_dep = dependency('granite', version: '>= 6.0.0')
gee_dep = dependency('gee-0.8')
handy_dep = dependency('libhandy-1', version: '>=1.1.90')
camel_dep = dependency('camel-1.2', version: '>= 3.28')
camel_dep = dependency('camel-1.2', version: '>= 3.57.1', required: false)
if camel_dep.found()
add_project_arguments('--define=HAS_CAMEL_3_57', language: 'vala')
else
camel_dep = dependency('camel-1.2', version: '>= 3.28')
endif
libedataserver_dep = dependency('libedataserver-1.2', version: '>= 3.28')
libedataserverui_dep = dependency('libedataserverui-1.2', version: '>=3.45.1')
webkit2_dep = dependency('webkit2gtk-4.1')
Expand Down
15 changes: 15 additions & 0 deletions src/Backend/MoveOperation.vala
Original file line number Diff line number Diff line change
Expand Up @@ -189,10 +189,16 @@ public class Mail.MoveOperation : Object {
var vee_folder = (Camel.VeeFolder)src_folder;

store = null;
#if !HAS_CAMEL_3_57
unowned Camel.Folder? orig_folder = null;
#endif

foreach (unowned Camel.MessageInfo message in moved_messages) {
#if HAS_CAMEL_3_57
Camel.Folder? orig_folder = vee_folder.dup_vee_uid_folder (message.uid);
#else
orig_folder = vee_folder.get_vee_uid_folder (message.uid);
#endif
if (orig_folder != null) {
if (store != null && orig_folder.get_parent_store () != store) {
// Don't know which archive folder to use when messages are from
Expand All @@ -214,11 +220,20 @@ public class Mail.MoveOperation : Object {
}

private async void collect_thread_messages (Camel.FolderThreadNode thread) {
#if HAS_CAMEL_3_57
moved_messages.add ((Camel.MessageInfo?) thread.get_item ());
unowned Camel.FolderThreadNode? child = (Camel.FolderThreadNode?) thread.get_child ();
#else
moved_messages.add (thread.message);
unowned Camel.FolderThreadNode? child = (Camel.FolderThreadNode?) thread.child;
#endif
while (child != null) {
yield collect_thread_messages (child);
#if HAS_CAMEL_3_57
child = (Camel.FolderThreadNode?) child.get_next ();
#else
child = (Camel.FolderThreadNode?) child.next;
#endif
}
}

Expand Down
60 changes: 60 additions & 0 deletions src/ConversationList/ConversationItemModel.vala
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,11 @@ public class Mail.ConversationItemModel : GLib.Object {

unowned Camel.FolderThreadNode? current_node = node;
while (current_node != null) {
#if HAS_CAMEL_3_57
weak Camel.MessageInfo? message = (Camel.MessageInfo?) current_node.get_item ();
#else
weak Camel.MessageInfo? message = current_node.message;
#endif
if (message != null) {
var address = new Camel.InternetAddress ();
if (address.decode (message.from) > 0) {
Expand All @@ -67,7 +71,11 @@ public class Mail.ConversationItemModel : GLib.Object {
}
}

#if HAS_CAMEL_3_57
current_node = (Camel.FolderThreadNode?) current_node.get_child ();
#else
current_node = (Camel.FolderThreadNode?) current_node.child;
#endif
}

if (senders.length > 0) {
Expand All @@ -84,7 +92,11 @@ public class Mail.ConversationItemModel : GLib.Object {

unowned Camel.FolderThreadNode? current_node = node;
while (current_node != null) {
#if HAS_CAMEL_3_57
weak Camel.MessageInfo? message = (Camel.MessageInfo?) current_node.get_item ();
#else
weak Camel.MessageInfo? message = current_node.message;
#endif
if (message != null) {
var address = new Camel.InternetAddress ();
if (address.decode (message.to) > 0) {
Expand All @@ -105,7 +117,11 @@ public class Mail.ConversationItemModel : GLib.Object {
}
}

#if HAS_CAMEL_3_57
current_node = (Camel.FolderThreadNode?) current_node.get_child ();
#else
current_node = (Camel.FolderThreadNode?) current_node.child;
#endif
}

if (recipients.length > 0) {
Expand All @@ -118,7 +134,11 @@ public class Mail.ConversationItemModel : GLib.Object {

public string subject {
get {
#if HAS_CAMEL_3_57
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
#else
weak Camel.MessageInfo? message = node.message;
#endif
if (message == null) {
return _("Unknown");
}
Expand All @@ -129,7 +149,11 @@ public class Mail.ConversationItemModel : GLib.Object {

public bool flagged {
get {
#if HAS_CAMEL_3_57
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
#else
weak Camel.MessageInfo? message = node.message;
#endif
if (message == null) {
return false;
}
Expand All @@ -140,7 +164,11 @@ public class Mail.ConversationItemModel : GLib.Object {

public bool forwarded {
get {
#if HAS_CAMEL_3_57
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
#else
weak Camel.MessageInfo? message = node.message;
#endif
if (message == null) {
return false;
}
Expand All @@ -151,7 +179,11 @@ public class Mail.ConversationItemModel : GLib.Object {

public bool replied {
get {
#if HAS_CAMEL_3_57
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
#else
weak Camel.MessageInfo? message = node.message;
#endif
if (message == null) {
return false;
}
Expand All @@ -162,7 +194,11 @@ public class Mail.ConversationItemModel : GLib.Object {

public bool replied_all {
get {
#if HAS_CAMEL_3_57
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
#else
weak Camel.MessageInfo? message = node.message;
#endif
if (message == null) {
return false;
}
Expand All @@ -179,7 +215,11 @@ public class Mail.ConversationItemModel : GLib.Object {

public bool deleted {
get {
#if HAS_CAMEL_3_57
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
#else
weak Camel.MessageInfo? message = node.message;
#endif
if (message == null) {
return false;
}
Expand All @@ -204,7 +244,11 @@ public class Mail.ConversationItemModel : GLib.Object {

private static uint count_thread_messages (Camel.FolderThreadNode node) {
uint i = 1;
#if HAS_CAMEL_3_57
for (unowned Camel.FolderThreadNode? child = node.get_child (); child != null; child = child.get_next ()) {
#else
for (unowned Camel.FolderThreadNode? child = node.child; child != null; child = child.next) {
#endif
i += count_thread_messages (child);
}

Expand All @@ -217,13 +261,21 @@ public class Mail.ConversationItemModel : GLib.Object {
return time;
}

#if HAS_CAMEL_3_57
weak Camel.MessageInfo? message = (Camel.MessageInfo?) node.get_item ();
#else
weak Camel.MessageInfo? message = node.message;
#endif
if (message != null) {
time = int64.max (time, message.date_received);
time = int64.max (time, message.date_sent);
}

#if HAS_CAMEL_3_57
for (unowned Camel.FolderThreadNode? child = node.get_child (); child != null; child = child.get_next ()) {
#else
for (unowned Camel.FolderThreadNode? child = node.child; child != null; child = child.next) {
#endif
time = get_newest_timestamp (child, time);
}

Expand All @@ -235,10 +287,18 @@ public class Mail.ConversationItemModel : GLib.Object {
return false;
}

#if HAS_CAMEL_3_57
var has_flag = !(flag in (int)((Camel.MessageInfo?) node.get_item ()).flags);
#else
var has_flag = !(flag in (int)node.message.flags);
#endif

if (!has_flag) {
#if HAS_CAMEL_3_57
for (unowned Camel.FolderThreadNode? child = node.get_child (); child != null; child = child.get_next ()) {
#else
for (unowned Camel.FolderThreadNode? child = node.child; child != null; child = child.next) {
#endif
has_flag = has_thread_flag (child, flag);
if (has_flag) {
break;
Expand Down
Loading