return (gint_a - gint_b);
}
+gint folder_item_open(FolderItem *item)
+{
+ if(((item->folder->type == F_IMAP) && !item->no_select) || (item->folder->type == F_NEWS)) {
+ folder_item_scan(item);
+ }
+
+ /* Processing */
+ if(item->prefs->processing != NULL) {
+ gchar *buf;
+
+ buf = g_strdup_printf(_("Processing (%s)...\n"), item->path);
+ debug_print("%s\n", buf);
+ g_free(buf);
+
+ folder_item_apply_processing(item);
+
+ debug_print("done.\n");
+ }
+
+ return 0;
+}
+
+void folder_item_close(FolderItem *item)
+{
+ GSList *mlist, *cur;
+
+ g_return_if_fail(item != NULL);
+
+ mlist = folder_item_get_msg_list(item);
+
+ for (cur = mlist ; cur != NULL ; cur = cur->next) {
+ MsgInfo * msginfo;
+
+ msginfo = (MsgInfo *) cur->data;
+ if (MSG_IS_NEW(msginfo->flags))
+ procmsg_msginfo_unset_flags(msginfo, MSG_NEW, 0);
+ procmsg_msginfo_free(msginfo);
+ }
+
+ folder_update_item(item, FALSE);
+
+ g_slist_free(mlist);
+}
+
gint folder_item_scan(FolderItem *item)
{
Folder *folder;
gchar *folder_get_path (Folder *folder);
gchar *folder_item_get_path (FolderItem *item);
+gint folder_item_open (FolderItem *item);
+void folder_item_close (FolderItem *item);
gint folder_item_scan (FolderItem *item);
void folder_item_scan_foreach (GHashTable *table);
MsgInfo *folder_item_fetch_msginfo (FolderItem *item,
static gboolean can_select = TRUE; /* exclusive lock */
gboolean opened;
FolderItem *item;
+ gchar *buf;
folderview->selected = row;
/* will be null if we just moved the previously opened folder */
folder_item_write_cache(olditem);
summary_save_prefs_to_folderitem(folderview->summaryview, olditem);
+ folder_item_close(olditem);
}
}
gdk_pointer_ungrab(GDK_CURRENT_TIME);
}
- if(((item->folder->type == F_IMAP) && !item->no_select) || (item->folder->type == F_NEWS)) {
- folder_item_scan(item);
- }
+ /* Open Folder */
+ buf = g_strdup_printf(_("Opening Folder %s..."), item->path);
+ debug_print("%s\n", buf);
+ STATUSBAR_PUSH(folderview->mainwin, buf);
+ g_free(buf);
- /* Processing */
- if(item->prefs->processing != NULL) {
- gchar *buf;
-
- buf = g_strdup_printf(_("Processing (%s)..."), item->path);
- debug_print("%s\n", buf);
- STATUSBAR_PUSH(folderview->mainwin, buf);
- g_free(buf);
+ main_window_cursor_wait(folderview->mainwin);
- main_window_cursor_wait(folderview->mainwin);
-
- folder_item_apply_processing(item);
-
- debug_print("done.\n");
+ if (folder_item_open(item) != 0) {
STATUSBAR_POP(folderview->mainwin);
main_window_cursor_normal(folderview->mainwin);
- }
-
+
+ alertpanel_error(_("Folder cound not be opened."));
+
+ return;
+ }
+
/* Show messages */
summary_set_prefs_from_folderitem(folderview->summaryview, item);
opened = summary_show(folderview->summaryview, item);
gtk_ctree_node_moveto(ctree, row, -1, 0.5, 0);
}
+ STATUSBAR_POP(folderview->mainwin);
+ main_window_cursor_normal(folderview->mainwin);
+
folderview->open_folder = FALSE;
can_select = TRUE;
}