static void update_tree_cb(GtkAction *action, gpointer data) { FolderView *folderview = (FolderView *)data; FolderItem *item; const gchar *a_name = gtk_action_get_name(action); item = folderview_get_selected_item(folderview); g_return_if_fail(item != NULL); summary_show(folderview->summaryview, NULL); g_return_if_fail(item->folder != NULL); DO_ACTION("FolderViewPopup/CheckNewMessages", folderview_check_new(item->folder)); DO_ACTION("FolderViewPopup/CheckNewFolders", folderview_rescan_tree(item->folder, FALSE)); DO_ACTION("FolderViewPopup/RebuildTree", folderview_rescan_tree(item->folder, TRUE)); }
/** * inc_finished: * @mainwin: Main window. * @new_messages: TRUE if some messages have been received. * * Update the folder view and the summary view after receiving * messages. If @new_messages is FALSE, this function avoids unneeded * updating. **/ static void inc_finished(MainWindow *mainwin, gboolean new_messages, gboolean autocheck) { if (prefs_common.scan_all_after_inc) folderview_check_new(NULL); if (!autocheck && new_messages && prefs_common.open_inbox_on_inc) { FolderItem *item = NULL; if (cur_account && cur_account->inbox) item = folder_find_item_from_identifier(cur_account->inbox); if (item == NULL && cur_account && cur_account->folder) item = cur_account->folder->inbox; if (item == NULL) item = folder_get_default_inbox(); folderview_unselect(mainwin->folderview); folderview_select(mainwin->folderview, item); } }
static gint inc_account_mail_real(MainWindow *mainwin, PrefsAccount *account) { IncProgressDialog *inc_dialog; IncSession *session; switch (account->protocol) { case A_IMAP4: case A_NNTP: /* Melvin: bug [14] * FIXME: it should return foldeview_check_new() value. * TODO: do it when bug [19] is fixed (IMAP folder sets * an incorrect new message count) */ folderview_check_new(FOLDER(account->folder)); return 0; case A_POP3: case A_APOP: session = inc_session_new(account); if (!session) return 0; inc_dialog = inc_progress_dialog_create(FALSE); inc_dialog->queue_list = g_list_append(inc_dialog->queue_list, session); inc_dialog->mainwin = mainwin; inc_progress_dialog_set_list(inc_dialog); if (mainwin) { toolbar_main_set_sensitive(mainwin); main_window_set_menu_sensitive(mainwin); } return inc_start(inc_dialog); case A_LOCAL: return inc_spool_account(account); default: break; } return 0; }
void inc_all_account_mail(MainWindow *mainwin, gboolean autocheck, gboolean notify) { GList *list, *queue_list = NULL; IncProgressDialog *inc_dialog; gint new_msgs = 0; gint account_new_msgs = 0; if (prefs_common.work_offline && !inc_offline_should_override( (autocheck == FALSE), _("Claws Mail needs network access in order " "to get mails."))) return; if (inc_lock_count) return; inc_autocheck_timer_remove(); main_window_lock(mainwin); list = account_get_list(); if (!list) { inc_update_stats(new_msgs); inc_finished(mainwin, new_msgs > 0, autocheck); main_window_unlock(mainwin); inc_notify_cmd(new_msgs, notify); inc_autocheck_timer_set(); return; } if (prefs_common.use_extinc && prefs_common.extinc_cmd) { /* external incorporating program */ if (execute_command_line(prefs_common.extinc_cmd, FALSE) < 0) { log_error(LOG_PROTOCOL, _("%s failed\n"), prefs_common.extinc_cmd); main_window_unlock(mainwin); inc_autocheck_timer_set(); return; } } /* check local folders */ account_new_msgs = inc_all_spool(); if (account_new_msgs > 0) new_msgs += account_new_msgs; /* check IMAP4 / News folders */ for (list = account_get_list(); list != NULL; list = list->next) { PrefsAccount *account = list->data; if ((account->protocol == A_IMAP4 || account->protocol == A_NNTP) && account->recv_at_getall) { new_msgs += folderview_check_new(FOLDER(account->folder)); } } /* check POP3 accounts */ for (list = account_get_list(); list != NULL; list = list->next) { IncSession *session; PrefsAccount *account = list->data; if (account->recv_at_getall) { session = inc_session_new(account); if (session) queue_list = g_list_append(queue_list, session); } } if (queue_list) { inc_dialog = inc_progress_dialog_create(autocheck); inc_dialog->queue_list = queue_list; inc_dialog->mainwin = mainwin; inc_progress_dialog_set_list(inc_dialog); toolbar_main_set_sensitive(mainwin); main_window_set_menu_sensitive(mainwin); new_msgs += inc_start(inc_dialog); } inc_update_stats(new_msgs); inc_finished(mainwin, new_msgs > 0, autocheck); main_window_unlock(mainwin); inc_notify_cmd(new_msgs, notify); inc_autocheck_timer_set(); }