folderview_update_node(folderview, node);
}
-#if !CLAWS
+#if !CLAWS /* keep it here for syncs */
void folderview_update_item(FolderItem *item, gboolean update_summary)
{
GList *list;
return FALSE;
}
-typedef struct FolderItemUpdateParams {
- FolderView *folderview;
- FolderItemUpdateData data;
-} FolderItemUpdateParams;
-
static void folderview_update_item_foreach_func(gpointer key, gpointer val,
gpointer data)
{
- FolderItemUpdateParams *fum = (FolderItemUpdateParams *)data;
- fum->data.item = (FolderItem *)key;
- folderview_update_item_claws(&fum->data, fum->folderview);
+ /* CLAWS: share this joy with other hook functions ... */
+ folder_item_update((FolderItem *)key,
+ (FolderItemUpdateFlags)GPOINTER_TO_INT(data));
}
void folderview_update_item_foreach(GHashTable *table, gboolean update_summary)
{
GList *list;
-
- for (list = folderview_list; list != NULL; list = list->next) {
- FolderItemUpdateParams data;
-
- data.folderview = (FolderView *)list->data;
- /* FIXME: update_summary means update everything here? */
- data.data.item = NULL;
- data.data.update_flags = (update_summary
- ? F_ITEM_UPDATE_CONTENT | F_ITEM_UPDATE_MSGCNT
- : 0);
- g_hash_table_foreach(table, folderview_update_item_foreach_func, &data);
- }
+ FolderItemUpdateFlags flags;
+
+ flags = update_summary ? F_ITEM_UPDATE_CONTENT | F_ITEM_UPDATE_MSGCNT
+ : 0;
+ for (list = folderview_list; list != NULL; list = list->next)
+ g_hash_table_foreach(table, folderview_update_item_foreach_func,
+ GINT_TO_POINTER(flags));
}
static gboolean folderview_gnode_func(GtkCTree *ctree, guint depth,
}
Xstrdup_a(old_path, item->path, {g_free(new_folder); return;});
- old_id = folder_item_get_identifier(item);
if (item->folder->klass->rename_folder(item->folder, item, new_folder) < 0) {
- g_free(old_id);
+ alertpanel_error(_("The folder could not be renamed.\n"
+ "The new folder name is not allowed."));
return;
}
+ old_id = folder_item_get_identifier(item);
/* if (FOLDER_TYPE(item->folder) == F_MH)
prefs_filtering_rename_path(old_path, item->path); */
new_id = folder_item_get_identifier(item);
}
gtk_clist_thaw(GTK_CLIST(ctree));
-
+
+ folder_item_prefs_save_config(item);
folder_write_list();
}
}
account = item->folder->account;
+ folderview_unselect(folderview);
+ summary_clear_all(folderview->summaryview);
folder_destroy(item->folder);
account_destroy(account);
- gtk_ctree_remove_node(ctree, folderview->selected);
account_set_menu();
main_window_reflect_prefs_all();
folder_write_list();
GtkWidget *widget)
{
GtkCTree *ctree = GTK_CTREE(folderview->ctree);
+ gchar *text[N_FOLDER_COLS] = {NULL, "0", "0", "0"};
GtkCTreeNode *servernode, *node;
Folder *folder;
FolderItem *item;
if (folder_find_child_item_by_name(rootitem, name) != NULL)
continue;
+ text[COL_FOLDER] = name;
+ node = gtk_ctree_insert_node(ctree, servernode, NULL, text,
+ FOLDER_SPACING,
+ folderxpm, folderxpmmask,
+ folderopenxpm, folderopenxpmmask,
+ FALSE, FALSE);
+ gtk_ctree_expand(ctree, servernode);
+
newitem = folder_item_new(folder, name, name);
folder_item_append(rootitem, newitem);
- folderview_append_item(newitem);
+ gtk_ctree_node_set_row_data(ctree, node, newitem);
}
+ folderview_sort_folders(folderview, servernode, folder);
gtk_clist_thaw(GTK_CLIST(ctree));
slist_free_strings(new_subscr);
FolderItem *item;
gchar *name;
gchar *message;
+ gchar *old_id;
AlertValue avalue;
if (!folderview->selected) return;
g_return_if_fail(FOLDER_TYPE(item->folder) == F_NEWS);
g_return_if_fail(item->folder->account != NULL);
+ old_id = folder_item_get_identifier(item);
+
name = trim_string(item->path, 32);
message = g_strdup_printf(_("Really delete newsgroup `%s'?"), name);
avalue = alertpanel(_("Delete newsgroup"), message,
folder_item_remove(item);
folder_write_list();
- prefs_filtering_delete_path(name);
+ prefs_filtering_delete_path(old_id);
+ g_free(old_id);
}
static void folderview_rm_news_server_cb(FolderView *folderview, guint action,
}
account = item->folder->account;
- folder_destroy(item->folder);
+ folderview_unselect(folderview);
+ summary_clear_all(folderview->summaryview);
+ folder_destroy(item->folder);
account_destroy(account);
- gtk_ctree_remove_node(ctree, folderview->selected);
account_set_menu();
main_window_reflect_prefs_all();
folder_write_list();
case GDK_ACTION_MOVE:
case GDK_ACTION_DEFAULT:
default:
- if (FOLDER_TYPE(src_item->folder) != FOLDER_TYPE(item->folder) ||
- (FOLDER_TYPE(item->folder) == F_IMAP &&
- src_item->folder != item->folder))
+ if (FOLDER_TYPE(src_item->folder) == F_NEWS)
summary_copy_selected_to(folderview->summaryview, item);
else
summary_move_selected_to(folderview->summaryview, item);