+void imap_cancel_all(void)
+{
+ GList *folderlist;
+ GList *cur;
+
+ folderlist = folder_get_list();
+ for (cur = folderlist; cur != NULL; cur = g_list_next(cur)) {
+ Folder *folder = (Folder *) cur->data;
+
+ if (folder->klass == &imap_class) {
+ if (imap_is_busy(folder)) {
+ IMAPSession *imap_session;
+ RemoteFolder *rfolder;
+
+ fprintf(stderr, "cancelled\n");
+ imap_threaded_cancel(folder);
+ rfolder = (RemoteFolder *) folder;
+ imap_session = (IMAPSession *) rfolder->session;
+ imap_session->cancelled = 1;
+ }
+ }
+ }
+}
+
+gboolean imap_cancel_all_enabled(void)
+{
+ GList *folderlist;
+ GList *cur;
+
+ folderlist = folder_get_list();
+ for (cur = folderlist; cur != NULL; cur = g_list_next(cur)) {
+ Folder *folder = (Folder *) cur->data;
+
+ if (folder->klass == &imap_class) {
+ if (imap_is_busy(folder)) {
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+}
+
+gboolean imap_is_busy(Folder *folder)
+{
+ IMAPSession *imap_session;
+ RemoteFolder *rfolder;
+
+ rfolder = (RemoteFolder *) folder;
+ imap_session = (IMAPSession *) rfolder->session;
+ if (imap_session == NULL)
+ return FALSE;
+
+ return imap_session->busy;
+}
+