I#2062 - Limit number of previewed messages on mbox file import

Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/2062
This commit is contained in:
Milan Crha 2022-10-06 17:29:18 +02:00
parent 256b42b5cf
commit b64618d2d2

View File

@ -424,7 +424,8 @@ mbox_get_preview (EImport *ei,
GtkListStore *store = NULL; GtkListStore *store = NULL;
GtkTreeIter iter; GtkTreeIter iter;
GtkWidget *preview_widget = NULL; GtkWidget *preview_widget = NULL;
gboolean any_read = FALSE; gint n_read = 0;
gboolean shortened_list = FALSE;
if (!create_preview_func || !fill_preview_func) if (!create_preview_func || !fill_preview_func)
return NULL; return NULL;
@ -453,7 +454,13 @@ mbox_get_preview (EImport *ei,
while (camel_mime_parser_step (mp, NULL, NULL) == CAMEL_MIME_PARSER_STATE_FROM) { while (camel_mime_parser_step (mp, NULL, NULL) == CAMEL_MIME_PARSER_STATE_FROM) {
CamelMimeMessage *msg; CamelMimeMessage *msg;
any_read = TRUE; n_read++;
/* Read only first few messages, not the whole mbox */
if (n_read > 10) {
shortened_list = TRUE;
break;
}
msg = camel_mime_message_new (); msg = camel_mime_message_new ();
if (!camel_mime_part_construct_from_parser_sync ( if (!camel_mime_part_construct_from_parser_sync (
@ -469,7 +476,7 @@ mbox_get_preview (EImport *ei,
camel_mime_parser_step (mp, NULL, NULL); camel_mime_parser_step (mp, NULL, NULL);
} }
if (!any_read) { if (!n_read) {
CamelStream *stream; CamelStream *stream;
stream = camel_stream_fs_new_with_name (filename, O_RDONLY, 0, NULL); stream = camel_stream_fs_new_with_name (filename, O_RDONLY, 0, NULL);
@ -515,9 +522,20 @@ mbox_get_preview (EImport *ei,
tree_view, -1, C_("mboxImp", "From"), tree_view, -1, C_("mboxImp", "From"),
gtk_cell_renderer_text_new (), "text", 1, NULL); gtk_cell_renderer_text_new (), "text", 1, NULL);
if (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) > 1) if (gtk_tree_model_iter_n_children (GTK_TREE_MODEL (store), NULL) > 1) {
e_web_view_preview_show_tree_view ( e_web_view_preview_show_tree_view (E_WEB_VIEW_PREVIEW (preview));
E_WEB_VIEW_PREVIEW (preview));
if (shortened_list) {
GtkTreeIter iter;
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
0, "",
1, "",
2, NULL,
-1);
}
}
create_preview_func (G_OBJECT (preview), &preview_widget); create_preview_func (G_OBJECT (preview), &preview_widget);
if (!preview_widget) { if (!preview_widget) {