Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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
2 changes: 1 addition & 1 deletion meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ 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')
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
9 changes: 4 additions & 5 deletions src/Backend/MoveOperation.vala
Original file line number Diff line number Diff line change
Expand Up @@ -189,10 +189,9 @@ public class Mail.MoveOperation : Object {
var vee_folder = (Camel.VeeFolder)src_folder;

store = null;
unowned Camel.Folder? orig_folder = null;

foreach (unowned Camel.MessageInfo message in moved_messages) {
orig_folder = vee_folder.get_vee_uid_folder (message.uid);
Camel.Folder? orig_folder = vee_folder.dup_vee_uid_folder (message.uid);
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 +213,11 @@ public class Mail.MoveOperation : Object {
}

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

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

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

current_node = (Camel.FolderThreadNode?) current_node.child;
current_node = (Camel.FolderThreadNode?) current_node.get_child ();
}

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

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

current_node = (Camel.FolderThreadNode?) current_node.child;
current_node = (Camel.FolderThreadNode?) current_node.get_child ();
}

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

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

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

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

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

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

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

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

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

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

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

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

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

if (!has_flag) {
for (unowned Camel.FolderThreadNode? child = node.child; child != null; child = child.next) {
for (unowned Camel.FolderThreadNode? child = node.get_child (); child != null; child = child.get_next ()) {
has_flag = has_thread_flag (child, flag);
if (has_flag) {
break;
Expand Down
42 changes: 22 additions & 20 deletions src/ConversationList/ConversationList.vala
Original file line number Diff line number Diff line change
Expand Up @@ -213,11 +213,11 @@ public class Mail.ConversationList : Gtk.Box {
return;
}

if (!(flag in (int)node.message.flags)) {
node.message.set_flags (flag, ~0);
if (!(flag in (int)((Camel.MessageInfo?) node.get_item ()).flags)) {
((Camel.MessageInfo?) node.get_item ()).set_flags (flag, ~0);
}

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

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

weak Camel.FolderThreadNode? child = thread.tree;
weak Camel.FolderThreadNode? child = thread.get_tree ();
while (child != null) {
if (cancellable.is_cancelled ()) {
break;
}

add_conversation_item (folder_info_flags[current_account.service.uid], child, thread, current_account.service.uid);
child = child.next;
child = child.get_next ();
}
}
} catch (Error e) {
Expand Down Expand Up @@ -326,7 +326,7 @@ public class Mail.ConversationList : Gtk.Box {
return;
}

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

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

unowned Camel.FolderThreadNode? child = threads[service_uid].tree;
unowned Camel.FolderThreadNode? child = threads[service_uid].get_tree ();
while (child != null) {
if (cancellable.is_cancelled ()) {
return;
}

var item = conversations[child.message.uid];
var item = conversations[((Camel.MessageInfo?) child.get_item ()).uid];
if (item == null) {
add_conversation_item (folder_info_flags[service_uid], child, threads[service_uid], service_uid);
} else {
if (item.is_older_than (child)) {
conversations.unset (child.message.uid);
conversations.unset (((Camel.MessageInfo?) child.get_item ()).uid);
list_store.remove (item);
removed++;
add_conversation_item (folder_info_flags[service_uid], child, threads[service_uid], service_uid);
};
}

child = child.next;
child = child.get_next ();
}

list_store.items_changed (0, removed, list_store.get_n_items ());
}
}
}

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

var has_current_search_query = search_entry.text.strip () != "";
if (!has_current_search_query && !hide_read_switch.active && !hide_unstarred_switch.active) {
return folders[service_uid].get_uids ();
return folders[service_uid].dup_uids ();
}

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

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

return folders[service_uid].get_uids ();
return folders[service_uid].dup_uids ();
}
}
}

private void add_conversation_item (Camel.FolderInfoFlags folder_info_flags, Camel.FolderThreadNode child, Camel.FolderThread thread, string service_uid) {
var item = new ConversationItemModel (folder_info_flags, child, thread, service_uid);
conversations[child.message.uid] = item;
conversations[((Camel.MessageInfo?) child.get_item ()).uid] = item;
list_store.add (item);
}

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

public void mark_star_selected_messages () {
var selected_rows = list_box.get_selected_rows ();
foreach (var row in selected_rows) {
(((ConversationItemModel)row).node).message.set_flags (Camel.MessageFlags.FLAGGED, ~0);
((Camel.MessageInfo?) (((ConversationItemModel)row).node).get_item ()).set_flags (Camel.MessageFlags.FLAGGED, ~0);
}
}

public void mark_unread_selected_messages () {
var selected_rows = list_box.get_selected_rows ();
foreach (var row in selected_rows) {
(((ConversationItemModel)row).node).message.set_flags (Camel.MessageFlags.SEEN, 0);
((Camel.MessageInfo?) (((ConversationItemModel)row).node).get_item ()).set_flags (Camel.MessageFlags.SEEN, 0);
}
}

public void mark_unstar_selected_messages () {
var selected_rows = list_box.get_selected_rows ();
foreach (var row in selected_rows) {
(((ConversationItemModel)row).node).message.set_flags (Camel.MessageFlags.FLAGGED, 0);
((Camel.MessageInfo?) (((ConversationItemModel)row).node).get_item ()).set_flags (Camel.MessageFlags.FLAGGED, 0);
}
}

Expand Down
22 changes: 11 additions & 11 deletions src/MessageList/MessageList.vala
Original file line number Diff line number Diff line change
Expand Up @@ -179,14 +179,14 @@ public class Mail.MessageList : Gtk.Box {
*/
can_move_thread (true);

var store = node.message.summary.folder.parent_store;
var store = ((Camel.MessageInfo?) node.get_item ()).summary.folder.parent_store;
folder_popover.set_store (store);

var item = new MessageListItem (node.message);
var item = new MessageListItem ((Camel.MessageInfo?) node.get_item ());
list_box.add (item);
messages.set (node.message.uid, item);
if (node.child != null) {
go_down ((Camel.FolderThreadNode?) node.child);
messages.set (((Camel.MessageInfo?) node.get_item ()).uid, item);
if (node.get_child () != null) {
go_down ((Camel.FolderThreadNode?) node.get_child ());
}

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

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

private void go_down (Camel.FolderThreadNode node) {
unowned Camel.FolderThreadNode? current_node = node;
while (current_node != null) {
var item = new MessageListItem (current_node.message);
var item = new MessageListItem ((Camel.MessageInfo?) current_node.get_item ());
list_box.add (item);
messages.set (current_node.message.uid, item);
if (current_node.next != null) {
go_down ((Camel.FolderThreadNode?) current_node.next);
messages.set (((Camel.MessageInfo?) current_node.get_item ()).uid, item);
if (current_node.get_next () != null) {
go_down ((Camel.FolderThreadNode?) current_node.get_next ());
}

current_node = (Camel.FolderThreadNode?) current_node.child;
current_node = (Camel.FolderThreadNode?) current_node.get_child ();
}
}

Expand Down
Loading
Loading